无法连接到 Vsftpd 服务器-使用不可路由的地址进行被动回复

无法连接到 Vsftpd 服务器-使用不可路由的地址进行被动回复

我在 ubuntu 服务器上安装了 Vsftpd 服务器,监听端口 21。我在路由器中转发了一个端口,将外部端口 8500 转发到 vsftpd 服务器正在监听的内部端口 21。但是,当我尝试使用 ftp 客户端进行连接时,我在 filezilla 中看到以下消息:

“服务器发送了带有不可路由地址的被动回复。改用服务器地址”

我读到过,这与路由器后面有关。但我从未遇到过其他路由器的问题。为什么我使用一个路由器时可以从外部访问 ftp,而使用另一个路由器时却不能?

答案1

FTP 协议很特殊,因为它使用两个同时连接,而其他协议(如 SSH、HTTP 或 SMTP)则只使用一个连接。

因此,对于 FTP 协议,路由器上的 NAT 代码需要对第二个连接进行一些特殊处理 - 它不能像其他通用协议一样进行处理。大多数路由器都具有此功能(您在它们上使用 FTP 不会遇到问题),但有些路由器没有(在这种情况下您会遇到问题)。

VSFtpd 配置文件中有一个选项pasv_address,您可以使用它来告诉 VSFtpd 在第二个连接上显示特定的 IP 地址,因此使用它您可以解决这个路由器错误。

相关内容