【第一、需求描述】
     员工通过办公网络的网关服务器(linux)192.168.1.250的snat访问另外一个局域网:安全中心(10.1.1.0/24),但是为了提高安全性,只允许访问安全中心的指定端口。

【第二、方案实施】 

#cat /etc/sysconfig/iptables #只允许nat转发的指定的端口22,80

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [1:92]
:OUTPUT ACCEPT [1:92]
#从192.192.191.1这个ip出去,SNAT
-A POSTROUTING -d 10.1.1.0/24 -j SNAT --to 192.192.191.1
COMMIT


*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]#默认转发是关闭的
:OUTPUT ACCEPT [0:0]
-A FORWARD -d 10.1.1.0/24 -p tcp --dport 22 -j ACCEPT#允许访问10.1.1.0/24的22端口
-A FORWARD -d 10.1.1.0/24 -p tcp --dport 80 -j ACCEPT#允许访问10.1.1.0/24的80端口
-A FORWARD -d 10.1.1.0/24 -p icmp -j ACCEPT#允许ping 10.1.1.0/24
COMMIT

    
【第三、技术详解】 


POSTROUTING链的输入来源是INPUT及FORWARD,即

INPUT->POSTROUTING

FORWARD->POSTROUTING

这里SNAT都是从FORWARD过来的,所以可以通过控制FORWARD链控制SNAT的端口的白名单