Linux FTP命令行被动模式连接PureFtpd超时

问题

最近在服务器安装了pureftpd提供给公司同事上传文件用。在交付前使用FileZilla测试没有问题,但是同事反映在Linux下ftp不能使用。
自己在Linux下测试了一下,一直卡在Entering Passive Mode,最后超时。
FTP

原因

而在windows下使用FileZilla测试并没有问题。仔细看了下FileZilla的日志,发现有一行
FTP
想到pureftpd用的是云主机,而云主机的网卡只绑定有内网IP,外网IP应该是绑定在路由了。猜测ftp客户端使用被动模式连接pureftpd的时候,pureftpd返回了一个内网IP。
通过wireshark抓包发现:
FTP
可以知道服务器的确返回了一个内网地址。

方法

那能不能强制pureftpd返回外网IP呢。通过查看pureftpd文档,发现在pureftpd.conf加入:

ForcePassiveIP 1.1.1.1

1.1.1.1为pureftpd外网ip。重启之后问题解决。