AWS EC2 被动 FTP - 服务器发送带有不可路由地址的被动回复。改用服务器地址

Cod*_*kie 3 ftp amazon-ec2 amazon-web-services pureftpd

我在 AWS ec2 实例上运行了 pureftp。我试图让它在我认为有效的被动模式下运行,但是我发现它可能无法正常工作。我在 FileZilla 中收到以下错误

Status:         Connected
Status:         Retrieving directory listing...
Status:         Server sent passive reply with unroutable address. Using server address instead.
Status:         Directory listing of "/" successful
Run Code Online (Sandbox Code Playgroud)

奇怪的是,有些人无法登录,而其他人则无法登录。

我有以下 pureftp 配置

端口范围

#Port range for passive connections replies. - for firewalling.

PassivePortRange `50000 50100`
Run Code Online (Sandbox Code Playgroud)

PASV IP

#Force an IP address in PASV/EPSV/SPSV replies. - for NAT.
#Symbolic host names are also accepted for gateways with dynamic IP
#addresses.

ForcePassiveIP            `ftp.mydomain.com` "my cname record is mapped to my ec2 public dns"
Run Code Online (Sandbox Code Playgroud)

当我在服务器上查看本地端口范围时,/proc/sys/net/ipv4/ip_local_port_range 以下是打开的。

32768   61000
Run Code Online (Sandbox Code Playgroud)

我的 ec2 安全组已打开端口 50000 - 50100

当我查看我的服务器日志时,我偶尔会看到除此之外的其他内容。

Feb  5 08:57:41 ip-172-11-42-52 dhclient[1062]: DHCPREQUEST on eth0 to 172.11.32.1 port 67 (xid=0x601547fd)
Feb  5 08:57:41 ip-172-11-42-52 dhclient[1062]: DHCPACK from 172.11.32.1 (xid=0x601547fd)
Feb  5 08:57:43 ip-172-11-42-52 dhclient[1062]: bound to 172.11.42.52 -- renewal in 1417 seconds.
Run Code Online (Sandbox Code Playgroud)

任何人都知道哪里可能出错?

lm5*_*050 5

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

这解决了我通过将以下行添加到etc/vsftpd.conf来让 FTP 在 AWS EC2 上工作的错误

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_addr_resolve=YES
pasv_address=XX.XX.XX.XX
Run Code Online (Sandbox Code Playgroud)

XX.XX.XX.XX 设置为分配为实例公共地址的弹性 IP。

1024-1048 和 20-21 范围内的端口创建为自定义 TCP 入站规则,允许来自任何地方的连接。

FTP 服务器在使用 Filezilla 客户端访问的 Ubuntu EC2 上运行 vsftpd。