CentOS6中利用iptables实现NAT转发和端口映射

2020-01-02 14:21:50 浏览数 (1)

拓扑图如下图所示

1、CentOS6服务器双网卡,eth0:192.168.31.25/24可以通过外网出口路由器上网,eth1:172.16.10.1/24用于与内网网段172.16.10.X/24的互通

2、CentOS6 WebServer网站服务器,eth0:172.16.10.200/24

服务器的网卡及IP地址信息如下

1)CentOS6

2)CentOS6 WebServer网站服务器

目前有如下需求

1)要实现CentOS6_WebServer 通过CentOS6(192.168.31.25)服务器配置iptables NAT转发来上外网

2)要实现目的NAT(端口映射),访问CentOS6(192.168.31.25)服务器的80端口就可以CentOS6_WebServer 的Web端口80

可以在192.168.31.25的CentOS6服务器上编写脚本来实现

vi iptables.sh

iptables.sh

#!/bin/bash

trust_host='172.16.10.0/24'

my_internal_ip='172.16.10.1'

my_external_ip='192.168.31.25'

listen_port='80'

backend_host='172.16.10.200'

backend_port='80'

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

/sbin/iptables -F

/sbin/iptables -t nat -F

/sbin/iptables -X

/sbin/iptables -P INPUT DROP

/sbin/iptables -P OUTPUT ACCEPT

/sbin/iptables -P FORWARD DROP

/sbin/iptables -A FORWARD -i eth1 -o eth0 -s $trust_host -j ACCEPT

/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

/sbin/iptables -A FORWARD -p tcp --dst $backend_host --dport $backend_port -j ACCEPT

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

/sbin/iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -s $trust_host

-d $my_internal_ip -m limit --limit 1/m --limit-burst 5 -j ACCEPT

/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp -s $trust_host

-d $my_internal_ip --dport 22 -j ACCEPT

/sbin/iptables -t nat -A POSTROUTING -o eth0 -s $trust_host -j MASQUERADE

/sbin/iptables -t nat -A PREROUTING -p tcp --dst $my_external_ip --dport $listen_port

-j DNAT --to-destination $backend_host:$backend_port

/etc/rc.d/init.d/iptables save

/etc/rc.d/init.d/iptables restart

接下来执行脚步即可

chmod 777 iptables.sh

./iptables.sh

在CentOS6_WebServer(172.16.10.200)上测试可以上外网

再测试端口映射是否生效

直接访问http://192.168.31.25/可以正常打开网站,可以看出端口映射OK

0 人点赞