Wyłącz IPv6 na adresie sprzężenia zwrotnego (host lokalny, nazwa komputera,…)

16

Próbowaliśmy zainstalować oprogramowanie innej firmy na nowym komputerze z systemem Windows Server 2008 R2 i stwierdziliśmy, że wszystko działa, z wyjątkiem uzyskiwania dostępu do usług lokalnych za pośrednictwem adresów sprzężenia zwrotnego, takich jak localhostlub nazwa komputera (np., VPS-WebKtóry rozwiązuje localhost). Nie używamy IPv6 i chcielibyśmy go wyłączyć, dopóki oprogramowanie nie będzie kompatybilne.

Próbowałem użyć tych instrukcji wyłączania protokołu IPv6 w systemie Windows 2008 R2, ale nie spowodowało to wyłączenia protokołu localhost. Pingowanie localhostlub VPS-Webnadal powróci ::1:zamiast 127.0.0.1. Mogę użyć, ping localhost -4aby uzyskać poprawny adres, ale IPv6 ma pierwszeństwo przed IPv4, więc oprogramowanie innych firm otrzymuje tylko adres IPv6.

Greg Bray
źródło
Czy próbowałeś skontaktować się ze sprzedawcą, aby sprawdzić, czy ma obejście? Ping żąda adresu IPv6, dlatego otrzyma :: 1, aplikacje, które nie obsługują IPv6, nie otrzymają tych adresów.
Chris S
Oprogramowanie jest obrzydliwością różnych komponentów (JAVA, Tomcat, Apache, MSSQL, SAP, JDBC, WMI), z których każdy może stanowić problem. Nie używam IPv6, więc chciałbym go wyłączyć. Niepokoi mnie również to, że nie wydaje się, aby można było to zrobić dla adaptera sprzężenia zwrotnego.
Greg Bray

Odpowiedzi:

12

Początkowo sprawdziłem plik hosta, jak sugerował SilverbackNet, ale na serwerze Windows 2008 R2 jest to plik domyślny:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

#wskazuje komentarz w pliku hosta, więc wszystkie wpisy są komentowane, a pierwszy wiersz jest nieco mylący. Potem zauważyłem, że były dwa wpisy dla localhost, które zostały skomentowane, więc spróbowałem odkomentować IPv4 i zadziałało! Powinienem był spróbować tego pierwszego, ale pierwsza linia mnie wytrąciła z równowagi. Użycie poniższego pliku hosta do pingowania nazwy komputera lub hosta lokalnego zawsze zwróci adres IPv4, co rozwiązuje problem z oprogramowaniem innej firmy!

# localhost name resolution is handled within DNS itself.
#   ::1         localhost
127.0.0.1       localhost
127.0.0.1       VPS-Web
Greg Bray
źródło
Czy to usunęło ipv6 ([::]) nasłuchujący w netstat?
Jared Burrows
To nie. [::] to odpowiednik IPv6 0.0.0.0, który reprezentuje wszystkie dostępne adresy IP w systemie. Powyższa poprawka dotyczy adresu pętli lokalnej hosta lokalnego. Mam zarówno powyższe ustawienia, jak i klucz rejestru DisabledComponents = 0xffffffff i nadal widzę aplikacje nasłuchujące na [::]. Nie wiem, czy jest jakiś sposób, aby całkowicie wyłączyć IPv6.
Greg Bray,
Dzięki za potwierdzenie mojego problemu! Właśnie się upewniałem :)
Jared Burrows
To nie działało dla mnie. Wyczyściłem pamięć podręczną dns ​​i uruchomiłem ponownie, ale nadal zwraca adres IPv6 ...
jj_
5

Ustawienie „DisabledComponents” = 0x20 poniżej

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters \

skonfiguruje tę maszynę do używania IPv4 zamiast IPv6 w zasadach prefiksów.

Utwórz klucz rejestru, jeśli nie istnieje.

Jakiś facet
źródło
2

Początkowy wątek ServerFault dotyczący używania DisabledComponentswartości rejestru jest naprawdę najlepszym sposobem na to. Poprawianie plików hostów nigdy nie powinno być konieczne w dobrze funkcjonującej sieci. Ulepszenie rejestru jest również znacznie łatwiejsze do wdrożenia i przywrócenia za pomocą zasad grupy, jeśli masz usługę Active Directory.

