FileZilla - 服务器发回了不可路由的地址,使用服务器地址代替

1. 解决方案:
更改FileZilla设置,【编辑】->【设置】->【连接】->【FTP】->【被动模式】,将“使用服务器的外部IP地址来代替”改为“退回到主动模式”即可。

 

2. 原因分析:
+ 首先,FTP的连接方式:主动模式和被动模式。主动模式是客户端Client主动通知服务器数据通信端口N + 1(N为命令通信端口),服务端Server通过此端口N + 1向客户端Client发送数据连接和数据,然而对于内网中的客户端Client,其内网端口通过NAT或防火墙后会被映射为其他值,从而服务器无法访问此值,造成失败;被动模式是客户端Client向服务端Server发送PASV命令通知服务端Server,服务端Server会向客户端Client发送数据通信端口P,客户端Client通过此端口P向服务端Server发送数据连接和数据,因此,可以看出被动模式是针对主动模式的缺陷设计的,但是当我们将FTP服务端架设在一台网关服务器的内网节点中时,此时NAT或防火墙在服务端,被动模式因此不适用,相反主动模式适用于客户端Client连接FTP服务端,因为被动模式要求服务端Server将其数据通信端口P发送给客户端Client,然而此端口会被NAT或防火墙屏蔽导致客户端无法连接,因此FileZilla在配置被动模式时“一些配置错误的远程服务器放在了路由器后面,可能会返回它们的本地地址”说的就是这种情形,因此其给出两个选项:“使用服务器的外部IP地址来代替”和“退回到主动模式”,自然我们要选择后者。
+ 但是,Server-U架设的FTP服务器,其文档中:【服务器】->【服务器限制和设置】->【服务器设置】->【网络设置】描述:通过 UPnP 自动配置防火墙启用时,Serv-U 在启用 UPnP 的网络设备(通常为路由器)中自动配置必要的端口转发,从而可以从网络外部访问该文件服务器。这对于启用 PASV 模式的 FTP 数据传输特别有用。应该可以使用前面的“使用服务器的外部IP地址来代替”选项,通过勾选【通过 UPnP 自动配置防火墙】并设置其下面【PASV端口范围】,将其被动模式的端口范围设置成1个值,如:9835 - 9835,然后在通过设置内网网关的端口映射将外网端口9835映射到内网FTP服务器主机的9835端口,这样的话,FTP服务器在内网中通过被动模式告知客户端其端口号时,映射到外网后,仍然是9835,因此,客户端可以实现以被动模式连接一台隐藏在内网中的FTP服务器,且完全可以脱离FTP客户端,直接使用IE等浏览器进行ftp://IP:Port/的FTP访问,此方案看似生硬,其实比较巧妙。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值