iptables nat下的ftp配置

一台现网上跑的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
<br />

服务器的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
<br />

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

1、开启转发功能

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

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

<br />

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 保存配置。

<br />

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注