If-Koubou

Jaka jest różnica między lokalizacją a lokalnym adresem IP?

Jaka jest różnica między lokalizacją a lokalnym adresem IP? (Jak)


Jeśli robisz dużo majsterkowania sieciowego, konfigurujesz aplikacje sieciowe i narzędzia serwerowe lub po prostu ciekawi, zauważyłeś, że istnieje różnica między lokalnym hostem a lokalnym adresem IP. Czytaj dalej, aby poznać różnice.

Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, społecznościowego forum z pytaniami i odpowiedziami.

Pytanie

Czytnik SuperUser Diogo chce wiedzieć, dlaczego polecenie ping traktuje lokalny host i lokalny adres IP inaczej, gdy na powierzchni wydają się być tym samym:

Używanie poleceń cmd i ping w systemie Windows dało mi następujące wyniki:

Pingowanie "localhost":

Pingowanie "192.168.0.10" (lokalny adres IP):

Czy obie sytuacje nie są dokładnie takie same?

Mam na myśli, że pinguję ten sam interfejs, tę samą maszynę i ten sam adres. Dlaczego otrzymuję tak różne wyniki?

Oczywiście jest jakaś różnica, ale co dokładnie się dzieje, kiedy przełączasz się między tymi dwoma?

Odpowiedź

Współpracownik SuperUser Tom Wijsman oferuje następujące wgląd w subtelne różnice między tymi dwoma:

Nie pingujesz tego samego interfejsu, bez fizycznych interfejsów nadal masz "hosta lokalnego".

TwójLokalny Gospodarz jest używany w odniesieniu do komputera z "wewnętrznego" adresu IP, a nie z "zewnętrznych" adresów IP komputera. Tak więc pakiety ping nie przechodzą przez żaden fizyczny interfejs sieciowy; tylko poprzez interfejs zwrotny wirtualnej pętli, który bezpośrednio wysyła pakiety z portu do portu bez fizycznych przeskoków.

Możesz nadal zastanawiać się, dlaczegoLokalny Gospodarz postanawia::1, podczas gdy tradycyjnie oczekiwalibyśmy, że rozwiąże on adres IPv4127.0.0.1. Zauważ, że.Lokalny Gospodarz jest tradycyjnie TLD (patrz RFC 2606), który wskazuje powrót do adresu IP pętli (dla IPv4, patrz RFC 3330, zwłaszcza 127.0.0.0/8).

Patrząc w góręLokalny Gospodarz za pomocąnslookup daje nam:

nslookup localhost

... Nazwa: localhost Adresy: :: 1 127.0.0.1 

W związku z tym system Windows woli używać adresu IP pętli IPv6::1 (patrz dokument RFC 2373), ponieważ jest on wymieniony jako pierwszy.

Okay, więc skąd się bierze, spójrzmy na plik hosts.

wpisz% WINDIR% \ System32 \ Drivers \ Etc \ Hosts

... Rozwiązanie # localhost name jest obsługiwane w samym DNS. # 127.0.0.1 localhost # :: 1 localhost ... 

Hmm, musimy spojrzeć na ustawienia DNS systemu Windows.

W tym artykule z bazy wiedzy podano informacje o ustawieniu wpływającym na preferencje systemu Windows, wyróżnione pogrubieniem:

  1. W Edytorze rejestru zlokalizuj, a następnie kliknij następujący podklucz rejestru:
    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters 
  2. Kliknij dwukrotnie pozycję DisabledComponents, aby zmodyfikować pozycję DisabledComponents. Uwaga: Jeśli wpis DisabledComponents jest niedostępny, musisz go utworzyć. Aby to zrobić, wykonaj następujące kroki:
    1. W menu Edycja wskaż polecenie Nowy, a następnie kliknij wartość DWORD (32-bitowa).
    2. Wpisz DisabledComponents, a następnie naciśnij klawisz ENTER.
    3. Kliknij dwukrotnie pozycję DisabledComponents.
  3. Wpisz dowolną z następujących wartości w polu Dane wartości:, aby skonfigurować protokół IPv6 do żądanego stanu, a następnie kliknij przycisk OK:
    • Rodzaj0 aby włączyć wszystkie komponenty IPv6. (Domyślne ustawienie Windows)
    • Rodzaj0xffffffff aby wyłączyć wszystkie składniki IPv6, z wyjątkiem interfejsu sprzężenia zwrotnego IPv6. Ta wartość powoduje również skonfigurowanie systemu Windows do preferowania używania protokołu IP w wersji 4 (IPv4) za pośrednictwem protokołu IPv6 przez modyfikowanie wpisów w tabeli zasad przedrostków. Aby uzyskać więcej informacji, zobacz Wybór źródła i adresu docelowego.
    • Rodzaj0x20 preferować IPv4 przez IPv6, modyfikując wpisy w tabeli strategii przedrostków.
    • Rodzaj0x10 aby wyłączyć protokół IPv6 na wszystkich interfejsach typu "nontunnel" (zarówno w interfejsie LAN, jak i w protokołach Point-to-Point Protocol [PPP]).
    • Rodzaj0x01 aby wyłączyć IPv6 na wszystkich interfejsach tunelowych. Są to między innymi automatyczny protokół adresowania tuneli (ISATAP), 6to4 i Teredo.
    • Rodzaj0x11 aby wyłączyć wszystkie interfejsy IPv6 z wyjątkiem interfejsu sprzężenia zwrotnego IPv6.
  4. Uruchom ponownie komputer, aby to ustawienie zaczęło obowiązywać.

Co to jest ta tabela zasad przedrostków?

Interfejs netsh ipv6 pokazuje prefixpolicies (lubprefixpolicy w starszych wersjach)

Prefiks etykiety Prefiks ---------- ----- -------------------------------- 50 0 :: 1/128 45 13 fc00 :: / 7 40 1 :: / 0 10 4 :: ffff: 0: 0/96 7 14 2002 :: / 16 5 5 2001 :: / 32 1 11 fec0 :: / 10 1 12 3ffe :: / 16 1 10 :: / 96 

Ta tabela decyduje, które prefiksy mają pierwszeństwo przed innymi prefiksami podczas rozwiązywania DNS.

Ah, więc używając tego KB możemy dodać tutaj wpisy, które oznaczają, że IPv4 ma wyższy priorytet niż IPv6.

Uwaga: Nie ma powodu, aby zastępować to zachowanie, chyba że masz problemy ze zgodnością. Zmiana tego ustawienia na naszym serwerze Windows zepsuła nasz serwer pocztowy, dlatego należy obchodzić się z nim ostrożnie ...

Nie ma nic lepszego niż dokładna i pouczająca odpowiedź, której brakuje w powiązanych dokumentach pomocniczych. Oczywiście localhost i lokalny adres IP są odrębnymi jednostkami, służą różnym celom, a teraz wszyscy wiemy dlaczego.

Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.