有关NAT和路由之间的先后顺序

您所在的位置:网站首页 腾讯会议位置和进的先后有关吗知乎 有关NAT和路由之间的先后顺序

有关NAT和路由之间的先后顺序

2024-07-10 16:15| 来源: 网络整理| 查看: 265

    昨天在模拟器复习NAT实验,对NAT时候要设置默认路由的关系去搜了一下,结果搜到一篇讲NAT和路由先后顺序的实验:http://raulkang.blog.51cto.com/210239/106508  ,看了之后更糊涂了。而且觉得没有必要搞那么复杂的实验,自己用两个路由器实验看看。一开始,在后端的路由器上debug ip pack发现开了nat,收到的包源IP就是nat转换后的IP;关掉NAT,收到的包源IP是未转换的IP。这样看起来,感觉应该是NAT优先级更高。但是,很多帖子(https://learningnetwork.cisco.com/message/55778)讲思科官方文档是先路由后NAT,很不明白。

 

    直到找到这篇:http://hi.baidu.com/gotoccie/blog/item/2064600634fa8d7b020881b8.html,看完就很明白了。

    在自己的拓扑中,从inside的pc上ping单个包测试, 前端配置了NAT的路由器上,debug ip pack, debug ip nat 输出:

 

*Mar  1 01:28:32.728: IP: tableid=0, s=172.16.8.5 (Ethernet0/0), d=63.19.6.1 (Ethernet1/0), routed via FIB

   先查FIB确定出口

*Mar  1 01:28:32.728: NAT: s=172.16.8.5->200.1.8.7, d=63.19.6.1 [37411]

   可以理解为在去出口的路上,发现配置了NAT,把源IP替换掉

*Mar  1 01:28:32.728: IP: s=200.1.8.7 (Ethernet0/0), d=63.19.6.1 (Ethernet1/0), g=200.1.8.8, len 48, forward

   替换源IP后,继续转发包

*Mar  1 01:28:32.732: NAT*: s=63.19.6.1, d=200.1.8.7->172.16.8.5 [37411]

   返回的应答包,目的IP替换回当初发送时对应的源IP

   然后再查路由表转发,因为这里ping的机器是直连,所以没有这步

 

   在后端路由器上 debug ip pack的输出:

 

*Mar  1 01:28:32.928: IP: tableid=0, s=200.1.8.7 (Ethernet1/0), d=63.19.6.1 (Ethernet0/0), routed via RIB

*Mar  1 01:28:32.933: IP: s=200.1.8.7 (Ethernet1/0), d=63.19.6.1, len 48, rcvd 4

   收到ping包

*Mar  1 01:28:32.933: IP: tableid=0, s=63.19.6.1 (local), d=200.1.8.7 (Ethernet1/0), routed via FIB

*Mar  1 01:28:32.937: IP: s=63.19.6.1 (local), d=200.1.8.7 (Ethernet1/0), len 48, sending

   应答ping包

 

先查路由表确定出口,因为目的地址是确定的并且直接决定出口。找到出口后,如果有NAT就替换源IP,如果没有NAT就不替换。所以,之前看到的开NAT就替换不开NAT就不替换,并不是NAT优先级更高,而是NAT处于路由转发之后,更接近出口的缘故。

 

这是NAT从内向外,先查路由再NAT的顺序。从外向内的方向,顺序相反。因为从外向内的包,如果不先NAT把目的IP替换为内部IP的话,是不可能在路由表中查到对应转发规则的。

 

 

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3