在我以前的雇主那里,每当我们有两个具有相同 IP 地址的系统时 - 特别是如果它们是 Windows 系统,我们的系统上就会弹出一个窗口,指出:“Windows 检测到 IP 冲突”。
在我的新雇主那里,我们遇到了 IP 冲突,但该消息没有出现。是什么原因导致 Windows 的行为不同?我们的网络交换机上是否有需要启用的功能,或者防火墙/网关级别是否有问题?
我应该说明两个网络中的 IP 地址都是静态分配的 - 没有使用 DHCP。
答案1
如果您通过静态分配管理地址,可能会发生冲突。
从交换机的角度来看,很难区分何时发生冲突。如果您实施的集群具有可在节点之间进行故障转移的共享地址,则预计在某个时间点会发生地址冲突(直到整个网络都收到公告)。
DHCP是此类问题的解决方案(即使在特定情况下也可能出现冲突)。根据网络规模,我强烈建议考虑使用 DHCP(它还为您提供了许多其他选项,您可以轻松处理)。
编辑:
似乎人们对使用 DHCP 的好处有些困惑。在您的网络中使用 DHCP(或者在通过中继等在防火墙上设置的多个网络中使用 DHCP),您将拥有一个用于关键网络配置的中心点,该中心点提供地址、网关和其他运行时配置,如 DNS、NTP 和许多其他服务。
因此,DHCP 可以很好地帮助您组织网络中地址的使用和分配。到目前为止,它还不能替代任何文档 - 在当前状态下 [因为存在冲突] 似乎缺少这些文档。
答案2
查看 RFC5227 和下面的 KB。它进一步解释了该过程。如您所见,它使用 ARP 数据包,可以在交换机级别/本地防火墙级别阻止该数据包。
- 随后被动检测到网络上的另一台主机无意中使用了相同的地址。即使所有主机都采取预防措施以避免使用已在使用的地址,如果两台主机在初始接口配置时无法通信,仍然会发生冲突。如果主机暂时超出范围,则无线网络接口可能会发生这种情况;如果两个以太网集线器之间的链路在地址配置时无法正常工作,则以太网接口也可能发生这种情况。设计良好的主机不仅会处理接口配置期间检测到的冲突,还会处理稍后检测到的冲突,在主机使用该地址的整个持续时间内(第 2.4 节)。
最重要的是,检查 kb:https://support.microsoft.com/en-us/kb/120599
在系统启动时,当 IP 协议初始化时,它会发送一个包含其自己的 MAC 和 IP 地址的 ARP 请求,以便其他计算机可以更新其 ARP 缓存。如果已经有计算机使用该 IP 地址,则“较旧”的计算机将使用包含其 MAC 和 IP 地址的 ARP 回复进行响应,表示存在冲突。不幸的是,许多其他计算机可能已经使用新映射更新了其 ARP 缓存。此时,正在初始化的“较新”的计算机需要做两件事:
修复所有受影响计算机上的 ARP 缓存。停止使用重复地址。运行 Microsoft TCP/IP 的计算机将发出新的 ARP 广播,以重新映射所有受影响计算机上的 ARP 缓存。此新 ARP 将包含 IP 地址旧所有者的 MAC 地址和 IP 地址。发送此 ARP 后,较新计算机上的 IP 协议将向用户报告问题,并且堆栈将关闭。在获得唯一地址之前,不应重新启动堆栈。请注意,如果加载了其他协议(例如 NetBEUI),计算机此时可能仍能运行。