本文档介绍对no ip classless和默认路由之间的交互导致的ICMP源地址选择异常进行故障排除。
Cisco 建议您了解以下主题:
本文档中的信息基于以下软件和硬件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
注意:Cisco建议保持默认的ip classless配置,以避免由no ip classless对路由查找和本地流量源地址选择产生意外影响。
在C8500L路由器上,默认路由通过BGP获取,并且默认路由的下一跳指向公共网络出口。
当直接执行命令时:
C8500L# ping 8.8.8.8
设备不会选择公共网络送出接口地址作为ICMP回应的源地址,而是选择内部接口地址(例如192.168.72.208)。 由于此内部地址无法通过公共网络正确返回,因此Ping失败。
但是,对于另一个也依赖于默认路由的公有地址,例如:
C8500L# ping 10.10.10.10
设备可以正确选择公共网络送出接口地址作为源地址,Ping操作成功。

C8500L配置:
interface TenGigabitEthernet0/1/0
no ip address
!
interface TenGigabitEthernet0/1/0.490
encapsulation dot1Q 490
ip address 172.16.119.30 255.255.255.252
!
interface TenGigabitEthernet0/1/0.2190
encapsulation dot1Q 2190
ip address 172.16.0.58 255.255.255.252
ip nat outside
!
interface TenGigabitEthernet0/1/1
no ip address
!
interface TenGigabitEthernet0/1/1.5
encapsulation dot1Q 5
ip address 192.168.72.208 255.255.255.192
!
interface TenGigabitEthernet0/1/1.1011
encapsulation dot1Q 1011
ip address 192.168.197.184 255.255.255.0
no ip proxy-arp
ip nat inside
ip tcp adjust-mss 1300
!
!
no ip classless
ip forward-protocol nd
!
router bgp 65001
bgp log-neighbor-changes
neighbor 10.1.1.2 remote-as 65002
C8500L#show ip route bgp
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP
n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
H - NHRP, G - NHRP registered, g - NHRP registration summary
o - ODR, P - periodic downloaded static route, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
& - replicated local route overrides by connected
Gateway of last resort is 172.28.0.57 to network 0.0.0.0
B* 0.0.0.0/0 [20/0] via 172.28.0.57, 6d22h
8.0.0.0/8 is variably subnetted, 5 subnets, 3 masks
B 8.x.203.0/24 [20/0] via 10.1.1.2, 3d17h
B 8.x.0.0/16 [20/0] via 10.1.1.2, 6d22h
B 8.x.0.0/17 [20/0] via 10.1.1.2, 6d22h
B 8.x.0.0/17 [20/0] via 10.1.1.2, 6d22h
B 8.x.0.0/16 [20/0] via 10.1.1.2, 6d22h
C8500L#show ip route 8.8.8.8
% Subnet not in table
C8500L#show ip route 10.10.10.10
% Network not in table
C8500L#show ip cef 0.0.0.0/0 detail
0.0.0.0/0, epoch 2, flags [rib only nolabel, rib defined all labels, default route]
recursive via 172.16.0.57
attached to TenGigabitEthernet0/1/0.2190
C8500L#show ip cef 8.8.8.8 detail
0.0.0.0/0, epoch 2, flags [rib only nolabel, rib defined all labels, default route]
recursive via 172.16.0.57
attached to TenGigabitEthernet0/1/0.2190
C8500L#show ip cef 10.10.10.10 detail
0.0.0.0/0, epoch 2, flags [rib only nolabel, rib defined all labels, default route]
recursive via 172.16.0.57
attached to TenGigabitEthernet0/1/0.2190
C8500L#show ip cef exact-route 172.16.0.54 8.8.8.8
172.28.0.54 -> 8.8.8.8 =>IP adj out of TenGigabitEthernet0/1/0.2190, addr 172.16.0.57
C8500L#show ip cef exact-route 172.16.0.54 10.10.10.10
172.28.0.54 -> 10.10.10.10 =>IP adj out of TenGigabitEthernet0/1/0.2190, addr 172.16.0.57
C8500L#show ip cef exact-route 192.168.72.208 8.8.8.8
10.0.72.208 -> 8.8.8.8 =>IP adj out of TenGigabitEthernet0/1/0.2190, addr 172.16.0.57
C8500L#show ip cef exact-route 192.168.72.208 10.10.10.10
10.0.72.208 -> 10.10.10.10 =>IP adj out of TenGigabitEthernet0/1/0.2190, addr 172.16.0.57
示例:
C8500L# ping 8.8.8.8
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds: ..... Success rate is 0 percent (0/5)
debug ip packet output:
IP: s=192.168.72.208 (local), d=8.8.8.8 (WAN-interface)
预期的正常行为:
实际行为:
示例:
C8500L# ping 10.10.10.10
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.10.10.10, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 62/62/63 ms
debug ip packet output:
IP: s=172.16.0.58 (local), d=10.10.10.10 (WAN-interface)
正常性能:
对于8.8.8.8,由于RIB中有主要网络信息8.0.0.0/8,因此启用no ip classless后,路由器将首先执行有类查找:
在no ip classless场景中,尽管路由器可以识别默认路由,但后续RIB第一跳查找验证通常无法返回与转发路径相关的接口信息。内部查找过程最终返回空结果(NULL)。
当本地生成的流量无法从RIB第一跳查找获得正确的传出接口关联信息时,源地址选择逻辑将恢复为默认接口选择机制。
此回退机制不保证所选地址与实际FIB传出接口一致。因此,它可以选择任何可用的本地接口地址,例如内部LAN接口地址。
结果,看似矛盾的结果出现了:
这是Ping失败的直接原因。
C8500L#show ip route 8.0.0.0 255.0.0.0 longer-prefixes
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP
n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
H - NHRP, G - NHRP registered, g - NHRP registration summary
o - ODR, P - periodic downloaded static route, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
& - replicated local route overrides by connected
Gateway of last resort is 172.16.0.57 to network 0.0.0.08.0.0.0/8 is variably subnetted, 5 subnets, 3 masks
B 8.x.203.0/24 [20/0] via 10.1.1.2, 3d17h
B 8.x.0.0/16 [20/0] via 10.1.1.2, 6d22h
B 8.x.0.0/17 [20/0] via 10.1.1.2, 6d22h
B 8.x.0.0/17 [20/0] via 10.1.1.2, 6d22h
B 8.x.0.0/16 [20/0] via 10.1.1.2, 6d22h
C8500L#show ip route 10.0.0.0 255.0.0.0 longer-prefixes
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP
n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
H - NHRP, G - NHRP registered, g - NHRP registration summary
o - ODR, P - periodic downloaded static route, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
& - replicated local route overrides by connected
Gateway of last resort is 172.16.0.57 to network 0.0.0.0
因此,问题的出现并不是随机的。相反,这取决于路由表中是否存在与目的地址对应的有类主网络,以及是否存在匹配的更具体的子网路由。
删除no ip classless并恢复无类路由查找:
C8500L#configure terminal
C8500L(config)#ip classless
C8500L(config)#end
注意:在Cisco IOS XE上,ip classless通常是默认行为。如果no ip classless明确存在于运行配置中,则执行ip classless可以恢复建议行为。
如果无法立即修改no ip classless,则可以显式指定特定本地应用程序的源接口,例如:
C8500L(config)#ip domain lookup source-interface
C8500L(config)#ip http client source-interface
对于Ping测试,可以手动指定源地址:
C8500L#ping 8.8.8.8 source
或者,为特定地址配置静态路由代表特定目标地址的临时/指令旁路解决方案。
C8500L(config)#ip route 8.8.8.8 255.255.255.255 TenGigabitEthernet0/1/0.2190 172.16.0.57
这些方法仅能解决特定应用或单次测试的源地址问题,不能取代对no ip classless的删除。
show tech-support路由详细信息
主要影响是不明确指定源地址的本地生成的流量,例如:
通常不会直接影响:
但是,具体影响仍然取决于网络回传路径、NAT策略、ACL和安全策略。因此,建议充分验证生产网络中的关键管理平面和控制平面通信。
在具有默认路由和多个接口地址的网络中,no ip classless命令可阻止正确检索与特定目标地址的有类路由的实际转发路径相关的接口信息。
发生这种情况时,设备上本地生成的流量的源地址选择可以恢复为非路径依赖的接口选择逻辑,从而导致本地流量(例如,使用不正确的源IP执行Ping)。如果源IP没有公共可达性或正确的回传路径,通信可能会失败。
| 版本 | 发布日期 | 备注 |
|---|---|---|
1.0 |
04-Sep-2026
|
初始版本 |