Como é que o redirecionamento de arquivos hosts falha?

12

Estou tentando redirecionar o google.com para minha máquina local para me divertir e aprender com esse arquivo / etc / hosts no meu Mac.

127.0.0.1 www.google.com

No entanto, o www.google.com ainda é mapeado para a página inicial do Google quando a visito no Chrome no meu Mac. Por quê?

Basicamente, isso foi tudo o que fiz:

  1. Digite o sudo vim /etc/hoststerminal.
  2. Introduzido 127.0.0.1 www.google.comno arquivo hosts.
  3. Salva e sai do vim.
David Faux
fonte

Respostas:

10

O hostsarquivo não funciona dessa maneira. Você só pode usá-lo para mapear nomes de host para endereços IP, não para localhost.

Para o seu caso, você usaria 127.0.0.1 www.google.com, ou seja, mapeie www.google.com para 127.0.0.1.

Se você deseja mapear mais nomes de host para um único IP, basta adicionar esses nomes de host na mesma linha, por exemplo 127.0.0.1 www.a.com www.b.com.

Renan
fonte
11
Obrigado. Acabei de alterar o arquivo / etc / hosts no meu Mac para 127.0.0.1 www.google.com. No entanto, o google.com ainda leva à página inicial do Google. Preciso atualizar alguma coisa? Devo reiniciar meu computador?
David Faux
Você não deveria precisar. Tente adicionar 127.0.0.1 google.com(sem o www) após esta linha e verifique se funciona.
Renan
127.0.0.1 google.comtambém não está funcionando. Não sei ao certo o que está acontecendo ... Sei que esse /etc/hostsé um link suave para /private/etc/hostsum Mac, mas acho que isso não ajuda em nada.
David Faux
11
Um tecnicismo: hostsmapeia nomes de host para endereços IP, não vice-versa.
Dennis
11
@ Dennis, era o que eu ia dizer, mas, novamente, ele realmente funciona nos dois sentidos quando você pensa sobre isso, porque cria uma associação entre dois itens.
Synetech
9

Um navegador da web não é a melhor maneira de verificar se sua hostssintaxe está correta. Tente executar

ping www.google.com

e verifique se ele aperta 127.0.0.1.

O motivo pelo qual o Chrome parece ignorar seu hostsarquivo é o cache:

Se o Chrome já tiver consultado o IP recentemente (a definição de mais provável depende do tempo de vida útil (TTL) retornado pelo servidor DNS), ele ignorará o hostsarquivo, pois já sabe o IP correto. Isso é feito para acelerar a navegação na web.

Para fazer o Chrome respeitar a nova entrada, faça o seguinte:

  1. Edite /etc/hostscomo @Renan descrito.

  2. Vá para chrome://chrome/settings/clearBrowserData.

  3. Escolha since the beginning of time.

  4. Marque Empty the cache, mas desmarque todo o resto.

  5. Clique Clear browsing datae aguarde o término.

  6. Reinicie o Chrome.

O Chrome deve respeitar seu hostsarquivo agora.

Dennis
fonte
2
Eu aprendi isso há muito tempo com o IE6. Se eu fizesse uma alteração no arquivo HOSTS enquanto o IE ainda estava aberto, precisaria fechá-lo especificamente e executá-lo novamente para que ele captasse as alterações. Isso vale para a maioria dos programas. No entanto, alguns programas (como as versões do Chrome do último ano ou dois) relerão o arquivo HOSTS periodicamente; portanto, se você fizer uma alteração, aguarde um ou dois minutos e atualize (não é necessário limpar o cache). (Esta política lendo re-às vezes é útil como este, mas geralmente muito ruim, na realidade, uma vez que é um desperdício, e particularmente ruim se o arquivo HOSTS é grande.)
Synetech
@ Synetech: o Chrome captura as alterações hostsinstantaneamente, desde que a entrada não seja um nome de host que já esteja em cache. I supor que ele verifica hostsapenas se o TTL tem passado. Com grandes sites, isso pode demorar um pouco.
Dennis
Não sei os detalhes específicos sobre como as diferentes versões releiam o arquivo HOSTS, mas você pode usar o Filemon / ProcMon para vê-lo em ação; chrome.exeocasionalmente lerá o arquivo inteiro.
#
2
Existe uma forma menos brutal de limpeza de cache DNS do cromo superuser.com/questions/203674/...
Hakunin
@hakunin: Legal. No Chromium 25.0.1364.160 Ubuntu 12.04, isso nem é mais necessário. Fiz o check-in net-internals/#dnse o cache do host é limpo automaticamente quando /etc/hostsé alterado.
Dennis
1

Minha resposta é uma combinação das opções acima, porque estou me conectando ao meu escritório via Fortinet SSL VPN para Ubuntu 16.04.

A primeira coisa que precisei fazer foi abrir o console do terminal e executar o seguinte comando:

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

Eu adicionei o seguinte exemplo:

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

Em seguida, salvei o arquivo pressionando CTRL-Oe fechei o nano pressionando CTRL-X.

Fiz o seguinte e funcionou perfeitamente:

Para fazer o Chrome respeitar a nova entrada, faça o seguinte:

Edite /etc/hostscomo @Renan descrito.

  1. Vá para chrome://chrome/settings/clearBrowserData.
  2. Escolha desde o início dos tempos.
  3. Marque Esvaziar o cache, mas desmarque todo o resto.
  4. Clique em Limpar dados de navegação e aguarde o término.
  5. Reinicie o Chrome.

O Chrome deve respeitar o arquivo de hosts agora.

user712460
fonte