Azure VM 上的 vsftp-filezilla 报告服务器以被动模式发送的私有 IP

Azure VM 上的 vsftp-filezilla 报告服务器以被动模式发送的私有 IP

我正在 Azure 上的 Ubuntu 16.04 机器上设置安全 FTP 服务器。它是通过 TLS 进行的 FTP,匿名访问已禁用。

尝试使用 Filezilla 的服务器工作正常 - 身份验证、传输、目录列表 - 一切...除了我收到来自 Filezilla 的以下警告:

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

当然,这是有道理的 - VM 有一个私有 IP 地址,在被动模式下,它会将该私有 IP 地址发送给客户端。解决方案 - 将以下内容添加到 vsftp.conf(这是一个示例,而不是实际配置):

pasv_enable=YES
port_enable=YES
#The VM allows connections to ports 12345 & 12346 - remember, this is an example
pasv_min_port=12345 
pasv_max_port=12346
#The VM's domain name
pasv_address=myftpservervm.cloudapp.net
#Make vsftp resolve myftpservervm.cloudapp.net and send that IP address to clients
pasv_addr_resolve=YES

然后我重新启动 vsftp,什么都没发生。我仍然得到这些:

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

我甚至尝试设置pasv_address为服务器的精确(外部)IP 地址(有和没有pasv_addr_resolve=YES),结果是一样的。

我是否遗漏了什么?

我在 Ubuntu 16.04 x64 上使用 vsftpd 3.0.3(来自 Ubuntu repo)和 Filezilla 3.24.0

编辑:

显然 vsftp 发送的 IP 地址是0.0.0.0显然,vsftp在进入被动模式时这个问题似乎相关。

答案1

我在实验室里测试,一开始遇到了和你一样的问题。我按照以下步骤检查:

1.netstat -ant我得到以下结果

tcp6       0      0 172.17.1.4:21           167.220.255.56:10979    TIME_WAIT  

根据我的经验,ftp 应该在Azure VM上监听,tcp而不是在 Azure VM 上监听tcp6

2.我尝试更改配置文件/etc/vsftpd.conf

listen=yes
listen_ipv6=no

然后我重新启动 ftp 服务并检查使用netstat -ant

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN  
  1. 使用 Filezilla 进行测试。

在此处输入图片描述

注意:您应该在 Azure NSG 上打开端口 20、21、12345-12346(入站规则)

答案2

您只需要进行一点小修改。编辑 /etc/vsftpd.conf 或任何配置文件,并进行以下更改:

pasv_address=public_ip_of_aws_instance_not_hostname_or_private_ip

保存文件,重新启动 vsftpd 服务并再次检查!

确保软管被动端口位于安全组中的 TCP 允许列表中(您可以从 AWS EC2 仪表板配置这些端口)。

相关内容