场景描述:基于腾讯云CVM搭建了一台FTP服务器,终端以PASV方式去访问,在过去一年基本正常,最近发现经常访问不上;网络测试:
1、PORT模式访问,一切OK;
2、PASV模式访问,如果终端为专线,访问正常,如果为拨号或运营商无线网络,则经常出现可以连接登陆,数据连接无法建立;
3、网络连接质量、路由均OK;
4、分别在客户端和服务端抓包分析,当客户端向服务端发送PASV请求后,服务端有返回数据相关连接信息,但客户端没有收到;
原因分析:服务端防火墙可能对pasv命令发送的数据不做地址改写,客户端收到的是服务器的内网地址,导致数据连接无法建立;
网上说法:这里的问题原因简单来讲是这样:FTP客户端默认的传输模式是被动模式,因此在通信过程中会去寻找服务器端的ip地址进行连接,但是由于腾讯云的外网ip不是直接配在网卡上,因此在被动模式下客户端找不到有效的ip(因为找到的是腾讯云的内网ip,内网ip无法直接和外网通信),故无法建立连接
解决办法:
a、将客户端传输模式改为主动即可;
b、如果客户端网络环境要求被动模式,那么需要在服务端的配置文件中新增这些语句
pasv_address=***.***.***.***( 外网ip)