目录

简介

先决条件

要求

使用的组件

规则

配置

网络图

配置

验证

故障排除

不再相邻

备用 IP 地址

错误消息的一般原因

相关信息

简介

本文解释为什么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 的更多信息，请参考下列文档：

- 路由基本知识

- EIGRP 支持页

使用的组件

本文档中的信息基于Cisco 2500系列路由器上的Cisco IOS软件版本12.2(10b)。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息，请参阅 Cisco 技术提示规则。

配置

本部分提供有关如何配置本文档所述功能的信息。

注意：使用命令查找工具(仅限注册客户)可查找有关本文档中使用的命令的详细信息。

网络图

思科建议您使用同一子网上的主IP地址配置网段上的所有路由器。此示例显示了常见的EIGRP配置：

配置

本文档使用以下配置：

- R1

- R2

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 地址

如果网络未正确配置，您也可以在使用辅助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中。

相关信息

- EIGRP 支持页

- EIGRP白皮书

- 技术支持和文档 - Cisco Systems