Błąd Tcpip: Żądanie nie powiodło się z powodu użycia wszystkich takich portów

8

Dzisiaj moja maszyna przestała mieć dostęp do Internetu. Nadal mogę uzyskać dostęp do niektórych zasobów sieci lokalnej. Kiedy spojrzałem na dziennik błędów, zobaczyłem następujące ostrzeżenie tcpip:

Żądanie przydzielenia efemerycznego numeru portu z globalnej przestrzeni portów UDP nie powiodło się z powodu użycia wszystkich takich portów.

Uruchomiłem netstat -anobi na wyjściu DNScache jest wymieniony tysiące razy (od portu 50000 do 65536).

wyjście netstat

To mi się po raz drugi zdarzyło. Zabicie procesu DNSClient na podstawie instrukcji tutaj znalezionych zadziałało, ale chciałbym dowiedzieć się, co powoduje ten problem.

Aktualizacja: gdy ten problem się zdarza, nadal mogę uzyskać połączenie z programami, które używały DNS do rozwiązania nazwy hosta, zanim problem się zaczął. Na przykład mogę kontynuować rozmowę z przyjaciółmi z Pidginem. Mogę również łączyć się ze stronami internetowymi bezpośrednio za pomocą adresu IP.

cmorse
źródło
Aktualizacja: zdarzało mi się to wiele razy w tym tygodniu. Naprawdę chciałbym uzyskać pomoc w wyśledzeniu przyczyny problemu, dlatego dodam nagrodę.
cmorse
Sprawdź ustawienia routera, ponieważ kilka z nich ma ustawienie ograniczające liczbę połączeń z tym samym hostem, spróbuj ponownie uruchomić router, aby sprawdzić, czy to rozwiąże problem, a jeśli tak, to sprawdź ustawienia zaawansowane w obszarze DoS i poszukaj liczby połączeń na hosta
Ian
@ Ian Używam dd-wrt na moim routerze. Zalogowałem się i sprawdziłem, a było 143 aktywnych połączeń IP (3% maksimum). Mogę sprawdzić ponownie jutro, aby sprawdzić, czy liczba jest wyższa, gdy wystąpi problem. Widziałem, że liczba połączeń przebiega znacznie ponad 1000 bez żadnych problemów.
cmorse
1
Faktycznie dzieje się tutaj to, że usługa Dnscache wiąże wszystkie porty nasłuchiwania, których może używać, a następnie zawiesza się, gdy próbuje powiązać inny. Nie znalazłem informacji o przyczynie i nie mam Windows 8 do eksperymentowania; w międzyczasie radzę wyłączyć usługę Dnscache za pomocą konsoli usług (Start -> Uruchom -> services.msc, OK). Uruchamianie bez niego zapobiegnie buforowaniu wyników rozpoznawania nazw, co nieco spowolni żądania sieciowe, ponieważ potrzeba więcej zapytań DNS, ale powinno położyć kres znacznie gorszemu problemowi, który widzisz.
Aaron Miller
1
Idealnie, ja też - ale może to zająć trochę czasu, a wyłączenie usługi wygląda na to, że może oferować przyzwoitą stopgap, aby rozpoznawanie DNS nie zawiodło losowo i wymagało ręcznej interwencji do wznowienia, od teraz do momentu przedstawienia rozwiązania samo.
Aaron Miller

Odpowiedzi:

6

Rozgryzłem to! Była to HealthAlertsSvc (usługa Windows Server Health Service). Wygląda na to, że usługa zdrowotna na moim komputerze z systemem Windows Home Server 2011 uległa awarii, co ujawniło błąd w HealthAlertsSvc po stronie klienta, który nie zwalniał poprawnie portów UDP.

Aby dokładnie sprawdzić, czy tak właśnie było. Wyłączyłem usługę po stronie serwera i na pulpicie. Gdy tylko ponownie włączyłem usługę na pulpicie, liczba połączeń UDP, które pozostały otwarte, zaczęła powoli rosnąć. Po ponownym uruchomieniu usługi na serwerze duża liczba połączeń UDP została natychmiast zwolniona, a lista nie powiększyła się.

cmorse
źródło