tianwen 发表于 2013-12-28 21:13:17

..............

jimezhang123 发表于 2013-12-29 10:43:04

{:6_267:}{:6_267:}

爱尔兰的咖啡 发表于 2014-1-3 16:51:06

{:6_267:}

追梦802 发表于 2014-1-5 16:59:44

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

cvcv 发表于 2014-1-6 12:22:37

{:6_269:}{:6_269:}{:6_269:}{:6_269:}{:6_269:}

a280966503 发表于 2014-1-7 16:53:58

435345345

chongsang 发表于 2014-1-8 12:10:27

thanks for sharing

sxl56505035 发表于 2014-1-17 09:13:28

看看

wusir 发表于 2014-1-17 09:23:54

{:6_267:}{:6_268:}

spatial2011 发表于 2014-1-17 10:31:33

:'(搞不定

zhanghuaqing 发表于 2014-1-17 10:41:29

考卷啊这是

沙琅boy 发表于 2014-1-17 10:44:45

嗯,,,貌似不错!!

zhangst211 发表于 2014-1-17 10:45:40

{:6_267:}

bxj5671896 发表于 2014-1-17 10:48:32

那么牛叉

shyboyga 发表于 2014-2-6 13:10:26

结论三:内网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这个地址的路
由下一条应该是5。5。5。1,也就是本地路由器,所以包又被发回来了,经过一次往返,本地收到了这个包,首先提交给nat引擎,发现目的地址5。5。5。254:某个端口,在nat表中对应着内网pc1。1。1。111,所以将5。5。5。254替换成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通了!!!!



结论四:三种地址全部不在同网段,没有问题。








综上所述,得到了4个结论:

结论一:只要出口地址和服务器映射的公网地址在同网段,就有问题。
结论二:只要出口地址和内网pc的pat地址同网段,同样会有问题。
结论三:内网pc的pat地址和服务器公网地址同网段,同时和出口地址不同网段,这样没有问题。
结论四:三种地址全部不在同网段,没有问题。

可以简单的发现,前两个是充分条件,只要满足了其中一个,就会出现问题,而现在大多数的接入都符合前两个情况,而几乎没有人“多此一举”的去改变掩码规划,所以造成如此多的普遍现象:内网不能用公网地址访问内网服务器!!!!!

出口地址只要不和其他两种地址同网段,就可以保证不出问题。

至此,已经探讨了问题的原因。此过程中我还得到了一个推论和一个待验证的问题。

推论:如果nat池中的公网地址和出口地址不同网段,不管在内网还是公网ping nat池中未参与转换的公网地址,会出现环路,包在本地和isp之间来回往返。


待验证的问题:
对于第三节和第四节,如果只在本地出口变长掩码,isp端不作任何改变,会怎么样?以第三节的环境来说:我们再次分析一个包,内网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,它检查它的路由表,由于此时isp的接口掩码没有变长,还是248,所以,它发现5。5。5。4路由就在它自己的接口上,所以直接在接口发arp请求5。5。5。4的mac地址,此时,按理说,没人会应答(除非本地开了代理arp),但是有一次偶尔发现在路由器上show arp,会发现有些奇怪的条目,ip地址都是nat池中的地址,mac地址不管ip多少,都是本地出口的mac地址,这样的话,即使arp请求的地址不和出口同段,一样会得到应答,不知道这个对不对。


对这个问题的解决方法,在ios层面,一般是利用修改dns回包中的payload实现的,将dns返回的公网地址,修改成内网地址,这样直接通过内网通信,就不会有问题了。对于直接用公网ip访问的包,会在路由器内部先nat,然后调头,不走出口,直接再回到内网,以支持用公网地址访问。
页: 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27
查看完整版本: 网络管理员面试时常用的问题及答案~~转分享