【 VSFTPD 】ftp 客户端问题

网络环境:

  两个独立的内网环境,前端都有路由和防火墙的管控。要在这两个独立的内网使用ftp通过互联网进行通信。

  首先,ftp server 服务端口默认修改为:2100 数据端口修改为:21000

  将这两个内网服务器端口通过路由映射到公网端口。

  ftp server 使用的vsftpd的被动模式。

    被动模式:

      命令连接: 客户端大于1024端口 --> 服务器端21端口

      数据连接: 客户端大于1024端口 --> 服务器端被动端口

  我这里 FTP默认端口2100  数据端口设置为21000  客户端通过ftp命令连接出现如下情况。

客户端命令如下:

[root@localhost ~]# ftp (公网IP) 2100
Connected to [公网IP] (公网IP).
220 (vsFTPd 2.2.2)
Name ([公网IP]:root): ftp用户名
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (10,0,10,5,82,8).
ftp: connect: Connection timed out  # 这里无法查看数据,也就是数据端口无法连接,通过上面的连接查看,直接发送到10.0.10.5 2100 这样显示是无法连接内网IP的。
ftp> 

通过以上事件,得知问题出在无法连接数据端口上。研究了很久,windows下通过ftp工具能够正常连接。但是cmd下ftp命令和linux下ftp命令均出现这种情况。

最后得知Linux 下 lftp同样可以进行ftp连接。于是就进行了尝试,结果如下:

可以看到这次,无论是命令连接还是数据连接socket都是正确的。

查看文件同样也OK了。 这算是踩了一个Linux ftp客户端使用的坑。

原文地址:https://www.cnblogs.com/hukey/p/5504208.html