我正在尝试使用 FileZilla 浏览旧的普通 FTP 服务器,并收到以下错误
服务器发送了带有不可路由地址的被动回复。请改用服务器地址。
浏览几乎是不可能的。
这个消息是什么意思以及如何知道“不可路由的地址”?
答案1
要建立文件传输或目录列表的数据连接,FTP 客户端(在被动 FTP 模式下)会PASV
向服务器发送命令。服务器会以其 IP 地址和端口号进行响应。客户端应连接到该 IP/端口以启动传输。
不过,FTP 服务器位于 NAT 后面的情况很常见。它只知道其 NAT 网络中的本地地址。当它向 NAT 之外的客户端报告此类 IP 地址时,该 IP 地址显然没有多大用处。这显然是 FTP 服务器配置错误。FTP 服务器必须报告其外部 IP 地址,该地址可在 NAT 网络之外使用。
不幸的是,这是一个常见问题,许多 FTP 客户端都会尝试检测此问题(通过检查报告的 IP 地址是否在为私有网络内的本地通信保留的地址范围)。FileZilla 也会这样做并报告上述消息。您应该在 FileZilla 日志中看到有问题的地址:
2017-04-05 08:02:00 12064 3 命令:PASV
2017-04-05 08:02:00 12064 3 响应:227 进入被动模式 (10,0,0,1,213,36)。
遇到这种情况时,FileZilla 会尝试连接到 FTP 服务器的主地址,因为这通常是正确的地址。因此在大多数情况下,您根本不会注意到这个问题。
尽管你提到“浏览几乎不可能”,看起来它没有帮助。如果是这种情况,最常见的问题是您和服务器之间的某个防火墙(或 NAT)阻止了对数据端口的连接尝试(如对命令的响应中所报告的PASV
)。
请参阅我的文章FTP 被动模式的网络配置了解详情。
答案2
以下是对我有用的方法:在我的 FTP 服务器(Filezilla)中,我更改了以下“被动模式设置”检查使用自定义端口范围:5000-6000 选择使用以下 IP:<输入我的外部 IP/自定义域名,即通过 DynDNS 更新的 IP>
在我的路由器上,将端口 20-21 和 5000-6000 转发到我的内部 IP 地址。
答案3
如果你使用
vsftpd
,请设置pasv_min_port=21000 pasv_max_port=21999
在
vsftpd.conf
文件中。在您的 VPS/云提供商的网络控制台面板中打开该端口范围。