本文解释为什么Cisco IOS®路由器在配置了增强型内部网关路由协议(EIGRP)时会遇到“不在通用子网上”错误消息。
EIGRP使用组播hello数据包来与其他EIGRP邻居通信。如果EIGRP收到一个Hello数据包,该数据包源自EIGRP接收接口上未配置的子网上的IP地址,则EIGRP会生成以下错误消息:
timestamp: IP-EIGRP: Neighbor neighbor_IP_address not on common subnet for interface
本文档要求对IP路由协议和EIGRP路由协议的基本理解。要了解有关 IP 路由协议和 EIGRP 的更多信息,请参考下列文档:
本文档中的信息基于Cisco 2500系列路由器上的Cisco IOS软件版本12.2(10b)。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
本部分提供有关如何配置本文档所述功能的信息。
注意:使用命令查找工具(仅限注册客户)可查找有关本文档中使用的命令的详细信息。
思科建议您使用同一子网上的主IP地址配置网段上的所有路由器。此示例显示了常见的EIGRP配置:
本文档使用以下配置:
R1 |
---|
hostname R1 ! interface Ethernet0 ip address 10.1.1.1 255.255.255.0 ! router eigrp 1 network 10.0.0.0 ! end |
R2 |
---|
hostname R2 ! interface Ethernet0 ip address 10.1.1.2 255.255.255.0 ! router eigrp 1 network 10.0.0.0 ! end |
使用本部分可确认配置能否正常运行。
命令输出解释程序(仅限注册用户)(OIT) 支持某些 show 命令。使用 OIT 可查看对 show 命令输出的分析。
发出show ip eigrp neighbor命令,以验证两台路由器是否彼此看到。
R1#show ip eigrp neighbor IP-EIGRP neighbors for process 1 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 10.1.1.2 Et0 12 00:00:16 0 3000 0 23
R2#show ip eigrp neighbor IP-EIGRP neighbors for process 1 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 10.1.1.1 Et0 14 00:01:19 12 200 0 11
使用本部分可排除配置故障。
如果所有配置都正确,您会看到EIGRP邻居关系表。更改R2的配置。将R2的Ethernet0接口放在不同的子网中。
R2#configure terminal R2(config)#interface ethernet0 R2(config-if)#ip address 10.1.2.2 255.255.255.0 R2(config-if)#end
立即查看R2配置:
hostname R2 ! interface Ethernet0 ip address 10.1.2.2 255.255.255.0 ! router eigrp 1 network 10.0.0.0 ! end
现在,您开始在收到EIGRP hello数据包时收到错误消息。在这种情况下,R1和R2上的消息大约每15秒发生一次:
R1 3w0d: IP-EIGRP: Neighbor 10.1.2.2 not on common subnet for Ethernet0 01:05:01: IP-EIGRP: Neighbor 10.1.2.2 not on common subnet for Ethernet0 (10.1.) 01:05:15: IP-EIGRP: Neighbor 10.1.2.2 not on common subnet for Ethernet0 (10.1.) 01:05:30: IP-EIGRP: Neighbor 10.1.2.2 not on common subnet for Ethernet0 (10.1.) 01:05:44: IP-EIGRP: Neighbor 10.1.2.2 not on common subnet for Ethernet0 (10.1.)
R2 3w0d: IP-EIGRP: Neighbor 10.1.1.1 not on common subnet for Ethernet0 00:48:40: IP-EIGRP: Neighbor 10.1.1.1 not on common subnet for Ethernet0 (10.1.) 00:48:54: IP-EIGRP: Neighbor 10.1.1.1 not on common subnet for Ethernet0 (10.1.) 00:49:08: IP-EIGRP: Neighbor 10.1.1.1 not on common subnet for Ethernet0 (10.1.) 00:49:22: IP-EIGRP: Neighbor 10.1.1.1 not on common subnet for Ethernet0 (10.1.)
尽管出现了错误消息,EIGRP仍能与所有其他R1或R2邻居正常工作。更新的show ip eigrp neighbor命令输出显示,错误消息表明R1和R2之间存在严重问题。路由器不再是邻居,不再交换路由信息。
R1 R1#show ip eigrp neighbor IP-EIGRP neighbors for process 1
R2 R2#show ip eigrp neighbor IP-EIGRP neighbors for process 1
如果网络未正确配置,您也可以在使用辅助IP地址的网络中看到此问题。向R2添加辅助地址:
R2 R2#configure terminal R2(config)#interface ethernet0 R2(config-if)#ip address 10.1.1.2 255.255.255.0 secondary R2(config-if)#end
R2配置现在如下所示:
hostname R2 ! interface Ethernet0 ip address 10.1.2.2 255.255.255.0 ip address 10.1.1.2 255.255.255.0 secondary ! router eigrp 1 network 10.0.0.0 ! end
由于R2现在将10.1.1.0/24识别为接口Ethernet0的有效子网,因此R2上不再显示not on common subnet错误消息。R2将R1显示为EIGRP邻居,R2接收并接受R1 hello数据包。
Router2#show ip eigrp neighbor IP-EIGRP neighbors for process 1 H Address Interface Hold Uptime SRTT RTO Q Seq Type (sec) (ms) Cnt Num 0 10.1.1.1 Et0 12 00:00:35 1 5000 1 0
但是,R1没有将R2显示为邻居,R1也不接受来自R2的路由更新。这意味着R2会不断重置与R1的邻居邻接关系。在R1上,您会继续看到not on common subnet错误消息,而且您看不到EIGRP邻居表中列出的R2。
R1#show ip eigrp neighbor IP-EIGRP neighbors for process 01:20:54: IP-EIGRP: Neighbor 10.1.2.2 not on common subnet for Ethernet0 (10.1.) 01:21:08: IP-EIGRP: Neighbor 10.1.2.2 not on common subnet for Ethernet0 (10.1.) 01:21:22: IP-EIGRP: Neighbor 10.1.2.2 not on common subnet for Ethernet0 (10.1.) 01:21:36: IP-EIGRP: Neighbor 10.1.2.2 not on common subnet for Ethernet0 (10.1.)
这是因为EIGRP更新始终使用传出接口的主IP地址作为源地址。更改R1的主地址以匹配R2的主子网(本例中为10.1.2.1/24)。
您可以在同一物理网段上为某些网络配置两个单独的子网。在这种情况下,一个子网上的EIGRP路由器可能无法与另一个子网上的EIGRP路由器通信。如果运行Cisco IOS软件版本11.3、12.0或更高版本,可以使用no eigrp log-neighbor-warnings命令禁用not on common subnet错误消息。
注意:Cisco一般不建议使用no eigrp log-neighbor-warnings命令。该命令在EIGRP进程使用的所有接口上禁用not on common subnet错误消息。使用命令并酌情处理。
在EIGRP路由器配置模式下配置no eigrp log-neighbor-warnings命令。
Router#configure terminal Router(config)#router eigrp 1 Router(config-router)#no eigrp log-neighbor-warnings
EIGRP使用组播hello数据包来与其他EIGRP邻居通信。当EIGRP收到来自子网中未在其接收接口上配置的IP地址的EIGRP hello数据包时,会生成not on common subnet错误消息。
以下是此错误消息的一般原因:
接口或交换机端口配置错误或布线问题。
邻居接口上的主/辅助IP地址不匹配。
交换机/集线器正在将组播数据包泄漏到其他端口。
如果使用LAN交换机,则VLAN可能已将路由器连接在一起。
另一台路由器使用与此路由器相同的子网/VLAN上的EIGRP通告,并且AS编号配置错误。
要解决此问题,请检查以下项目:
验证电缆连接正确。
仔细检查本地路由器和相邻路由器上的接口配置是否配置了错误的IP地址。
检验接口的主地址是否与邻居路由器的主地址位于同一子网中。
如果EIGRP邻居连接通过LAN集线器加入,请使用单独的集线器来分隔每个逻辑LAN网段的广播域,或配置no eigrp log-neighbor-warnings来消除错误。
如果涉及交换机,请检查交换机配置,确保不同的LAN网段未配置为位于共享同一广播域的同一VLAN中。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
27-Mar-2006 |
初始版本 |