Windows 2008忽略免费ARP请求


38

我们最近在路由器故障切换后发现了一个问题,即Windows 2008 Boxes在故障回复后未开始与主路由器通信。

当我们进行一些挖掘时,他们仍然具有来自辅助路由器的ARP条目。根据TechNet博客的说法,这是设计使然:

首先,如果接收到ARP广播,​​则Windows Vista或Windows Server 2008 不会更新邻居缓存,除非它是针对接收者的广播ARP请求的一部分。这意味着在通过Windows Vista和Widows Server 2008在网络上发送免费ARP时,如果存在IP地址冲突,这些系统将不会使用错误的信息来更新其缓存。

其次,似乎Windows邻居缓存(arp-cache)仅在机器无法与当前位于其缓存中的机器进行对话时才更新。它不会偶尔发出ARP请求以确保高速缓存未过期。尽管在初始故障转移期间这不是问题,但在两个框都处于活动状态的故障回复期间,这会导致Windows继续与辅助框通信。

有什么方法可以强制Windows 2008接受免费ARP请求?


Answers:


8

经过测试后,似乎Hotfix 2582281解决了该问题。您可以通过使用修补程序请求页面获得修补程序,而不必支付支持。

我使用arping未打补丁的Windows 2008 R2 对此进行了测试。我在具有相同网络L2网段的计算机上添加了辅助IP 64.34.119.80。然后,我从另一台计算机网络(sudo arping -U 64.34.119.80 -I bond0 -c1)发出了以下命令。之后,我看到Windows接收到Wireshark的arp后,便从Windows框中ping了64.34.119.80。然后,我应用了此修复程序并重复了测试。

另外,arping命令似乎不需要使用单播MAC地址,而需要使用广播MAC,因为这是我的测试中唯一忽略的GARP类型。

补丁之前:

在此处输入图片说明

在此Wireshark捕获中,GARP请求之后的ping 发送到GARP来自的MAC目标,因此您可以看到GARP被忽略了。

补丁之后:

在此处输入图片说明

在此测试中,在修补程序之后,由于将ping发送到GARP所来自的MAC地址,因此GARP请求似乎很荣幸。

因此,从这些测试看来,修补程序2582281修复了GARP广播被忽略的问题。


4

刚才研究我自己的TCPIP问题时,我偶然发现了这个非常有趣的Hotfix:

http://support.microsoft.com/kb/2582281

原因:

发生此问题的原因是应用程序服务器的TCP / IP堆栈错误地忽略了免费的地址解析协议(ARP)请求。

这听起来很像您遇到的问题。它也是一个全新的修补程序,发布于2011年7月22日,因此您第一次遇到该修补程序时就已经不在了。


看起来这个KB消失了吗?
凯尔·布​​兰特

@KyleBrandt在那里,现在不见了。我想知道问题是否现在在其他位置的Service Pack /更新中涵盖了,可能是这样的:support.microsoft.com/kb/2578103
sysadmin1138

3

请尝试netsh interface ipv4 set interface x basereachable=y在其中x是接口索引,而y是所需的ARP超时(以毫秒为单位)。记住要在具有管理员权限的命令提示符下执行此操作!


2
实际上,这仅调整邻居缓存认为条目过时与可访问之间的时间。如果在故障回复时两个HA框都处于打开状态,则Windows将永远不会将其视为过期并重新存档。
Zypher

1
我认为没有强迫Windows接受免费ARP的方法。实际上,由于这个原因,我不得不缩短基本可达时间,以在其他情况下实现故障转移/故障回复。

3

您使用什么第一跳冗余协议?

我知道这并不能直接回答您的问题,但是VRRP(及其专有的前身HSRP)使用一个共享的MAC地址,当主路由器更改时,该MAC地址将被翻转到新的交换机端口。这样就完全不需要了免费ARP。


1

先决条件
1. WinPCAP 4.0.1(4.1.2版本不起作用)-http
: //www.winpcap.org/archive/4.0.1-WinPcap.exe(Windows版)
2. Wireshark 1.6.7
3.禁用IPv6网络接口上,由于arping的限制
4的arping
- http://mathieu.carbou.free.fr/pub/arping/2.06/arping.zip(Windows可执行)

执行
1.获取Inteface名称
- “E:\ Program Files文件\ Wireshark \ tshark.exe“ -D-
从Wireshark接口详细信息
2.执行arping,发送ARP免费请求
-arping.exe -A -i \ Device \ NPF_ {4399F778-AF25-4B6D-AFFB-A1F2C7DFA667} 10.20.30.50 -c 3 -S 10.20.30.50
其中10.20.30.50是您要向网络宣告的IP地址(路由器)


-4

我在http://blog.serverfault.com/post/windows-2008-and-broken-arp/的链接上遇到了此问题。

如果您对stackoverflow进行了询问,您可能已经更快地进行了修复。

嗅探GARP数据包并运行arp -s inet_addr eth_addr。

如果您极有机会在您的LAN上安装一台敌对计算机,请不要这样做。


那不是真正的解决办法。这是一种在一台计算机上工作的解决方法。该行为仍未解决。所要做的只是手动更改arp表中的地址,而不是解决此行为的根本原因。
Zypher
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.