loader

Jaký je rozdíl mezi lokalizační a lokální adresou IP?

Anonim


Pokud děláte spoustu síťového tinkeringu, konfigurování aplikací založených na LAN a serverových nástrojů nebo jen zvědaví, pravděpodobně jste si všimli, že existuje rozdíl mezi localhost a místní IP adresou. Čtěte dále, abyste zjistili rozdíly.

Dnešní zasedání Otázky a odpovědi se k nám přichází s laskavým svolením SuperUser - subdivize Stack Exchange, komunitně řízeného seskupování webových stránek Otázky a odpovědi.

Otázka

Čtecí zařízení SuperUser Diogo chce vědět, proč příkaz ping zachází s localhost a místní IP adresou jinak, když se na povrchu zdá, že jsou to samé:

Použití příkazu cmd a pingu na systému Windows mi poskytlo následující výsledky:

Pinging "localhost":

Ping "192.168.0.10" (místní IP adresa):

Nejedná se o obě situace přesně to samé?

Mám na mysli ping stejné rozhraní, stejný stroj a stejnou adresu. Proč mám tak rozdílné výsledky?

Je zřejmé, že je nějaký rozdíl, ale co přesně probíhá, když přepínáte mezi oběma?

Odpověď

Doprovod SuperUser Tom Wijsman nabízí následující pohled na jemné rozdíly mezi těmito dvěma způsoby:

Nejste ping na stejném rozhraní bez fyzických rozhraní, které stále máte "místního hostitele".

Váš localhost se používá k odkazování na váš počítač z jeho "interní" IP adresy, nikoliv z jakéhokoli "externího" IP počítače. Ping pakety neprocházejí žádné fyzické síťové rozhraní; pouze prostřednictvím rozhraní virtuální smyčky, které přímo odesílá pakety z portu do portu bez fyzického chmele.

Možná byste se ještě divili, proč localhost vyřeší ::1, zatímco tradičně bychom očekávali, že se vyřeší na adresu IPv4 127.0.0.1 . Všimněte si, že .localhost je tradičně TLD (viz RFC 2606), který odkazuje zpět na IP adresu smyčky (pro IPv4 viz RFC 3330, zejména 127.0.0.0/8).

Při pohledu do localhost pomocí nslookup nám nslookup :

nslookup localhost

 ... Name: localhost Addresses: ::1 127.0.0.1 

Takto Windows preferuje použití IPv6 smyčky zpět IP adresu ::1 (viz RFC 2373), jak je uvedeno jako první.

Dobře, takže odkud pochází, podívejte se na soubor hostitelů.

type %WINDIR%\System32\Drivers\Etc\Hosts

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

Hmm, musíme se podívat na nastavení DNS systému Windows.

Tento článek KB nám říká o nastavení, které ovlivňuje to, co systém Windows preferuje, zvýrazněný tučně:

  1. V Editoru registru vyhledejte a klepněte na následující podklíč registru:
     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters 
  2. Poklepáním na položku DisabledComponents upravte položku DisabledComponents.Note: Pokud není položka DisabledComponents k dispozici, musíte ji vytvořit. Chcete-li to provést, postupujte takto:
    1. V nabídce Úpravy přejděte na příkaz Nový a klepněte na položku Hodnota DWORD (32 bitů).
    2. Zadejte DisabledComponents a stiskněte klávesu ENTER.
    3. Poklepejte na DisabledComponents.
  3. Do pole Údaj hodnoty: zadejte libovolnou z následujících hodnot konfigurovat protokol IPv6 na požadovaný stav a potom klepněte na tlačítko OK:
    • Zadejte 0 chcete-li povolit všechny součásti protokolu IPv6. (Výchozí nastavení systému Windows)
    • Zadejte příkaz 0xffffffff k zakázání všech komponent IPv6, s výjimkou rozhraní zpětné vazby IPv6. Tato hodnota také konfiguruje systém Windows, který upřednostňuje používání protokolu IP verze 4 (IPv4) přes protokol IPv6 úpravou položek v tabulce zásad předpon. Další informace naleznete v části Výběr zdroje a cílové adresy.
    • Zadejte 0x20 chcete-li preferovat protokol IPv4 přes protokol IPv6, a to úpravou položek v tabulce zásad předpon.
    • Zadejte 0x10 chcete-li zakázat protokol IPv6 na všech rozhraních typu nontunnel (na rozhraní LAN a Point-to-Point Protocol [PPP]).
    • Zadejte 0x01 pro zakázání protokolu IPv6 na všech tunelových rozhraních. Jedná se o Intra-Site Automatické tunel adresování protokolu (ISATAP), 6to4, a Teredo.
    • Zadejte 0x11 chcete-li zakázat všechna rozhraní protokolu IPv6 s výjimkou rozhraní zpětné 0x11 IPv6.
  4. Restartujte počítač, aby se toto nastavení projevilo.

Co je tato tabulka zásad prefixů?

netsh interface ipv6 show prefixpolicies (nebo prefixpolicy na dřívějších verzích)

 Precedence Label Prefix ---------- ----- -------------------------------- 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 

Tato tabulka určuje, které předpony mají přednost před jinými předpony během řešení DNS.

Ah, tak pomocí této KB bychom mohli přidat položky, které označují, že IPv4 má vyšší prioritu než IPv6.

Poznámka: Není potřeba toto chování potlačit, pokud nemáte kompatibilní problémy. Změna tohoto nastavení na našem serveru Windows Server porušila naše poštovní server, takže by se s ním mělo pracovat opatrně.

Neexistuje nic víc než důkladná a informativní odpověď s propojenými podpůrnými dokumenty. Je zřejmé, že localhost a místní IP adresa jsou odlišné entity, slouží různým účelům a nyní všichni víme proč.


Musíte něco přidat k vysvětlení? Vypadněte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.

Redakce Choice