Windows 2008 ignoruje nieuzasadnione żądania ARP


38

Niedawno zauważyliśmy problem po przełączeniu awaryjnym routera, w którym nasze pudełka z systemem Windows 2008 nie zaczęły rozmawiać z głównym routerem po przywróceniu po awarii.

Kiedy trochę kopaliśmy, nadal mieli wpis ARP z routera pomocniczego. Według blogu TechNet jest to zgodne z projektem:

Po pierwsze, system Windows Vista lub Windows Server 2008 nie zaktualizuje pamięci podręcznej sąsiada, jeśli zostanie odebrana transmisja ARP, chyba że jest ona częścią żądania ARP emisji dla odbiornika . Oznacza to, że gdy darmowy ARP zostanie wysłany do sieci z Windows Vista i Widows Server 2008, systemy te nie zaktualizują pamięci podręcznej o nieprawidłowe informacje, jeśli wystąpi konflikt adresów IP.

Po drugie, wydaje się, że pamięć podręczna sąsiada systemu Windows (pamięć podręczna arp) jest aktualizowana tylko wtedy, gdy komputer nie może już komunikować się z maszyną, która jest w jego pamięci podręcznej. Nie wysyła od czasu do czasu żądań ARP, aby upewnić się, że pamięć podręczna nie jest przestarzała. Chociaż nie jest to problem podczas początkowego przełączania awaryjnego, podczas powrotu po awarii, gdy oba pudełka są aktywne, powoduje to, że okna nadal rozmawiają z dodatkowym urządzeniem.

Czy istnieje sposób zmusić system Windows 2008 do akceptowania nieodpłatnych żądań ARP?


Odpowiedzi:


8

Po przetestowaniu wydaje się, że poprawka 2582281 rozwiązuje problem. Możesz uzyskać poprawkę bez konieczności płacenia za pomoc, korzystając z jej strony z żądaniem poprawki .

Przeprowadziłem test tego przy użyciu arpingi niezaładowanego systemu Windows 2008 R2. Dodałem dodatkowy adres IP, 64.34.119.80, do maszyny z tym samym segmentem sieci L2. Następnie wydałem następujące polecenie z innego komputera sieciowego ( sudo arping -U 64.34.119.80 -I bond0 -c1). Zaraz potem wysłałem ping do 64.34.119.80 z okna systemu Windows, po tym jak zobaczyłem, że otrzymałem arp w wireshark. Następnie zastosowałem poprawkę i powtórzyłem test.

Wydaje się również, że polecenie arping nie musi używać adresu MAC emisji pojedynczej, ale MAC transmisji rozgłoszeniowej, ponieważ jest to jedyny typ GARP ignorowany w moich testach.

Przed łatką:

wprowadź opis zdjęcia tutaj

W tym przechwytywaniu Wireshark polecenie ping po żądaniu GARP nie jest wysyłane do miejsca docelowego MAC, z którego pochodzi GARP, więc można zobaczyć, że GARP jest ignorowany.

Po aktualizacji:

wprowadź opis zdjęcia tutaj

W tym teście po łatce żądanie GARP wydaje się być honorowane, ponieważ ping jest wysyłany na adres MAC, z którego pochodzi GARP.

Z tych testów wydaje się, że poprawka 2582281 rozwiązuje problem ignorowania transmisji GARP.


4

Podczas badania własnego problemu TCPIP natknąłem się na tę bardzo interesującą poprawkę:

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

Przyczyna:

Ten problem występuje, ponieważ stos TCP / IP serwera aplikacji niepoprawnie ignoruje nieuzasadnione żądania protokołu rozpoznawania adresów (ARP).

To brzmi okropnie podobnie do tego, na co się natrafiasz. Jest to również zupełnie nowa poprawka, wydana 22.07.2011, więc nie było jej przy pierwszym uruchomieniu.


Wygląda na to, że ten KB zniknął?
Kyle Brandt,

@KyleBrandt Był tam, a teraz go nie ma. Zastanawiam się, czy problem jest teraz objęty dodatkiem Service Pack / aktualizacją w innym miejscu, być może ten: support.microsoft.com/kb/2578103
sysadmin1138

3

Spróbuj, netsh interface ipv4 set interface x basereachable=ygdzie x to indeks interfejsu, ay to limit czasu ARP w milisekundach, jaki chcesz. Pamiętaj, aby to zrobić z wiersza polecenia z uprawnieniami administratora!


2
To tak naprawdę tylko koryguje czas między momentem, gdy pamięć podręczna sąsiada uzna, że ​​wpis jest nieaktualny lub dostępny. Jeśli oba pola HA będą aktywne w momencie powrotu po awarii, system Windows nigdy nie zobaczy tego jako przestarzałego i ponownie uruchomionego.
Zypher

1
Nie sądzę, aby istniał sposób zmuszenia Windows do akceptowania nieodpłatnych ARP. W rzeczywistości musiałem skrócić podstawowy czas do osiągnięcia przełączenia awaryjnego / powrotu po awarii w innym scenariuszu z tego powodu.

3

Jakiego protokołu redundancji pierwszego skoku używasz?

Wiem, że to nie odpowiada bezpośrednio na twoje pytanie, jednak VRRP (i jego zastrzeżony przodek, HSRP) używają wspólnego adresu MAC, który jest przełączany na nowy port przełącznika, gdy zmienia się router główny. To całkowicie eliminuje potrzebę darmowego ARP.


1

Wymagania wstępne
1. WinPCAP 4.0.1 (wersja 4.1.2 nie działa)
- http://www.winpcap.org/archive/4.0.1-WinPcap.exe (wersja Windows)
2. Wireshark 1.6.7
3. Wyłączono IPv6 na interfejsie sieciowym, z powodu ograniczeń arping
4. arping
- http://mathieu.carbou.free.fr/pub/arping/2.06/arping.zip (Windows Binary)

Wykonanie
1. Uzyskaj nazwę interfejsu
- „E: \ Program Files \ Wireshark \ tshark.exe "-D
- Na podstawie szczegółów interfejsu Wireshark
2. Wykonaj arping, aby wysłać bezpłatne żądanie ARP
- arping.exe -A -i \ Device \ NPF_ {4399F778-AF25-4B6D-AFFB-A1F2C7DFA667} 10.20.30.50 -c 3 -S 10,20.30,50
Gdzie 10.20.30.50 to adres ipad, który chcesz ogłosić w sieci (routerze)


-4

Spotkałem to na linku z http://blog.serverfault.com/post/windows-2008-and-broken-arp/ .

Gdybyś zapytał o przepełnienie stosu, mógłbyś naprawić to znacznie szybciej.

Wąchaj pakiety GARP i uruchom arp -s inet_addr eth_addr.

Nie rób tego, jeśli istnieje największa szansa na uzyskanie wrogiej maszyny w twojej sieci LAN.


To naprawdę nie jest poprawka. Jest to obejście, które działa na jednym komputerze. Zachowanie jest nadal zepsute. Wystarczy ręcznie zmienić adres w tabeli arp, nie ustalając pierwotnej przyczyny tego zachowania.
Zypher,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.