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 localhost
lub nazwa komputera (np., VPS-Web
Któ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 localhost
lub VPS-Web
nadal powróci ::1:
zamiast 127.0.0.1
. Mogę użyć, ping localhost -4
aby uzyskać poprawny adres, ale IPv6 ma pierwszeństwo przed IPv4, więc oprogramowanie innych firm otrzymuje tylko adres IPv6.
źródło
Odpowiedzi:
Początkowo sprawdziłem plik hosta, jak sugerował SilverbackNet, ale na serwerze Windows 2008 R2 jest to plik domyślny:
#
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!źródło
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.
źródło
Początkowy wątek ServerFault dotyczący używania
DisabledComponents
wartoś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
DisabledComponents
ustawienie 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ść
DisabledComponents
na0xff
. 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ściaipconfig
polecenia.źródło
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.
źródło
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ę.
źródło
Spróbuj dodać wiersz do pliku hosts, na przykład:
::1 VPW-Web
Powinno to umożliwić resolverowi uzyskanie
VPW-Web
nazwy pętli zwrotnej IPv6.źródło