简介
本文档介绍Microsoft Windows Vista及更高版本的用户收到的“重复IP地址0.0.0.0”错误消息及其解决方法。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
问题
在Microsoft Windows Vista及更高版本中,Microsoft引入了一种新机制,用于在发生动态主机配置协议(DHCP)进程时检测网络上的重复地址。RFC 5227中介绍了这一新的检测流程。
2.1.1节中定义了此检测流程的一个触发器。定义如下:
此外,如果在此时间段内,主机收到任何地址解析协议(ARP)探测功能,其中数据包的“目标IP地址”是探测地址,而数据包的“发送方硬件地址”不是任何主机接口的硬件地址,则主机应同样将此视为地址冲突,并向上述配置代理发出错误信号。如果两台(或更多)主机因某种原因无意中配置了相同地址,并且两台主机同时正在探测该地址以确认是否可以安全使用,则可能会发生这种情况。
Cisco IOS®使用源自地址0.0.0.0的地址地址的地址解析协议(ARP)探测功能来在IP设备跟踪发生时维护IP设备跟踪缓存,并且在Cisco IOS交换机上启用使用该功能的功能(例如802.1x)。IP设备跟踪的目的是让交换机获取并维护通过IP地址连接到交换机的设备列表。探测功能不会填充磁道条目。它用于在获取条目后激活和维护表中的条目。然后,在将访问控制列表(ACL)应用到接口以将ACL中的源地址替换为客户端IP地址时,将使用此IP地址。当访问列表与802.1x或思科交换机上的任何其他Flex-Auth功能配合使用时,此功能至关重要。
IP地址重复的原因
如果交换机在Microsoft Windows PC处于重复地址检测阶段时发出客户端的ARP探测功能,则Microsoft Windows会将该探测功能检测为重复的IP地址,并显示一条消息,指出在网络上发现0.0.0.0的重复IP地址。PC不会获取IP地址,用户必须手动释放/更新地址,断开并重新连接到网络,或者重新启动PC以获取网络访问权限。
下面是故障数据包序列的示例:
解决方案
有多种方法可用于解决此问题。以下是可能的解决方法列表:
- 防止此问题的最有效方法是配置交换机,以便它发送不符合RFC的ARP探测功能,以便从PC所在的VLAN中的交换机虚拟接口(SVI)获取探测功能。如果为虚拟局域网(VLAN)配置了SVI,并且接下来使用两个命令之一,则IP设备跟踪(IPDT)探测中的发送方IP地址永远不会是0.0.0.0。因此,可以确定不会发生重复IP地址错误。
此命令格式适用于较早的代码版本:
ip device tracking probe use-svi
此配置当前不会触发Microsoft Windows中的重复地址检测错误消息。此方法的注意事项是,运行DHCP的Microsoft Windows客户端所在的每个VLAN中的每台交换机上都必须存在SVI。此方法难以扩展,因此Cisco建议使用IP设备跟踪探测延迟作为主要方法。SVI目前在6500系列交换机平台上不可用。此命令在2900、3500和3700系列交换机平台上的Cisco IOS版本12.2(55)SE和4500系列交换机平台上的15.1(1)SG版本中实施。
此命令格式适用于较新的代码版本:
ip device tracking probe auto-source fallback
[override]
此最新命令行界面(CLI)命令是在Cisco IOS版本15.2(2)E中通过Cisco Bug ID CSCtn27420引入的。添加此命令是为了允许用户定义的ARP请求源IP地址,而不是要求使用默认源IP地址0.0.0.0。新的全局命令 ip device tracking probe auto-source fallback 0.0.0.x 255.255.255.0 override
允许用户在子网中使用主机地址0.0.0.x,以避免任何重复的IP地址问题。 如果特定VLAN没有SVI,则使用回退host-ip作为探测源。
- 用于解决此问题的主要非SVI替代方法是延迟来自交换机的探测,以便Microsoft Windows有时间完成重复IP地址检测。这仅适用于接入端口和链路连接场景。输入以下命令以延迟探测:
ip device tracking probe delay 10
RFC为重复地址检测指定一个十秒窗口。如果延迟设备跟踪探测,则几乎在所有情况下都会解决此问题。除了探测延迟,当交换机检测到来自PC的探测时,延迟也会重置。例如,如果探测计时器倒计到五秒钟,并且检测到来自PC的ARP探测,则该计时器重置为十秒。 如果同时启用DHCP监听,此窗口可以进一步减小,因为这样会重置计时器。 在极少数情况下,PC在交换机发送其探测之前发送一个ARP探测毫秒,这仍会触发向最终用户发送重复的地址消息。此命令在2900、3500和3700系列交换机平台的Cisco IOS版本15.0(1)SE、4500系列交换机平台的15.0(2)SG和6500系列交换机平台的12.2(33)SXI7版中引入。
- 用于解决此问题的另一种方法涉及对客户端进行故障排除,以确定链路联机后延迟进行重复地址检测的原因。交换机无法确定此过程发生的时间,因此请估计为探测延迟设置的时间以防止冲突。为了有效排除重复地址检测发生如此晚的原因,有关IP设备跟踪探测功能行为的进一步信息非常有用。
在以下两种情况下发送ARP探测:
- 与IPDT数据库中的当前条目关联的链路从DOWN状态变为UP状态。
- 已处于UP状态的链接与IPDT数据库中的条目相关联,其探测间隔已过期。
输入以下命令设置IP设备跟踪探测间隔:
ip device tracking probe interval
默认间隔是三十秒。要查看此信息,请输入以下命令:
show ip device tracking all
IP Device Tracking = Enabled
IP Device Tracking Probe Count = 3
IP Device Tracking Probe Interval = 30
IP Device Tracking Probe Delay Interval = 0
------------------------------------------------------------
IP Address MAC Address Vlan Interface STATE
------------------------------------------------------------
10.0.0.1 a820.661b.b384 301 GigabitEthernet0/1 INACTIVE
Total number interfaces enabled: 1
Enabled interfaces:
Gi0/1
初始条目从DOWN状态变为UP状态后,除非交换机在探测延迟间隔内看不到来自该设备的流量,否则不会发送进一步的探测。此外,如前所述,只有当PC发送ARP探测毫秒后,交换机才发送ARP探测(同时),冲突才会发生。
相关信息