结论二:只要出口地址和内网pc的pat地址同网段,同样会有问题
第三节
我们再变更掩码方案,使得内网pc的pat地址和服务器映射地址同网段,但和出口不同网段。假设内网pc的pat地址为5.5.5.6(和服务器地址同网段)
我们再次分析一个包,内网pc1.1.1.111发出ping 5.5.5.4请求,包源地址1.1.1.111,目的地址5.5.5.4,路由器收到这个包后,检查路由表,发现5.5.5.4不在本地的任何接口,所以走了缺省路由,将包发给了isp对端口,并在本地nat表中生成一条项目,记录内网地址1.1.1.111被转换成公网地址5.5.5.6加上端口号, isp接受到的包,目的地址是5.5.5.4,源地址变成了5.5.5.6,它检查它的路由表,发现5.5.5.4路由下一条是5.5.5.1,也就是本地路由器,所以又将此包发给本地路由器,经过了一次往返后,本地收到这个包,首先接受nat引擎的过虑,发现5.5.5.4正在被静态映射到内网的 1.1.1.1的主机,所以改变目的地址为1.1.1.1,源地址还是5.5.5.6,这样就交给了路由引擎,查看路由表,1.1.1.1的路由当然有了,通过2层直接发给1.1.1.1,至此,去程的包分析完毕。
我们再分析回程的包。服务器1.1.1.1收到包后,准备回应给5.5.5.6 (加端口号),发出reply包,源地址1.1.1.1,目的地址5.5.5.6,本地路由器收到后,先给路由引擎,发现5.5.5.6不在本地任何端口下,所以走了缺省路由,发给isp,并在nat表中生成一条记录,将1.1.1.1转换为5.5.5.4,isp接受到包源地址变为5.5.5.4,目的地址是5.5.5.6,通过检查路由表,发现5.5.5.6这个地址的路由下一条应该是5.5.5.1,也就是本地路由器,所以包又被发回来了,经过一次往返,本地收到了这个包,首先提交给nat引擎,发现目的地址5.5.5.6在nat表中对应着内网pc1.1.1.111,所以将5.5.5.6替换成 1.1.1.111,源地址不变,还是5.5.5.4,然后提交给路由引擎,路由器在2层将包发给1.1.1.111,这时,1.1.1.111这台主机收到了从5.5.5.4返回的包,而他一开始ping请求包,就是发给5.5.5.4这个公网地址的,所以ping通了!!!!
结论三:内网pc的pat地址和服务器公网地址同网段,同时和出口地址不同网段,这样没有问题。
第四节
本贴的高潮部分已经达到,至此,只剩下一种情况,就是内网pat地址、服务器公网地址、出口地址全部不在同网段。假设出口掩码252,服务器公网地址段掩码248,内网pc的pat地址改为5.5.5.254,这样三种地址都不在同网段。而且isp也必须有服务器公网地址和内网pc的pat地址的路由,下一条是5.5.5.1我们再次分析一个包,内网pc1.1.1.111发出 ping 5.5.5.4请求,包源地址1.1.1.111,目的地址5.5.5.4,路由器收到这个包后,检查路由表,发现5.5.5.4不在本地的任何接口,所以走了缺省路由,将包发给了isp对端口,并在本地nat表中生成一条项目,记录内网地址1.1.1.111被转换成公网地址5.5.5.254加上端口号,isp接受到的包,目的地址是5.5.5.4,源地址变成了5.5.5.254,它检查它的路由表,发现5.5.5.4路由下一条是5.5.5.1,也就是本地路由器,所以又将此包发给本地路由器,经过了一次往返后,本地收到这个包,首先接受nat引擎的过虑,发现5.5.5.4正在被静态映射到内网的1.1.1.1的主机,所以改变目的地址为1.1.1.1,源地址还是5.5.5.254,这样就交给了路由引擎,查看路由表,1.1.1.1的路由当然有了,通过2层直接发给1.1.1.1,至此,去程的包分析完毕。
我们再分析回程的包。服务器1.1.1.1收到包后,准备回应给 5.5.5.254(加端口号),发出reply包,源地址1.1.1.1,目的地址5.5.5.254,本地路由器收到后,先给路由引擎,发现 5.5.5.254不在本地任何端口下,所以走了缺省路由,发给isp,并在nat表中生成一条记录,将1.1.1.1转换为5.5.5.4,isp接受到包源地址变为5.5.5.4,目的地址是5.5.5.254,通过检查路由表,发现5.5.5.254这个地址的路