Come mai il reindirizzamento dei file hosts non riesce?


12

Sto cercando di reindirizzare google.com sul mio computer locale per divertimento e apprendimento con questo file / etc / hosts sul mio Mac.

127.0.0.1 www.google.com

Tuttavia, www.google.com continua a essere mappato sulla home page di Google quando lo visito in Chrome sul mio Mac. Perché?

Fondamentalmente, questo è tutto ciò che ho fatto:

  1. Digitare il sudo vim /etc/hoststerminale.
  2. Inserito 127.0.0.1 www.google.comnel file hosts.
  3. Salvato ed esci da vim.

Risposte:


10

Il hostsfile non funziona in questo modo. Puoi usarlo solo per mappare un nome host su indirizzi IP, non su localhost.

Per il tuo caso lo useresti 127.0.0.1 www.google.com, ad esempio mappare www.google.com al 127.0.0.1.

Se si desidera mappare più nomi host su un singolo IP, è sufficiente aggiungere tali nomi host nella stessa riga, ad es 127.0.0.1 www.a.com www.b.com.


1
Grazie. Ho appena cambiato il file / etc / hosts sul mio Mac in 127.0.0.1 www.google.com. Tuttavia, google.com porta ancora alla home page di Google. Devo aggiornare qualcosa? Devo riavviare il mio computer?
David Faux,

Non dovresti averne bisogno. Prova ad aggiungere 127.0.0.1 google.com(senza il www) dopo questa riga e controlla se funziona.
Renan,

127.0.0.1 google.comnon funziona neanche. Non sono sicuro di cosa stia succedendo ... So che /etc/hostsè un collegamento soft a /private/etc/hostssu un Mac, ma non credo che aiuti affatto.
David Faux,

1
Un tecnicismo: hostsassocia i nomi host agli indirizzi IP, non viceversa.
Dennis,

1
@Dennis, è quello che stavo per dire, ma ancora una volta, funziona davvero in entrambi i modi quando ci pensi, perché crea un'associazione tra due elementi.
Synetech,

9

Un browser Web non è il modo migliore per verificare se la hostssintassi è corretta. Prova a eseguire

ping www.google.com

e verifica che esegua il ping 127.0.0.1.

Il motivo per cui Chrome sembra ignorare il tuo hostsfile è la memorizzazione nella cache:

Se Chrome ha già interrogato l'IP di recente (la definizione di ultimamente dipende molto probabilmente dal tempo di vita (TTL) restituito dal server DNS), ignorerà il hostsfile, poiché conosce già l'IP corretto. Questo viene fatto per velocizzare la navigazione sul web.

Per fare in modo che Chrome rispetti la nuova voce, procedi come segue:

  1. Modifica /etc/hostscome descritto da @Renan.

  2. Vai a chrome://chrome/settings/clearBrowserData.

  3. Scegli since the beginning of time.

  4. Controlla Empty the cache, ma deseleziona tutto il resto.

  5. Fai clic Clear browsing datae attendi che finisca.

  6. Riavvia Chrome.

Chrome dovrebbe rispettare il tuo hostsfile ora.


2
L'ho imparato molto tempo fa con IE6. Se avessi apportato una modifica al file HOSTS mentre IE era ancora aperto, avrei dovuto chiuderlo in modo specifico ed eseguirlo di nuovo affinché raccolga le modifiche. Questo vale per la maggior parte dei programmi. Tuttavia, alcuni programmi (come le versioni di Chrome dell'anno passato o due) rileggeranno periodicamente il file HOSTS periodicamente, quindi se si apporta una modifica, attendere solo un minuto o due, quindi aggiornare (non è necessario svuotare la cache). (Questa politica di rilettura è utile a volte come questa, ma in genere è piuttosto negativa nella realtà poiché è dispendiosa e particolarmente cattiva se il file HOSTS è grande.)
Synetech

@Synetech: Chrome rileva le modifiche hostsall'istante, purché la voce non sia un nome host già memorizzato nella cache. Io presumo che controlla hostssolo se il TTL ha passato. Con siti Web di grandi dimensioni , ciò può richiedere del tempo.
Dennis,

Non conosco i dettagli su come diverse versioni riescano a rileggere il file HOSTS, ma puoi usare Filemon / ProcMon per vederlo in azione; chrome.exeleggerà occasionalmente l'intero file.
Synetech,

2
Esiste un modo meno brutale di
svuotare la

@hakunin: pulito. Su Chromium 25.0.1364.160 Ubuntu 12.04, questo non è nemmeno più necessario. Ho effettuato il check-in net-internals/#dnse la cache dell'host viene cancellata automaticamente quando /etc/hostsviene modificata.
Dennis,

1

La mia risposta è una combinazione di quanto sopra perché mi sto collegando al mio ufficio tramite Fortinet SSL VPN per Ubuntu 16.04.

La prima cosa che ho dovuto fare è aprire la mia console del terminale ed eseguire il comando seguente:

sudo nano /etc/resolvconf/resolv.conf.d/base

Ho aggiunto il seguente esempio:

searchdomain domain.local
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

Quindi ho salvato il file premendo CTRL-Oe chiuso nano premendo CTRL-X.

Ho quindi fatto quanto segue e ha funzionato perfettamente:

Per fare in modo che Chrome rispetti la nuova voce, procedi come segue:

Modifica /etc/hostscome descritto da @Renan.

  1. Vai a chrome://chrome/settings/clearBrowserData.
  2. Scegli dall'inizio del tempo.
  3. Seleziona Svuota la cache, ma deseleziona tutto il resto.
  4. Fai clic su Cancella dati di navigazione e attendi che finisca.
  5. Riavvia Chrome.

Chrome dovrebbe rispettare il tuo file hosts ora.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.