一、源
在学习鸟哥的linux私房菜NAT部分的时候为了加深对postrouting和prerouting的理解,上网查了相关的一些资料。有一篇博文写的很好,给了我很多的启示:/jis1237/article/details/17676659(csdn),下面谈谈自己的所得。
二、关键词链接
访问外网---发一个数据报---路由规则审核一哈---snat( 源地址转换)---postrouting(路由规则之后的动作)---从内网出
外网访问内网---发送一个数据报---dnat (目的地址转换)---prerouting(路由规则之前的动作)---路由规则审核一哈---进内网
细想一下上述过程:内网想要访问外网网页,发送一个数据报,首先路由规则要审核一哈你能不能发,ok了,能了才会继续做snat,所以是路由规则之后的动作。外网想要访问内网服务器,但是其目的ip确是公网的ip,一定要先经过dnat转换成私有ip后,接下来路由规则再审核你能不能进来,所以dnat是路由规则之前的动作。
接受路由规则审核的是私有ip+外网ip的组合。
上述理解可以知道snat为什么对应的是postrouting,dnat为什么对应的是prerouting。或者换句话说:snat(原地址转换)在路由规则之后,dnat(目的地址转换)在路由规则之前。也可以说先路由规则,再源地址转换;先目的地址转换,再路由规则。
上述的内网和外网是相对的概念,有两个局域网A和B,对于A内的主机,A是内网,B是外网;对于B内的主机,B是内网,A是外网。
三、透明代理
透明代理的原理:你想要从内网访问外网的网页,透明代理会把你的请求重定向,转发到内网的某一服务器,实际的过程相当于更改数据报的目的地址,所以说经过了dnat的过程,所以用的是prerouting。
虽说上述的过程是你想访问外网,即从内网出,有点postrouting的感觉.....
所以切记不要用什么内网出,内网进去理解prerouting和postrouting。
需求:用内网的192.168.1.110做访问外网1.2.3.4的透明代理 具体的代码是:
iptables -t nat -A PREROUTING -i eth0 -d 1.2.3.4 -j DNAT --to-destnation 192.168.1.110
原文地址:https://www.cnblogs.com/mengmengzhang/p/9349685.html