我在 Raspberry Pi 上有一个 FTPS 服务器(使用 VSFTPD)。自从我切换到 Virgin Media 3.0 集线器后,我就无法成功连接到 FTPS 服务器。经过大量搜索,我发现这一页在 Filezilla wiki 上,我确定这就是问题所在。现在我需要弄清楚需要更改哪些设置才能使路由器与我的服务器很好地配合使用。有没有人使用相同的路由器有什么建议?此外,如果我需要提供更多信息,请告诉我。
为了完整起见,这是我尝试通过 ftptest.net 连接到我的服务器时得到的结果:
Status: Resolving address of my.server.com
Status: Connecting to xx.xx.xx.xx
Warning: The entered address does not resolve to an IPv6 address.
Status: Connected, waiting for welcome message...
Reply: 220 [Welcome message]
Command: CLNT https://ftptest.net on behalf of xx.xx.xx.xx
Reply: 530 Please login with USER and PASS.
Command: AUTH TLS
Reply: 234 Proceed with negotiation.
Status: Performing TLS handshake...
Status: TLS handshake successful, verifying certificate...
Status: Received 1 certificates from server.
Status: cert[0]: subject='CN=my.server.com' issuer='CN=my.server.com'
Command: USER incoming
Reply: 331 Please specify the password.
Command: PASS ***************************************
Reply: 230 Login successful.
Command: SYST
Reply: 215 UNIX Type: L8
Command: FEAT
Reply: 211-Features:
Reply: AUTH TLS
Reply: EPRT
Reply: EPSV
Reply: MDTM
Reply: PASV
Reply: PBSZ
Reply: PROT
Reply: REST STREAM
Reply: SIZE
Reply: TVFS
Reply: 211 End
Warning: The server does not indicate MLSD support. MLSD uses a well-specified listing format. Without MLSD, directory listings have to be obtained using LIST which uses an unspecified output format.
Command: PBSZ 0
Reply: 200 PBSZ set to 0.
Command: PROT P
Reply: 200 PROT now Private.
Command: PWD
Reply: 257 "/" is the current directory
Status: Current path is /
Command: TYPE I
Reply: 200 Switching to Binary mode.
Command: PASV
Reply: 227 Entering Passive Mode (xx,xx,xx,xx,39,110).
Error: Server returned unroutable private IP address in PASV reply
编辑:我尝试将pasv_address
、pasv_min_port
和pasv_max_port
字段添加到我的 VSFTPD 配置中,这是我从 ftptest.net 获得的结果的最后两行:(所有其他行都相同)
Reply: 227 Entering Passive Mode (0,0,0,0,39,112).
Error: Server returned broadcast address in PASV reply
答案1
我认为你实际上遇到了完全相反的问题。
通常 FTP 只适用于因为路由器会篡改 PASV 响应等内容,用自己的公共 IP 地址替换服务器的私有地址,或者为即将建立的数据连接添加临时端口转发规则。
当您使用 FTPS 且控制通道已加密时,路由器的 FTP 助手不能不再查看或更改响应,这意味着您的客户端可以准确看到服务器发送的内容 - 即使它是错误的。而且由于路由器不再知道何时打开数据连接,因此它将无法更新其防火墙规则以允许这样做。
通常,FTP 守护程序具有配置设置来更改 PASV 响应中通告的地址,以及将 PASV 监听端口限制在可以手动转发到服务器的小范围内的方法。
对于 VSFTPD,您需要设置pasv_address=
为路由器的公共 IP 地址,然后使用 定义端口范围pasv_min/max_port=
。需要配置路由器以将该范围内的所有 TCP 端口转发到 FTPS 服务器。
答案2
我用的是关联@kicken 在他们的评论中提到了这一点,并解决了问题。我认为该答案和@user1686 的答案都有助于解决问题。