上一篇博客讲了搭建思科的网络模拟器,随后我就研究了一下NAT,开始是怎么也搭建不出来这个环境,后来我干脆在我自己的路由器上用tcpdump在wan口进行抓包,抓出来的全是NAT之后的报文,里面的IP全是通过转换之后的wan口的ip。
还是要用模拟器模拟一下:
首先搭建好环境,只是简单的测试,所以搭建一个最简单的环境如下:
物理链路通了,在路由侧肯定是要进行NAT的配置的,否则,报文是不会进行NAT动作的。
先配置两个路由的路由表,RIP添加好就可以,不贴图了。
NAT的配置命令(针对PC的网关路由):
Router(config)#interface FastEthernet0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#interface FastEthernet0/1
Router(config-if)#ip nat outside
Router(config-if)#exit
分别是配置以太网口进nat的内外测,然后配置转换的公网ip:
Router(config)#ip nat inside source static 192.168.1.100 131.107.0.100
因为这里的路由应该没有比如像连接跟踪或者端口匹配这种东西,我们干脆直接分配一个NAT的公网IP,因为这个拓扑没有冲突,真实使用不能这么做。
两个路由间的路由表我用的RIP,添加好入口出口的ip段就好。然后我们直接用PC去ping一下服务器:
没问题,可以通,我们抓包看下,是不是NAT成功了。
PC端添加一个信件,封包内容如上,我们开始让这个报文往下走,一直走到网关。
网关还没进行NAT,封包内容还没开始变化,我们让他往下一个网关走:
这里就可以看到了,这里的源IP就变成我们在网关路由出配置的NAT规则的IP,这里直到服务器都没问题,同样看看服务器回到PC网关的报文长啥样:
报文刚刚网关路由的wan侧,还没进行NAT,看的出来,目的地址还是NAT规则对应的公网IP,往下走,看看变成啥样了:
这里就变成了局域网的IP了,就可以顺利的回到PC,这就是NAT的模拟。不过真实使用的NAT会比这种方便的多,会有各种规则对NAT进行处理。不用我们过多的担心。这一块内容之前没有做过,研究过内核的实现再来和大家说说。