在客户内网服务器上部署vsftpd服务器,设置被动模式,并指定数据端口范围
listen_port=8121
pasv_enable=YES
pasv_min_port=8117
pasv_max_port=8120
然后客户映射到公网,并对几家乙方的公网ip开放访问权限。
奇怪的问题出现了,几家乙方访问ftp服务器时,登录,cd,pwd命令都可以,但是ls,get,put等命令有的可以有的不行。
(ftp被动模式,需要在命令行输入 passive,切换到 Passive mode on. )
于是我实验了多个方式,
我本机的公网ip (通过百度“公网ip”或 curl members.3322.org/dyndns/getip),在客户那边开放了访问权限。
1,ie直接ftp,能够正常访问
2,使用filezilla ,被动模式,可以。但注意 编辑--设置--被动模式 中 选择“”使用服务器的外部IP地址来代替“”
3,cmd命令行 不行
4,本机启动虚拟机,虚拟机里装centos,不行
5,本机启动虚拟机,虚拟机里装windows,和虚拟机外的系统一样效果。
应该来说端口都是开放了的,怀疑是命令行下ftp客户端的配置有关,在centos下重新装了个ncftp,可以正常使用了。
http://www.ncftp.com/download/
虽然可以了,但是问题还是没找到,为什么有的服务器上ftp直接就可以,有的必须要换ncftp呢?
怀疑跟“”使用服务器的外部IP地址来代替“” 有关,是不是ftp服务器那边返回数据传输端口地址时,把本地的内网地址传出来了,有的客户端能够处理这个异常,用公网ip替代,有的不行,所以就传输不了数据。