下面我将以清晰的步骤和必要的解释来指导您完成整个过程。
1、确保服务器有公网IP地址:这是从外网找到您服务器的“门牌号”。
2、配置FTP服务器软件:正确设置FTP服务,特别是处理“主动模式”和“被动模式”的连接问题。
3、配置网络设备(路由器/防火墙):将外网的访问请求“转发”到内网的服务器上。
1、获取服务器的本地IP地址:
* 在服务器上打开命令提示符(CMD)或终端。
* 输入ipconfig
(Windows) 或ifconfig
(Linux),查看并记录其IPv4地址,例如192.168.1.100
。
2、确认您是否有公网IP地址:
* 最简单的方法是访问 [ip.cn](https://ip.cn/) 或 [whatismyip.com](https://whatismyip.com/)。
* 将这个IP地址与您路由器的WAN口IP地址(可以在路由器管理界面看到)对比,如果一致,说明您有公网IP。
重要如果您处于公司或大型网络,可能没有独立的公网IP,需要联系网络管理员。
这里以常见的FileZilla Server 为例,其他FTP服务器软件(如 vsftpd for Linux)原理类似。
1、安装并启动FileZilla Server。
2、设置被动模式端口范围:这是最关键的一步!
* 进入Edit
->Settings
。
* 找到Passive mode settings
。
勾选 “Use custom port range”。
* 指定一个端口范围,例如60000-61000
,这个范围将用于FTP的数据连接。
* 在“Use the following IP” 中,填写您的公网IP地址,这告诉客户端在被动模式下应该连接到哪个地址。
3、创建FTP用户:
* 在FileZilla Server界面中,进入Edit
->Users
。
* 添加用户,设置密码,并指定其可访问的根目录(共享文件夹)。
这是将外网请求引导至您内网服务器的步骤,您需要登录到您的路由器管理界面(通常是192.168.1.1
或192.168.0.1
)。
1、 找到“端口转发” 或“虚拟服务器” 功能(不同品牌路由器叫法不同)。
2、 创建三条转发规则:
服务名称(自定义) | 外部端口 | 内部IP地址 | 内部端口 | 协议 |
FTP-Control | 21 | 192.168.1.100 | 21 | TCP |
FTP-Data-Range | 60000 | 192.168.1.100 | 61000 | TCP |
(可选)FTP-Passive | 任意端口 | 192.168.1.100 | 您设置的被动端口范围 | TCP |
解释:
规则1转发FTP的命令连接(控制通道)。
规则2 & 3转发FTP的数据连接,您需要将您在FileZilla中设置的整个被动端口范围(如60000-61000)都转发到服务器,有些路由器支持直接输入端口范围60000-61000
,如果不支持,您可能需要创建多条规则或使用DMZ(不推荐,不安全)。
您可以从一个外部网络(使用手机的4G/5G网络作为热点)进行测试。
1、 使用FTP客户端软件(如FileZilla Client, WinSCP)。
2、 在主机地址栏输入您的公网IP地址。
3、 输入您在第二步中创建的用户名和密码。
4、 端口保持默认的21
。
5、 尝试连接。
1、防火墙设置:
* 确保服务器本地的防火墙(Windows防火墙或iptables)放行了FTP相关的端口(21和您设置的被动端口范围60000-61000)。
2、主动模式 vs. 被动模式:
主动模式服务器主动连接到客户端,当客户端位于防火墙或NAT后时,此模式通常会失败。
被动模式客户端连接到服务器,这是在NAT环境下(绝大多数家庭和公司网络)推荐且必须正确配置的模式,我们上面的配置核心就是针对被动模式。
3、动态公网IP问题:
* 家庭宽带的公网IP可能会变化,解决方案是使用DDNS(动态域名解析) 服务,您可以在路由器或服务器上配置DDNS,获得一个固定的域名(如myftp.ddns.net
),这样即使IP变了,也可以通过域名访问。
4、安全性警告:
标准FTP(端口21)是不安全的,因为它以明文传输用户名、密码和数据。
强烈建议
使用SFTP如果您的服务器支持SSH,请优先使用SFTP(SSH File Transfer Protocol),它通过SSH加密所有流量,更安全且通常更容易配置(只需要转发SSH端口22)。
使用FTPS基于SSL/TLS加密的FTP。
* 如果必须使用FTP,请使用复杂的密码,并考虑通过VPN来访问FTP服务器。
如果您的服务器是Linux,或者Windows服务器安装了OpenSSH服务,强烈建议直接使用SFTP。
配置简单无需设置复杂的主动/被动模式。
端口转发简单只需要在路由器上转发一个端口:22 (SSH端口)。
安全性高所有通信都被加密。
连接方式:使用任何支持SFTP的客户端(FileZilla Client, WinSCP等),协议选择SFTP,主机填您的公网IP或DDNS域名,端口为22,使用SSH用户名和密码(或密钥)登录。
将FTP服务器连接到外网的流程可以概括为:
1、准备:确认服务器内网IP和您的公网IP。
2、配置FTP服务:重点是设置被动模式端口范围和外部IP。
3、配置网络:在路由器上转发FTP控制端口(21)和数据端口范围。
4、测试:从外网使用客户端进行连接。
但请始终将安全放在首位,如果可能,请优先选择SFTP 而不是传统的FTP。
文章摘自:https://idc.huochengrm.cn/fwq/17188.html
评论