snat和dnat实验

2019-10-21  本文已影响0人  andymilion

三台vm虚机,1台hostonly作为内网 1台hostonly+bridge 做路由 1台bridge 做外网
内网


image.png

路由


image.png
外网
image.png

1.内网节点设置默认路由为路由节点内网地址
route add default gw 192.168.183.130

实验1、内网ping外网节点172.20.45.224,此时因为路由节点未开启路由转发,ping包无法到达外网节点
实验2、路由节点开启转发echo 1 > /proc/sys/net/ipv4/ip_forward
假设从内网节点发送http请求,此时外网节点已经收到数据包


image.png

三次握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。
上图中为SYN包到达外网节点,外网节点在回包时发现目的地址非同网段,因此需要交给默认网关,而默认网关的mac地址无法获得(公司开启了802.1认证),因此无法构造回包,即使获得网关mac,此回包也无法到达内网节点

实验3、路由节点开启snat,开启源地址转换
iptables -t nat -A POSTROUTING -s 192.168.183.0/24 -j SNAT --to-source 172.20.45.44
此时内网可正常访问外网服务,此时回包时,目标节点为172.20.45.44,,可直接通过arp获得路由节点172.20.45.44 mac地址


image.png
外网节点抓包
内网节点抓包

效果:实现内网可以访问外网,外网不可以访问内网
注意:snat的目的地址不是路由节点自身地址!!!!

实验4,:dnat
增加如下规则:
iptables -t nat -I PREROUTING 1 -d 172.20.45.44 -j DNAT --to-destination 192.168.183.129
此时从外网节点ping 路由节点


外网ping路由

,其实是在ping内网节点


内网节点抓包ping
内网节点抓包http
外网节点抓包http
上一篇下一篇

猜你喜欢

热点阅读