iptables nat下的ftp配置

2013年7月10日 发表评论 阅读评论

一台现网上跑的vsftp服务器,本身只给局域网内的服务器使用,不过因为需求的变更,想通过公网也能进行访问。而该主机由于没有公网IP,只能在nat上进行配置。具体访问流程为:        |客户机|:::::::::::::::::|LINUX网关|------|VSFTPD服务器|   ,而三个服务器对应的IP假设如下:

客户机的IP: 10.10.10.10/8
LINUX网关IP: 10.10.10.20/8,  192.168.1.1
VSFTPD服务器IP: 192.168.1.8/24

服务器的ftp配置文件如下:

anonymous_enable=NO
listen=YES
#listen_port=21
################set pasv##################
pasv_enable=YES
pasv_min_port=9921
pasv_max_port=9927
#########################for vuser####################
guest_enable=YES
guest_username=www
pam_service_name=vsftpd.vuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
local_root=/data1
anon_umask=022
anon_other_write_enable=YES
######################################################
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
userlist_enable=YES
tcp_wrappers=YES
log_ftp_protocol=YES
dual_log_enable=YES
max_clients=200
max_per_ip=20

而如果想实现通过公网IP nat连接内网主机的ftp并进行交互的话,需要在iptables上做如下配置。

1、开启转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward

该处也可以通过/etc/sysctl.conf文件配置为重启后生效。

2、增加如下iptables配置

iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.8 --sport 20:21 -j SNAT --to 10.10.10.20
iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.8 --sport 9921:9927 -j SNAT --to 10.10.10.20
iptables -t nat -A PREROUTING -p tcp -d 10.10.10.20 --dport 21 -j DNAT --to-destination 192.168.1.8
iptables -t nat -A PREROUTING -p tcp -d 10.10.10.20 --dport 9921:9927 -j DNAT --to-destination 192.168.1.8

配置完成后记得/etc/init.d/iptables save 保存配置。

关于ftp nat转发的原理,可以参看网上的一篇 E文 文章




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.