2023年7月10日发(作者:)
MASQUERADE和SNAT的区别*SNAT 是 source network address translation 的缩写,即源地址⽬标转换⽐如,多个 PC 机使⽤ ADSL 路由器共享上⽹,每个 PC 机都配置了内⽹ IPPC 机访问外部⽹络的时候,路由器将数据包的报头中的源地址替换成路由器的 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 地址转换*
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688943291a186384.html
评论列表(0条)