iptables 转发多个FTP

以前做过的一个项目用到了iptables做转发多个FTP服务,记录一下。

背景:

客户需求: 由终端上传许多文件到一个公网ip(省区服务器),这些文件需要再转发到对应的内网地区FTP服务器,最终决定在省区服务器上用iptables转发给各地区的FTP服务器。


思路

要想把这个省区服务器对多个内网FTP的转发需要:

1.  规划好端口,例如需要转到内网FTP服务器1的文件,上传到省区服务器的10021端口,其他以此类推

2. 配置iptables

3. 见文章最后

操作

省区服务器上IPTABLES转发FTP需要3个条件:

1 开启forward转发

2 装载模块

    modprobe iptable_nat

    ftp服务器上要加载下面两个模块 

    modprobe ip_conntrack_ftp

    modprobe ip_nat_ftp

3 配置iptables

省区服务器

先加防火墙规则

iptables -P INPUT ACCEPT

 iptables -F

iptables -A INPUT -i lo -j ACCEPT

 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j ACCEPT 

iptables -P OUTPUT ACCEPT

 iptables -P FORWARD ACCEPT

 service iptables save

service iptables restart


开启forward转发

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

#systcl -p

查看需要的3个模块在不在

lsmod|grep ip


缺两个,补上

modprobe ip_conntrack_ftp

modprobe ip_nat_ftp

1、编辑/etc/sysconfig/iptables-config文件,添加以下两行:

IPTABLES_MODULES=”ip_conntrack_ftp”

IPTABLES_MODULES=”ip_nat_ftp”

请一定注意两行内容的位置关系不要搞反了。如果将”ip_nat_ftp”放到前面是加载不到的。如果你的ftp服务是过路由或者防火墙(即内网映射方式一定需要此模块)。

以上等同于在加载iptables之前运行modprobe命令加载”ip_nat_ftp”和”ip_conntrack_ftp”模块。

modprobe ip_conntrack_ftp

modprobe ip_nat_ftp

以下是在省区服务器上添加的规则:这台服务器就一个网卡配置了内网地址,公网地址估计是路由等硬件映射过来的。

加上2条规则:

# iptables -t nat -A POSTROUTING -d 192.233.111.2(FTP1的ip)  -p tcp --dport 21 -j MASQUERADE

# iptables -t nat -A PREROUTING -d 10.103.156.101(本地ip) -p tcp --dport 10021 -j DNAT --to-dest 192.233.111.2:21

查看现有iptables 中 nat表的规则

# iptables -L -t nat -v

Chain PREROUTING (policy ACCEPT 31 packets, 1896 bytes)

    pkts bytes target     prot opt in     out     source               destination         

    0     0 DNAT       tcp  --  any    any     anywhere             10.103.156.101      tcp dpt:10021 to:192.233.111.2:21 

Chain POSTROUTING (policy ACCEPT 35 packets, 2380 bytes)

 pkts bytes target     prot opt in     out     source               destination         

    0     0 MASQUERADE  tcp  --  any    any     anywhere             192.233.111.2       tcp dpt:ftp 

Chain OUTPUT (policy ACCEPT 35 packets, 2380 bytes)

 pkts bytes target     prot opt in     out     source               destination   

还有最后一步,也就是前面的 思路 里面说的第3条:

      在本例中,这个省区服务器的公网ip是从一人防火墙上映射过来的,这里会造成一个情况,当外界有访问公网ip的10021端口后,转发到内网的FTP1服务器上,但在数据传输的时候会不通,因为防火墙不会给FTP1服务器生成的随机端口打开通路,这时又联系客户那边的网络工程师,说明了情况,在应用层网关做了配置,然后连接,收发数据都正常了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容