Windows 2008 ignoriert unbegründete ARP-Anforderungen


38

Wir haben kürzlich ein Problem nach einem Failover unseres Routers festgestellt, bei dem unsere Windows 2008-Boxen nach einem Failback nicht mehr mit dem primären Router kommunizierten.

Als wir gruben, hatten sie immer noch den ARP-Eintrag vom sekundären Router. Laut dem TechNet-Blog ist dies beabsichtigt :

Erstens aktualisiert Windows Vista oder Windows Server 2008 den Nachbarcache nicht, wenn eine ARP-Übertragung empfangen wird, es sei denn, sie ist Teil einer Broadcast-ARP-Anforderung für den Empfänger . Dies bedeutet, dass beim Senden eines kostenlosen ARP in einem Netzwerk mit Windows Vista und Windows Server 2008 der Cache dieser Systeme bei einem IP-Adressenkonflikt nicht mit falschen Informationen aktualisiert wird.

Zweitens scheint der Windows-Nachbar-Cache (Arp-Cache) nur dann aktualisiert zu werden, wenn der Computer nicht mehr mit dem Computer kommunizieren kann, der sich derzeit im Cache befindet. Es werden keine gelegentlichen ARP-Anforderungen gesendet, um sicherzustellen, dass der Cache nicht veraltet ist. Während dies während des ersten Failovers kein Problem darstellt, führt dies während des Failbacks, wenn beide Boxen aktiv sind, dazu, dass Fenster weiterhin mit der sekundären Box kommunizieren.

Gibt es eine Möglichkeit, Windows 2008 zu zwingen, unbegründete ARP-Anforderungen anzunehmen?


Antworten:


8

Nach dem Testen scheint Hotfix 2582281 das Problem zu beheben . Sie können den Hotfix erhalten, ohne den Support bezahlen zu müssen, indem Sie die Hotfix-Anforderungsseite verwenden .

Ich habe einen Test mit arpingWindows 2008 R2 durchgeführt. Ich habe einer Maschine mit demselben L2-Netzwerksegment die sekundäre IP-Adresse 64.34.119.80 hinzugefügt. Ich habe dann den folgenden Befehl von einem anderen Rechner aus dem Netzwerk ( sudo arping -U 64.34.119.80 -I bond0 -c1) ausgegeben . Gleich danach habe ich 64.34.119.80 aus der Windows-Box gepingt, nachdem ich gesehen hatte, dass es die Arp in Wireshark empfängt. Ich habe dann den Hotfix angewendet und den Test wiederholt.

Außerdem muss der Befehl arping anscheinend nicht die Unicast-MAC-Adresse, sondern die Broadcast-MAC-Adresse verwenden, da dies der einzige GARP-Typ ist, der in meinen Tests ignoriert wurde.

Vor dem Patch:

Bildbeschreibung hier eingeben

Bei dieser Wireshark-Erfassung wird der Ping nach der GARP-Anforderung nicht an das MAC-Ziel gesendet, von dem die GARP stammt, sodass Sie sehen können, dass die GARP ignoriert wird.

Nach dem Patch:

Bildbeschreibung hier eingeben

In diesem Test scheint die GARP-Anforderung nach dem Patch berücksichtigt zu werden, da der Ping an die MAC-Adresse gesendet wird, von der GARP stammt.

Aus diesen Tests geht hervor, dass Hotfix 2582281 das Problem behebt, dass GARP-Broadcasts ignoriert werden.


4

Als ich gerade mein eigenes TCPIP-Problem untersuchte, stieß ich auf diesen sehr interessanten Hotfix:

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

Ursache:

Dieses Problem tritt auf, weil der TCP / IP-Stapel des Anwendungsservers unbegründete ARP-Anforderungen (Address Resolution Protocol) fälschlicherweise ignoriert.

Das hört sich sehr nach dem an, worauf Sie stoßen. Und es ist auch ein brandneuer Hotfix, der am 22.07.2011 veröffentlicht wurde.


Sieht aus wie diese KB verschwunden?
Kyle Brandt

@KyleBrandt Es war da und jetzt ist es weg. Ich frage mich, ob das Problem jetzt in einem Service Pack / Update an anderer Stelle behandelt wird, möglicherweise in folgendem: support.microsoft.com/kb/2578103
sysadmin1138

3

Versuchen Sie, netsh interface ipv4 set interface x basereachable=ywo x der Schnittstellenindex und y das ARP-Timeout in Millisekunden ist, die Sie möchten. Denken Sie daran, dies an einer Eingabeaufforderung mit Administratorrechten zu tun!


2
Das passt eigentlich nur die Zeit zwischen an, wenn der Nachbar-Cache denkt, dass der Eintrag veraltet oder erreichbar ist. Wenn beide HA-Boxen zum Zeitpunkt des Failbacks aktiv sind, wird es von Windows nie als abgestanden und erneut aktiviert angesehen.
Zypher

1
Ich glaube nicht, dass es eine Möglichkeit gibt, Windows dazu zu zwingen, unentgeltliche ARPs zu akzeptieren. Tatsächlich musste ich die erreichbare Basiszeit verkürzen, um in einem anderen Szenario ein Failover / Failback zu erzielen.

3

Welches Redundanzprotokoll für den ersten Hop verwenden Sie?

Mir ist bewusst, dass dies Ihre Frage nicht direkt beantwortet. VRRP (und sein proprietärer Vorgänger HSRP) verwenden jedoch eine gemeinsam genutzte MAC-Adresse, die bei einem Wechsel des Master-Routers auf einen neuen Switch-Port umgeschaltet wird. Dies umgeht die Notwendigkeit einer völlig unentgeltlichen ARP.


1

Voraussetzungen
1. WinPCAP 4.0.1 (Version 4.1.2 funktioniert nicht)
- http://www.winpcap.org/archive/4.0.1-WinPcap.exe (Windows-Version)
2. Wireshark 1.6.7
3. IPv6 deaktiviert auf Netzwerk - Schnittstelle, aufgrund von Beschränkungen arping
4. arping
- http://mathieu.carbou.free.fr/pub/arping/2.06/arping.zip (Windows Binary)

Ausführung
1. Inteface Namen Get
- „E: \ Program Files \ Wireshark \ tshark.exe "-D
- Von Wireshark-Schnittstellendetails
2. Führen Sie Arping aus, um eine
unbegründete ARP-Anforderung zu senden -c 3 -S 10.20.30.50
Wobei 10.20.30.50 die IP-Adresse ist, die Sie dem Netzwerk (Router) mitteilen möchten


-4

Ich bin auf einen Link von http://blog.serverfault.com/post/windows-2008-and-broken-arp/ gestoßen .

Hätten Sie nach Stackoverflow gefragt, hätten Sie möglicherweise eine viel schnellere Lösung gefunden.

Schnüffeln Sie die GARP-Pakete und führen Sie arp -s inet_addr eth_addr aus.

Tun Sie dies nicht, wenn die geringste Wahrscheinlichkeit besteht, dass ein feindlicher Computer in Ihr LAN eingebunden wird.


Das ist nicht wirklich eine Lösung. Es ist eine Problemumgehung, die auf einer Maschine funktioniert. Das Verhalten ist immer noch gebrochen. Sie müssen lediglich die Adresse in der ARP-Tabelle manuell ändern, ohne die eigentliche Ursache des Verhaltens zu beheben.
Zypher
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.