Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, skupín webových stránok týkajúcich sa otázok a odpovedí.
Otázka
Čítačka SuperUser Diogo chce vedieť, prečo príkaz ping zaobchádza s lokálnym adresárom a lokálnou IP adresou inak, keď sa na povrchu zdá, že sú to isté:
Using cmd and ping on Windows gave me the following results:
Pinging “localhost”:
I mean, I’m pinging the same interface, the same machine and the same address. Why do I get such different results?
Je zrejmé, že existuje nejaký rozdiel, ale čo sa deje práve vtedy, keď prechádzate medzi dvoma?
Odpoveď
Príspevok SuperUser Tom Wijsman ponúka nasledujúci pohľad na jemné rozdiely medzi týmito dvoma spôsobmi:
You are not pinging the same interface, without any physical interfaces you still have a “local host”.
Your
localhost
sa používa na označenie vášho počítača z jeho "internej" IP adresy, nie z "externých" IP adries vášho počítača. Ping pakety neprechádzajú cez žiadne fyzické sieťové rozhranie; iba prostredníctvom rozhrania virtuálnej slučky, ktorá priamo odošle pakety z portu do portu bez akéhokoľvek fyzického chmeľu.
Možno by ste sa ešte zaujímali prečo
localhost
sa vyrieši
::1
zatiaľ čo tradične by sme očakávali, že rieši adresu IPv4
127.0.0.1
Poznač si to
.localhost
je tradične TLD (viď. RFC 2606), ktorý odkazuje späť na IP adresu slučky (pre protokol IPv4, pozri RFC 3330, najmä 127.0.0.0/8).
Pri pohľade nahor
localhost
použitím
nslookup
dáva nám:
nslookup localhost
… Name: localhost Addresses:::1 127.0.0.1
Preto Windows preferuje použitie IP adresy IPv6 späť
::1
(pozri RFC 2373), ako je uvedené prvý.
Dobre, takže, odkiaľ to pochádza, poďme sa pozrieť na súbor hostiteľov.
type %WINDIR%System32DriversEtcHosts
… # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost #::1 localhost …
Hmm, musíme sa pozrieť na nastavenia DNS systému Windows.
Tento článok KB nám hovorí o nastavení, ktoré ovplyvňuje to, čo systém Windows preferuje, zvýraznený tučným písmom:
-
V Editora databázy Registry vyhľadajte a kliknite na nasledujúci podkľúč databázy Registry:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6Parameters
-
Dvakrát kliknite na položku DisabledComponents a upravte položku DisabledComponents.Note: Ak je položka DisabledComponents nedostupná, musíte ju vytvoriť. Postupujte nasledovne:
- V ponuke Úpravy ukážte na položku Nové a potom kliknite na položku Hodnota DWORD (32-bitová).
- Zadajte príkaz DisabledComponents a stlačte kláves ENTER.
- Dvakrát kliknite na DisabledComponents.
-
Do poľa Hodnota údajov: zadajte ktorúkoľvek z nasledujúcich hodnôt na konfiguráciu protokolu IPv6 na požadovaný stav a potom kliknite na tlačidlo OK:
-
typ
0
ak chcete povoliť všetky komponenty protokolu IPv6. (Predvolené nastavenie systému Windows)
-
typ
0xffffffff
zakázať všetky komponenty protokolu IPv6 okrem rozhrania spätnej väzby protokolu IPv6. Táto hodnota tiež konfiguruje systém Windows, ktorý uprednostňuje používanie protokolu IPv4 (IPv4) cez protokol IPv6 úpravou položiek v tabuľke pravidiel prefixu. Ďalšie informácie nájdete v časti Výber zdroja a cieľovej adresy.
-
typ
0x20
uprednostniť IPv4 cez protokol IPv6 úpravou položiek v tabuľke pravidiel prefixu.
-
typ
0x10
zakázať protokol IPv6 na všetkých nontunnelových rozhraniach (na rozhraní LAN a Point-to-Point Protocol [PPP]).
-
typ
0x01
zakázať IPv6 na všetkých tunelových rozhraniach. Patria sem Protokol na automatické tunelovanie v rámci lokality (ISATAP), 6to4 a Teredo.
-
typ
0x11
zakázať všetky rozhrania protokolu IPv6 s výnimkou rozhrania IPv6 loopback.
- Reštartujte počítač, aby sa toto nastavenie prejavilo.
Čo je táto tabuľka pravidiel prefixov?
netsh interface ipv6 show prefixpolicies
(alebo
prefixpolicy
na predchádzajúcich verziá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
Táto tabuľka určuje, ktoré predpony majú prednosť pred inými predponami počas riešenia DNS.
Ah, pomocou tejto KB sme mohli pridať záznamy, ktoré označujú, že IPv4 má vyššiu prioritu ako IPv6.
Poznámka: Nie je dôvod na prekonanie tohto správania, ak nemáte kompatibilné problémy. Zmena tohto nastavenia na našom serveri Windows zlomila náš poštový server, takže by sa s ním malo zaobchádzať opatrne …
Nič sa nám nepáči viac ako dôkladná a informatívna odpoveď s prepojenými podpornými dokumentmi. Samozrejme, localhost a lokálna IP adresa sú odlišné entity, slúžia rôznym účelom a teraz všetci vieme prečo.
Máte niečo doplniť vysvetlenie? Zvuk vypnúť v komentároch. Chcete si prečítať viac odpovedí od iných používateľov technológie Stack Exchange? Pozrite sa na celý diskusný príspevok tu.