记录:vsftpd在vmware中使用Nat防火墙下使用PASV模式的搭建

关键词:vsftpd、Centos、nat、pasv、vmware

标题有点拗口。在服务器中安装了一个vmware虚拟机,然后搭建了一个Centos5.4的Linux系统。准备在上面配置一台ftp服务器,采用的是vsftpd。
网络环境是这样的:服务器拥有一个固定IP,所以要连接到虚拟机下的Centos,采用的是nat方式。
vsftpd采用被动模式(pasv),监听端口采用默认的21,数据通讯高端口使用9010 - 9015
在linux的防火墙上开放了这些端口。
命令如下:

/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPTT
/sbin/iptables -I INPUT -p tcp --dport 9010 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9011 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9012 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9013 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9014 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9015 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables status

 


配置文件:
/etc/vsftpd/vsftpd.conf
相关pasv部分:

pasv_enable=YES
pasv_min_port=9010
pasv_max_port=9015

 

然后在虚拟机上做了nat端口映射。

服务器 9021 -> 虚拟机 21
服务器 9010 -> 虚拟机 9010
服务器 9011 -> 虚拟机 9011
服务器 9012 -> 虚拟机 9012
服务器 9013 -> 虚拟机 9013
服务器 9014 -> 虚拟机 9014
服务器 9015 -> 虚拟机 9015

 


添加好ftp用户,过程略。


然后在服务器上用flashfxp登录虚拟机(使用内部IP,192.168.17.128)的vsftpd,没有问题,数据连接端口也在9010到9015之间。

然后在笔记本上面使用flashfxp连接vsftpd,IP填写服务器真实IP,端口填写nat映射成的9021,开始连接,能够登录进用户,但是列表的时候打开的数据端口,不是设定的9010 - 9015,而是随机的,比如10534什么的,导致无法列表和传输数据。

后来Google了一把,在/etc/vsftpd/vsftpd.conf配置文件中添加了2个参数

pasv_address=example.hostname.com
pasv_addr_resolve=YES

 

重启vsftpd,问题照旧。


后来把ftp的21端口也改掉,改成9011,数据端口改成9012 - 9015,ftp客户的端口改成9011,连接一切正常。

最后的配置如下:

listen_port=9011
pasv_enable=YES
pasv_min_port=9012
pasv_max_port=9015
pasv_addr_resolve=YES
pasv_address=example.hostname.com

 


pasv_address 是真实的服务器地址,可以是域名。


猜测这中间出现的问题是在端口映射 服务器 9021 -> 虚拟机 21 之上。
如果是 服务器 21 -> 虚拟机 21,有可能不会出现问题,但是21端口已经被服务器占用,没有测试。
而9010到9015端口,都是用的直接映射,中间不存在端口转化,所以可以正常使用。
这其中道理,不是很清楚,欢迎大侠们来评评。

你可能感兴趣的:(vmware)