Powodem, dla którego to nie działało, jest to, że to DisabledComponentsustawienie rejestru jest odczytywane jako zestaw flag bitowych, a nie tylko włączone lub wyłączone. Oto oficjalna dokumentacja firmy Microsoft na ten temat:
Jak wyłączyć IP w wersji 6 (IPv6) lub jego określone składniki w systemie Windows 7, Windows Vista, Windows Server 2008 R2 i Windows Server 2008

Krótka wersja polega na tym, że aby całkowicie wyłączyć IPv6 w systemie Vista / 2008 i nowszych, ustaw wartość DisabledComponentsna 0xff. Robię to na każdym zarządzanym przeze mnie komputerze, na którym nie korzystamy jawnie z protokołu IPv6. Ma przyjemny efekt uboczny polegający na znacznym skróceniu wyjścia ipconfigpolecenia.

Ryan Bolger
źródło
2
Zgodnie z Twoim linkiem ( support.microsoft.com/kb/929852#letmefixit ) ten wpis rejestru pozwala na wyłączenie IPv6 w wielu miejscach Z WYJĄTKIEM sprzężenia zwrotnego ...
Frank Nocke
1
Masz rację. Istnieją jednak wartości, które zmieniają domyślną funkcjonalność sieci na preferowanie IPv4 zamiast IPv6, co skutecznie rozwiąże problemy OP z połączeniem z hostem lokalnym lub nazwą komputera NetBIOS.
Ryan Bolger
Żadne z nich tak naprawdę nie działało dla mnie w systemie Windows Server 2012R2. Obejmuje to próbę modyfikacji hosta, ustawienie rejestru DisabledComponents oraz wiele innych pomysłów, które widziałem gdzie indziej. Działa w systemie Windows Server 2008, ale nie mam rozwiązania dla 2012R2.
Scott White
Musisz ponownie uruchomić komputer po zmodyfikowaniu wartości DisabledComponents. Jeśli ustawisz go na 0xffffffff, nie ma mowy, żeby nie działał nawet na 2012R2. Wyniki uruchomienia ipconfig nie powinny zwracać niczego, co jest związane z IPv6 i jako takie pingowanie localhost powinno pingować adres v4.
Ryan Bolger,
Nowe odkrycie pokazuje, że poprawna wartość powinna wynosić 0xFF zamiast 0xFFFFFFF, aby uniknąć 5-sekundowego opóźnienia rozruchu. Zobacz zaktualizowany Microsoft KB929852 (To wciąż nie wyłącza sprzężenia zwrotnego)
Wandersick
2

Czy próbowałeś usunąć wpis z pliku hosts w% systemroot% \ system32 \ drivers \ etc? To powinno wystarczyć, jeśli potrzebujesz tylko „localhost”, aby zawsze być IPv4. Jeśli jednak opiera się na nazwie serwera, prawdopodobnie nie zadziała.

SilverbackNet
źródło
1
Plik hosts w systemie Windows znajduje się w folderze% systemroot% \ system32 \ drivers \ etc, a nawet jeśli nie zawiera odwołania ipv6 dla lokalnego hosta pingujący localhost otrzyma odpowiedź :: 1.
Helvick
Otrzymasz odpowiedź 127.0.0.1, jeśli
zamapujesz
0

Możesz także przejść do właściwości samej karty sieciowej i odznaczyć pole IPv6, pozostawiając włączone IPv4. Powinien załatwić sprawę.

JohnThePro
źródło
3
Nie działa w przypadku adresu sprzężenia zwrotnego ...
Greg Bray
awww! :( haha ​​!!
JohnThePro
Wyłącza to tylko interfejs LAN. Tunel i sprzężenia zwrotnego są nadal połączone tutaj (zweryfikować poprzez netsh interface ipv6> show interface)
Chadddada
-3

Spróbuj dodać wiersz do pliku hosts, na przykład:

::1 VPW-Web

Powinno to umożliwić resolverowi uzyskanie VPW-Webnazwy pętli zwrotnej IPv6.

BillThor
źródło