我在其中一个LAN连接到我的路由器的Windows上运行FILE-Zilla ftp服务器 . 我试图通过在路由器中添加端口转发规则 (NAT) ,使用路由器WAN IP (WAN-to-LAN) 从路由器外部的网络访问FTP服务器 . 根据以下配置,我在这里有2个案例 . 1st is working 和 2nd is not (处于被动模式) .
注意:我已在运行ftp服务器的Windows 7防火墙中添加了自定义入站规则 .
Configuration #1
Filezilla FTP server port: 21
Passive port range: 50000-51000
NAT - external port: 21
NAT - internal port: 21
Windows firewall inboud rule port allow port: 21, 50000-51000
Client connecting to: <Wan IP>:21
This is working if client is trying to connect using Active/Passive mode
Configuration #2
Filezilla FTP server port: 2000
Passive port range: 50000-51000
NAT - external port: 21
NAT - internal port: 2000
Windows firewall inboud rule port allow port: 2000, 50000-51000
Client connecting to: <Wan IP>:21
仅当客户端设置为活动模式时,此功能才有效 . Not working with Passive mode 客户端配置 . 客户端可以连接并且登录成功但是在服务器端以这样的错误消息结束,没有任何目录列表 .
227 Entering Passive Mode (192,168,1,2,195,85)
注意:两种情况都在LAN-LAN网络中工作 .
1 回答
我的猜测是配置#1的工作原理只是因为NAT足够聪明,可以从服务器转换
PASV
响应中的IP地址 . 但它可能仅适用于标准FTP端口 .您应该告诉FileZilla FTP服务器它的外部IP地址 . 转至编辑>设置>被动模式设置> IPv4特定>外部服务器IP地址以进行被动模式传输 .
目前,您的FTP服务器正在将其内部IP地址发送到客户端 . 而客户端显然无法连接到IP地址 .
并让NAT转发被动端口范围内的端口(50000-51000) .
虽然更改将破坏LAN-LAN连接 . 要同时允许LAN和WAN连接,请检查NAT是否可以配置为转换非标准端口的IP地址 . 虽然翻译只适用于未加密的连接 . 你不应该使用未加密的连接!
如果您的客户允许,最后一个选项是使用扩展被动模式(
EPSV
) . 在扩展被动模式下,响应中没有IP地址 . FTP客户端使用FTP服务器的主IP地址进行数据连接 .