- 论坛徽章:
- 0
|
原帖由 platinum 于 2006-3-14 21:45 发表
你应该先了解 POSTROUTING 链是做什么用的,SNAT 动作的功能是什么,再考虑 -d 的目的 IP 如何写
我认为我的那个 PPT 已经讲的很清楚了
POSTROUTING链是用来做SNAT的,修改数据包的源ip地址
假设一个外部ip(1.2.3.4)要访问该ftp(192.168.1.44:21),用$eth0表示防火墙外部ip,$eth1表示内部ip
我加了2条规则
iptables -t nat -A PREROUTING -p tcp -d $eth0 -dport 21 -j DNAT --to 192.168.1.44
iptables -t nat -A POSTROUTING -s 192.168.1.44 -j SNAT --to $eth0
数据包的流向是这样的:
数据包(sip:1.2.3.4 dip eth0 dport:21)到达防火墙后,匹配防火墙规则,进行DNAT,数据包变为(sip:1.2.3.4 dip:192.168.1.44 dport:21),然后进行路由判断是转发的数据包,经过FORWARD链进行过滤后到达POSTROUTING链然后送出到达ftp服务器。ftp默认网关为防火墙内部ip,其返回数据包(sip:192.168.1.44 sport:21 dip:sip:1.2.3.4)首先到达防火墙,经过PREROUTING FORWARD ,在POSTROUTING 做SNAT,转换成(sip eth0 sport:21 dip:1.2.3.4),然后就回到(1.2.3.4)
是不是这么走的啊 |
|