Hosts-filen på Windows-datamaskiner brukes til å binde bestemte navnestrenger til bestemte IP-adresser for å overstyre andre metoder for navneløsning.
Ofte bestemmer man seg for å endre hosts-filen og oppdager at endringene ikke trer i kraft, eller at selv gamle oppføringer i hosts-filen ignoreres. Det finnes en rekke "gotcha"-feil som kan forårsake dette, og det kan være frustrerende å finne ut hvilken.
Når du står overfor problemet med at Windows ignorerer en hosts-fil, hva er en omfattende feilsøkingsprotokoll som kan følges?
Dette spørsmålet har duplikater på SO, for eksempel https://serverfault.com/questions/50934/hosts-file-being-ignored
Disse har imidlertid en tendens til å dreie seg om et spesifikt tilfelle, og når den feilen OP har gjort er funnet ut, er diskusjonen over. Hvis du ikke tilfeldigvis har gjort den samme feilen, er en slik diskusjon ikke særlig nyttig. Derfor tenkte jeg at det ville være mer nyttig å ha en generell protokoll for å løse alle vertsrelaterte problemer som dekker alle tilfeller.
Basert på min egen erfaring og det jeg har funnet på Google, er det noen ting du kan prøve:
Endringer i verter skal tre i kraft umiddelbart, men Windows mellomlagrer data for navneløsningen, slik at de gamle postene kan brukes en stund. Åpne en kommandolinje (Windows+R, cmd
, Enter) og skriv inn:
ipconfig /flushdns
for å slette de gamle dataene. For å sjekke om det fungerer, bruk (forutsatt at du har en ipv4-oppføring i hosts for www.example.com, eller en ipv6-oppføring i hosts for ipv6.example.com):
ping www.example.com -n 1
ping -6 ipv6.example.com -n 1
Og se om den bruker riktig IP. Hvis ja, er hosts-filen din i orden, og problemet ligger et annet sted. Du kan også tilbakestille NetBios-hurtigbufferen med (åpne konsollen som administrator, ellers vil det mislykkes):
nbtstat -R
Du kan sjekke gjeldende data i DNS-hurtigbufferen med:
ipconfig /displaydns | more
hosts
og ikke host
osv.hosts
, ikke hosts.txt
) - vær forsiktig hvis du har konfigurert Windows til å skjule kjente filtyper, sjekk egenskapene for å være sikker: Den riktige hosts-filen's type vises som bare "File".#
) som indikerer kommentarer?www.example.com
og example.com
- tryggest å bare legge til begge)?Formatet for hver linje er IP-adresse
, deretter en horisontal tabulator (escape-kode \t
, ASCII HT
, hex 0x09
) eller et enkelt mellomrom (hex 0x20
), deretter vertsnavnet, dvs. www.example.com
, og til slutt en vognretur etterfulgt av en linjeskift (escape-kode \r\n
, ASCII CRLF
, hex 0x0d 0x0a
).
Eksempel på oppføringer, med Unicode-kontrollbilder for å indikere kontrolltegn. (Ikke kopier og lim inn disse i hosts-filen din!)
192.0.2.1␉www.example.com␍␊
2001:db8:8:4::2␉ipv6.example.com␍␊
De enkelte bytes kan vises i Notepad++ med hex editor plugin. Notepad++ viser også spesialtegn (View -> Show Symbol) slik at du enkelt kan inspisere antall og type mellomromstegn. Hvis du har kopiert og limt inn hosts-oppføringer fra et annet sted, kan du ende opp med flere mellomrom. I teorien støtter hosts flere mellomrom mellom de to kolonnene, men det er en annen ting du kan prøve hvis ingenting annet fungerer. For å være på den sikre siden bør du sørge for at alle linjene i hosts-filen enten bruker tabulator eller mellomrom, ikke begge deler. Avslutt til slutt filen med en blank linje.
Det finnes en registernøkkel som angir plasseringen av hosts-filen. Windows støtter visstnok ikke at hosts-filen plasseres på andre steder, men det kan være lurt å sjekke. Nøkkelen er:
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
Oppføringen skal være:
%SystemRoot%\System32\drivers\etc
Noen ganger er det problemer med tillatelsene til filen, filattributtene og lignende. Slik gjenskaper du filen med standardtillatelser:
hosts
.%SystemRoot%\System32\drivers\etc
, og overskriv den gamle filen.
Det siste punktet er viktig: Kopiering fungerer, flytting gjør det ikke.
Den lokale Users
-kontoen må kunne lese hosts-filen. For å være sikker (i Windows 7):%SystemRoot%\System32\drivere\etc
i Windows Utforsker.hosts
-filen, kontroller at du kan se skjulte filer og systemfiler.hosts
-filen og velg Egenskaper
fra hurtigmenyen.hosts Properties
klikker du på fanen Security
.Gruppe- eller brukernavn
. Hvis %COMPUTERNAME%\Users
finnes, klikker du på det for å se tillatelser.Users
ikke finnes, eller finnes, men ikke har Read
-tillatelse, klikker du på Edit...
.Brukere
ikke finnes, klikker du på Legg til...
, skriver inn Brukere
, klikker på Sjekk navn
og klikker på OK eller trykker på Enter.Brukere
, og kontroller at det er merket av for Les og kjør
i kolonnen Tillat
. Klikk på OK. Hvis det dukker opp en varslingsboks for Windows Security
, velger du Ja
for å fortsette.Hosts Properties
.Hosts-filen skal være kodet i ANSI eller UTF-8 uten BOM. Du kan gjøre dette med File -> Save As.
Hvis du har konfigurert en proxy, kan den omgå hosts-filen. Løsningen er å ikke bruke proxyen, eller konfigurere den slik at den ikke gjør dette.
For å sjekke dette går du til Internet Explorer -> Internett-alternativer -> Tilkoblinger -> LAN-innstillinger. Hvis alt er tomt og "Oppdag innstillinger automatisk" er avkrysset, bruker du ikke proxy.
Hvis du er avhengig av en proxy for å få tilgang til nettet og derfor ikke vil deaktivere den, kan du legge til unntak ved å gå til Internet Explorer -> Internet Options -> Connections -> LAN settings -> Proxy Server / Advanced. Legg deretter til unntakene dine i tekstboksen Unntak. F.eks. localhost;127.0.0.1;*.dev
.
(Dette kan også løse proxy-problemer).
Gå til egenskaper for nettverkstilkoblinger, deretter TCP/IP-innstillinger, og endre den første DNS-serveren til 127.0.0.1
(localhost). Den andre bør sannsynligvis være din faktiske DNS-IP.
**Dette er ikke nødvendig for at hosts-filen skal fungere, men det kan hjelpe i ditt tilfelle hvis noe er konfigurert på en merkelig måte.
Hvis du bruker en .local-domenenavnoppføring i form av myhost.local og den blir ignorert, kan du prøve følgende
x.x.x.x myhost.local www.myhost.local
selv om www.myhost.local ikke eksisterer. Windows legger på en eller annen måte ikke til arbeidsgruppen eller det lokale domenet.
I mine tilfeller prøvde jeg Windows 7 opprettet fil: C:\Windows\System32\drivere\etc\hosts.ics.
hosts.ics:
# This file has been automatically generated for use by Microsoft Internet
# Connection Sharing. It contains the mappings of IP addresses to host names
# for the home network. Please do not make changes to the HOSTS.ICS file.
# Any changes may result in a loss of connectivity between machines on the
# local network.
Resultatet er at Windows ignorerer innstillingene i C:\Windows\System32\drivere\etc\hosts og bruker dem fra hosts.ics.