- 论坛徽章:
- 0
|
说来惭愧,自己学习iptables和netfilter的东西已经半年多了,基本的iptables规则书写对自己应该比较容易了,但却没有真正理解其中的实现原理。最近看回环的一些资料,才对snat,dnat等有了一些更深入些的了解:
其实所谓的snat,dnat就是对数据包的源地址和目的地址进行修改,并且保存修改前后的映射关系,并且根据需要进行还原操作。
snat:出去的时候改变原地址(snat),回来的时候改变目的地址(un_snat)
dnat:进来的时候改变目的地址(dnat),出去的时候改变源地址(un_dnat)
而所谓的回环,其实同时用到了snat和dnat,例如:
src 192.168.1.2(client) ,dnat 10.14.11.177(firewall),dst 192.168.2.2(http server),
添加回环规则后,从src对10.14.11.177进行请求,然后转到dst,随后进行相反操作,最后src客户端收到源为10.14.11.177,目的为自身的数据包,因此会正确接收。过程如下:
1 首先pre,进行目的地址的转换,开始: 192.168.1.2-》10.14.11.177 ,转换后:192.168.1.2 》192.168.2.2(pre)
2 然后post,进行源地址的转换,到达真正的http server;post:192.168.1.2 》192.168.2.2,转换后:10.14.11.177(post)》192.168.2.2
3 dst进行请求回复,进行pre的反操作,进行源地址的转换: 192.168.2.2》10.14.11.177,转换后:10.14.11.177(un_pre)》10.14.11.177
4 进行post的反操作,进行目的地址的转换:进入un_post:10.14.11.177》10.14.11.177,转换后:10.14.11.177》192.168.1.2(u_post)
以上是我的一些认识,有什么错误,请大家指正。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/9151/showart_91547.html |
|