|
发表于 2007-1-24 21:24:53
|
显示全部楼层
Post by Eric_DZT
dream3401兄, 你的回答中, POSTROUTING的两句具体怎么解释?! 请赐教!!
-A POSTROUTING -o eth1 -p tcp -d 192.168.0.8 --dport 80 -j SNAT --to-source 192.168.0.1
-A POSTROUTING -o eth1 -p tcp -d 192.168.0.8 --dport 3389 -j SNAT --to-source 192.168.0.1
-A POSTROUTING -o eth1 -p tcp -d 192.168.0.8 --dport 80 -j SNAT --to-source 192.168.0.1
如果不加这一句,数据流是这样的:
数据包(内网ip:端口-->公网ip:80)经过前面的PREROUTING会变成数据包(内网ip端口-->192.168.0.8:80),经过路由数据包到达192.168.0.8,192.168.0.8收到WEB请求数据包,产生回复数据包(192.168.0.8:80-->内网ip:端口),这个回复数据包的目标地址由于是内网的ip,所以会直接到达内网机器,而不会走服务器(两个接口:192.168.0.1和公网ip);而由于内网的机器WEB请求数据包是与服务器(公网ip)建立tcp联结的,所以当收到来自192.168.0.8的回复数据包时会自动丢弃(不是我要的,干嘛给我?呵呵),从来TCP联结无法实现.
如果加了这一句,就会在数据包离开服务器时把源地址(内网的ip地址)变成服务器的ip地址(这里是192.168.0.1),这样192.168.0.8收到的WEB请求的数据包的源地址变成了服务器的ip地址,这样192.168.0.8的回复数据包会先回到服务器,然后经过NAT反过程,再路由到内网机器(这时回复数据包的源地址已经变成了服务器的公网ip),从而内网机器被欺骗(它一直以为是与服务器在建立WEB联结),这样完成TCP数据交换的过程.
希望我清楚的表达了我的想法,呵呵 |
|