Pureftpd的安装很简单,具体怎么安装这里就不说了。之前我的内网环境中已经有一台用pureftpd搭建的ftp服务器,现在的要求是把这个ftp共享给外部使用。外网FTP我使用的是被动传输模式,规划被动模式使用的端口范围50000到50100 。FTP和一般的端口映射有些区别,需要分别映射控制端口和数据端口。
FTP主动模式和被动模式具体可以参考这篇文章:http://blog.nbqykj.cn/?p=1874.html
内网的环境大致如下:
把192.168.188.104这台ftp服务器映射给外网,必须经过防火墙和路由器。
先修改pureftpd配置,指定被动传输端口为50000~50100 。
# Port range for passive connections replies. - for firewalling. PassivePortRange 50000 50100
然后添加iptables防火墙端口转发规则。
iptables -t nat -A PREROUTING -d 192.168.178.100 -p tcp --dport 18021 -j DNAT --to-destination 192.168.188.104:21 iptables -t nat -A POSTROUTING -d 192.168.188.104 -p tcp --dport 21 -j SNAT --to 192.168.188.1 iptables -t nat -A PREROUTING -d 192.168.178.100 -p tcp --dport 50000:50100 -j DNAT --to-destination 192.168.188.104 iptables -t nat -A POSTROUTING -d 192.168.188.104 -p tcp --dport 50000:50100 -j SNAT --to 192.168.188.1
接着在路由器上添加端口转发。
本来以为这样外网就可以访问这台FTP服务器了,但是我碰到一个奇怪的现象,FlashFXP可以访问,而windows的资源管理器不行。
最后我修改了pureftpd的配置,把ForcePassiveIP这项强制配上内网的公网IP地址,重启ftp后资源管理器就可以访问外网的ftp了。
# Force an IP address in PASV/EPSV/SPSV replies. - for NAT. # Symbolic host names are also accepted for gateways with dynamic IP # addresses. ForcePassiveIP xxx.xxx.xxx.xxx
外网被动模式配置完成,但是内网现在只能使用FlashFXP客户端的主动模式来连接了。
参考链接:http://grefr.iteye.com/blog/1874865