Jos teet paljon verkon välitystä,määrittäessäsi LAN-pohjaisia sovelluksia ja palvelintyökaluja tai vain uteliaita, olet todennäköisesti huomannut, että paikallismajoittajan ja paikallisen IP-osoitteen välillä on ero. Lue oppiaksesi erot.
Tämän päivän kysymys- ja vastausistunto on meille SuperUser-palvelun myötä - Stack Exchange -yksikön alaosasto, joka on yhteisön vetämä Q & A-verkkosivustojen ryhmittely.
Kysymys
SuperUser-lukija Diogo haluaa tietää, miksi ping-komento käsittelee localhostia ja paikallista IP-osoitetta eri tavalla, kun pinnalla ne näyttävät olevan sama asia:
Cmd: n ja pingin käyttäminen Windowsissa antoi minulle seuraavat tulokset:
Pinging “localhost”:
Pinging “192.168.0.10” (paikallinen IP-osoite):
Eivätkö molemmat tilanteet ole täysin samat?
Tarkoitan, pingistan samaa käyttöliittymää, samaa konetta ja samaa osoitetta. Miksi saan niin erilaisia tuloksia?
Ilmeisesti on jonkinlainen ero, mutta mitä tarkalleen tapahtuu, kun vaihdat näiden kahden välillä?
Vastaus
SuperUser-avustaja Tom Wijsman tarjoaa seuraavan kuvan näiden kahden välisistä hienoista eroista:
Et pingitä samaa käyttöliittymää, ilman fyysisiä rajapintoja sinulla on edelleen ”paikallinen isäntä”.
teidän localhost
käytetään viitaamaan tietokoneeseen sen“Sisäinen” IP, ei minkään tietokoneen “ulkoisesta” IP: stä. Joten ping-paketit eivät läpäise minkään fyysisen verkkoliittymän kautta; vain virtuaalisen silmukan takaisinliittymän kautta, joka lähettää paketit suoraan satamasta porttiin ilman fyysistä hyppyä.
Saatat silti ihmetellä miksi localhost
on päättämässä ::1
, vaikka perinteisesti odottaisimme sen ratkaisevan IPv4-osoitteeseen 127.0.0.1
. Ota huomioon, että .localhost
on perinteisesti TLD (katso RFC 2606), joka osoittaa takaisin silmukan takaisin IP-osoitteeseen (IPv4: katso RFC 3330, erityisesti 127.0.0.0/8).
Katse localhost
käyttämällä nslookup
antaa meille:
nslookup localhost
...
Name: localhost
Addresses: ::1
127.0.0.1
Siksi Windows mieluummin käyttää IPv6-silmukka-IP-osoitetta ::1
(katso RFC 2373), koska se on lueteltu ensin.
Okei, niin mistä se tulee, katsotaanpa isäntätiedostoa.
type %WINDIR%System32DriversEtcHosts
...
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
...
Hmm, meidän on tarkasteltava Windowsin DNS-asetuksia.
Tämä KB-artikkeli kertoo lihavoituna korostetusta asetuksesta, joka vaikuttaa Windowsin suosimaan asetuksiin:
- Etsi ja napsauta seuraava rekisteriavain rekisterieditorissa:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6Parameters
- Kaksoisnapsauta DisabledComponents muokataksesi DisabledComponents-merkintää.Huomaa: Jos DisabledComponents-merkintää ei ole saatavana, sinun on luotava se. Voit tehdä tämän seuraavasti:
- Valitse Muokkaa-valikosta Uusi ja valitse sitten DWORD (32-bittinen) arvo.
- Kirjoita DisabledComponents ja paina sitten ENTER-painiketta.
- Kaksoisnapsauta DisabledComponents.
- Kirjoita jokin seuraavista arvoista Arvodata: -kenttään määrittääksesi IPv6-protokollan haluttuun tilaan ja napsauta sitten OK:
- Tyyppi
0
jotta kaikki IPv6-komponentit voidaan ottaa käyttöön. (Windowsin oletusasetus) - Tyyppi
0xffffffff
poistaaksesi kaikki IPv6-komponentit pois lukien IPv6silmukkarajapinta. Tämä arvo myös määrittää Windowsin mieluummin käyttämään Internet-protokollan versiota 4 (IPv4) IPv6: n kanssa muuttamalla etuliitekäytäntötaulukon merkintöjä. Lisätietoja on kohdassa Lähde- ja kohdeosoitteen valinta. - Tyyppi
0x20
mieluummin IPv4 kuin IPv6 muuttamalla etuliitekäytäntötaulukon merkintöjä. - Tyyppi
0x10
poistaa IPv6 käytöstä kaikissa nontunnel-rajapinnoissa (sekä LAN- että point-to-point Protocol [PPP] -rajapinnoissa). - Tyyppi
0x01
poistaa IPv6 käytöstä kaikissa tunnelirajapinnoissa. Näitä ovat sivuston sisäinen automaattinen tunnelinosoitusprotokolla (ISATAP), 6to4 ja Teredo. - Tyyppi
0x11
kaikkien IPv6-rajapintojen poistaminen käytöstä, paitsi IPv6-silmukkarajapinta.
- Tyyppi
- Käynnistä tietokone uudelleen, jotta tämä asetus tulee voimaan.
Mikä on tämä etuliitekäytäntötaulukko?
netsh interface ipv6 show prefixpolicies
(tai prefixpolicy
aiemmissa versioissa)
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ämä taulukko päättää, mitkä etuliitteet saavat etusijan muihin etuliitteisiin verrattuna DNS-ratkaisun aikana.
Ah, joten käyttämällä tätä KB: tä voisimme lisätä tähän merkintöjä, jotka osoittavat, että IPv4: llä on korkeampi prioriteetti kuin IPv6: lla.
merkintä: Ei ole syytä ohittaa tätä käyttäytymistä, ellei sinulla ole yhteensopivia ongelmia. Asetuksen muuttaminen Windows Server -palvelimella rikkoi postipalvelimesi, joten sitä on käsiteltävä varoen ...
Emme halua muuta kuin perusteellista jainformatiivinen vastaus ja linkitetyt tukidokumentit säästääksesi. On selvää, että localhost ja paikallinen IP-osoite ovat erillisiä kokonaisuuksia, palvelevat erilaisia tarkoituksia, ja nyt me kaikki tiedämme miksi.
Onko jotain lisättävää selitykseen? Kuuntele kommentteja. Haluatko lukea lisää vastauksia muilta teknisesti hyödyllisiltä Stack Exchange -käyttäjiltä? Katso koko keskusteluketju täältä.