问题:
在本地往ftp服务器上传文件成功(需要跳板机)。测试环境只能连接ftp,可以切换目录,上传文件却超时。
ftp使用的是21端口
测试环境中,在客户端 telnet ftp服务端的21端口是通的。
原因:
因为使用的是被动模式
参考资料:主动和被动模式https://www.codenong.com/cs106853176/
以上关于主动和被动FTP的解释,可以简单概括为以下两点:
1、主动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 <- 服务器 20端口
2、被动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口
客户端使用大于1024的随机端口访问服务端的21端口,网络是通的,所以可以建立连接
当传输文件时,需要客户端访问服务端的大于1024的随机端口
因为环境限制,服务端并不是所有端口都对该客户端开放,所以传输文件失败
参考资料:https://blog.csdn.net/xurening/article/details/125097368
咨询了网络组同事,ftp的服务器不允许开放所有端口给该客户端
所以设置了2个参数限制了端口范围(端口尽量大一点,避免被占用。端口数量需要考虑ftp的并发量,我这里是测试环境,所以随意设置)
在etc/vsftpd/vsftpd.conf 文件里添加2个参数并重启ftp
pasv_min_port=40071 #pasv连接模式时的最小端口
pasv_max_port=40099 #pasv连接模式时的最大端口
这样客户端那边只需要打通客户端到服务端的40071-40099端口就可以正常传输文件了。