MASQUERADE和SNAT的区别
MASQUERADE和SNAT的区别*
正义之道 黄渤
SNAT 是 source network address translation 的缩写,即源地址⽬标转换
⽐如,多个 PC 机使⽤ ADSL 路由器共享上⽹,每个 PC 机都配置了内⽹ IP
PC 机访问外部⽹络的时候,路由器将数据包的报头中的源地址替换成路由器的 ip
当外部⽹络的服务器⽐如⽹站 web 服务器接到访问请求的时候
他的⽇志记录下来的是路由器的 ip 地址,⽽不是 pc 机的内⽹ ip红警戒之战争
这是因为,这个服务器收到的数据包的报头⾥边的“源地址”,已经被替换了
所以叫做 SNAT ,基于源地址的地址转换
DNAT 是 destination network address translation 的缩写
即⽬标⽹络地址转换
典型的应⽤是,有个 web 服务器放在内⽹配置内⽹ ip ,前端有个防⽕墙配置公⽹ ip
互联⽹上的访问者使⽤公⽹ ip 来访问这个⽹站
辩论会技巧当访问的时候,客户端发出⼀个数据包
这个数据包的报头⾥边,⽬标地址写的是防⽕墙的公⽹ ip
防⽕墙会把这个数据包的报头改写⼀次,将⽬标地址改写成 web 服务器的内⽹ ip
然后再把这个数据包发送到内⽹的 web 服务器上
这样,数据包就穿透了防⽕墙,并从公⽹ ip 变成了⼀个对内⽹地址的访问了
即 DNAT ,基于⽬标的⽹络地址转换
MASQUERADE ,地址伪装,在 iptables 中有着和 SNAT 相近的效果,但也有⼀些区别
但使⽤ SNAT 的时候,出⼝ ip 的地址范围可以是⼀个,也可以是多个,例如:
如下命令表⽰把所有
10.8.0.0 ⽹段的数据包 SNAT 成
192.168.5.3 的 ip 然后发出去
iptables
-t nat
-A POSTROUTING
-s
10.8.0.0/255.255.255.0
-o eth0
-j SNAT
–to-source
192.168.5.3
如下命令表⽰把所有
10.8.0.0 ⽹段的数据包 SNAT 成
192.168.5.3/192.168.5.4/192.168.5.5 等⼏个 ip 然后发出去
iptables
-t nat
-A POSTROUTING
-s
10.8.0.0/255.255.255.0
-o eth0
-j SNAT
–to-source
192.168.5.3-192.168.5.5
草木之中有一人这就是 SNAT 的使⽤⽅法,即可以 NAT 成⼀个地址,也可以 NAT 成多个地址
但是,对于 SNAT ,不管是⼏个地址,必须明确的指定要 SNAT 的 ip
假如当前系统⽤的是 ADSL 动态拨号⽅式,那么每次拨号,出⼝ ip192.168.5.3 都会改变
⽽且改变的幅度很⼤,不⼀定是
192.168.5.3 到
192.168.5.5 范围内的地址
这个时候如果按照现在的⽅式来配置 iptables 就会出现问题了
因为每次拨号后,服务器地址都会变化,⽽ iptables 规则内的 ip 是不会随着⾃动变化的
每次地址变化后都必须⼿⼯修改⼀次 iptables ,把规则⾥边的固定 ip 改成新的 ip
这样是⾮常不好⽤的
MASQUERADE 就是针对这种场景⽽设计的,他的作⽤是,从服务器的⽹卡上,⾃动获取当前 ip 地址来做 NAT ⽐如下边的命令:怪坡
iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
如此配置的话,不⽤指定 SNAT 的⽬标 ip 了
不管现在 eth0 的出⼝获得了怎样的动态 ip , MASQUERADE 会⾃动读取 eth0 现在的 ip 地址然后做 SNAT 出去这样就实现了很好的动态 SNAT 地址转换
*
跑车品牌

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。