当路由器收到数据包是先NAT还是先路由?
1 实验目的
验证当路由器收到数据包是先NAT还是先路由.
2 实验拓扑
 鎷撴墤
3 实验原理
一条路径在路由上优先,实现原理是:两个出口都配上出口路由,一个出口用默认路由,另一出口用细化路由,显然细化路由会优于默认路由,如果是先路由的话,一定走细化路由出口的路径。
实现代码:
ip route 0.0.0.0 0.0.0.0 Ethernet1/1
ip route 10.0.0.0 255.255.255.0 Ethernet1/0       // E1/0出口优先
对于NAT方面,一个出口E1/0没有配ip nat outside,另一个接口E1/1配了ip nat outside。实现原理是:没有配ip nat outside 的出口肯定NAT不成功,如果是先NAT的话,数据必定是走in nat inside到ip nat outside(E1/1),而不会选择一个没配ip nat outside的出口。再选择路由的话,只有一条默认路由可选。不会再考虑细化路由了。
实现代码:
ip nat pool fu 1.1.1.1 1.1.1.1 netmask 255.255.255.0
ip nat pool ku 2.2.2.1 2.2.2.1 netmask 255.255.255.0    //分别定义两个出口的地址池
access-list 1 permit 192.168.1.0 0.0.0.127
access-list 2 permit 192.168.1.128 0.0.0.127          //分别定义哪些主机可以NAT,
ip nat inside source list 1 pool fu overload
ip nat inside source list 2 pool ku overload           //定义出口的NAT,
4 实验预测
先在R1上开记debug ip packet待观察数据包,然后在pc0上发过ping 10.0.0.2;
若在R1上观察到接收到的数据包的源地址为2.2.2.1,且是从R2的E1/2(10.0.0.1)口接收到数据包,即数据走了R0的E1/1出口,则证明了:先NAT后路由。
若在R1上收到源地址为192.168.1.129的数据包,且是从R2的E1/0(1.1.1.2)口接收到数据包,即没有进行NAT,走了R0的E1/1出口,则证明了:先路由后NAT。
5 实验配置
R0配置:
interface FastEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 ip nat inside
!
interface Ethernet1/0
 ip address 1.1.1.1 255.255.255.0
// 没有配ip nat outside

interface Ethernet1/1
 ip address 2.2.2.1 255.255.255.0
 ip nat outside
!
ip nat pool fu 1.1.1.1 1.1.1.1 netmask 255.255.255.0
ip nat pool ku 2.2.2.1 2.2.2.1 netmask 255.255.255.0
ip nat inside source list 1 pool fu overload
ip nat inside source list 2 pool ku overload
ip classless
ip route 0.0.0.0 0.0.0.0 Ethernet1/1
ip route 10.0.0.0 255.255.255.0 Ethernet1/0
!
access-list 1 permit 192.168.1.0 0.0.0.127
access-list 2 permit 192.168.1.128 0.0.0.127
!
R1配置:
interface Ethernet1/0
 ip address 1.1.1.2 255.255.255.0
!
interface Ethernet1/2
 ip address 10.0.0.1 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 Ethernet1/2
ip route 192.168.1.0 255.255.255.0 Ethernet1/1
!
R2配置:
interface Ethernet1/1
 ip address 2.2.2.2 255.255.255.0
!
interface Ethernet1/2
 ip address 10.0.0.2 255.255.255.0
!
PC0配置:
IP:192.168.1.129
Subne::255.255.255.0
GW:192.168.1.1
6 实验结果
在R1上开记debug ip packet待观察数据包,然后在pc0上发过ping 10.0.0.2,然后观察R1的数据包情况如下:
IP: s=192.168.1.129 (Ethernet1/0), d=10.0.0.1 (Ethernet1/2), len 0, rcvd 3
IP: tableid=0, s=10.0.0.1 (local), d=192.168.1.129 (Ethernet1/0), routed via RIB
IP: s=10.0.0.1 (local), d=192.168.1.129 (Ethernet1/0), len 0, sending
发现在R1上到接收到的数据包的源地址为192.168.1.129,且是从R2的E1/0(1.1.1.2)口接收到数据包,没有NAT,即数据走了R0的E1/0出口,则证明了:先路由后NAT!