Estou usando o OS X 10.8.5 e o Chrome 30.
Eu adicionei 127.0.0.1 youtube.com
ao meu /etc/hosts
arquivo para que agora ele contenha:
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 youtube.com
Quando executo o comando traceroute youtube.com
, recebo os resultados esperados (youtube.com é resolvido para 127.0.0.1):
traceroute to youtube.com (127.0.0.1), 64 hops max, 52 byte packets
1 localhost (127.0.0.1) 0.272 ms 0.118 ms 0.063 ms
No entanto, quando digito youtube.com no Chrome, meu navegador não estabelece uma conexão com o 127.0.0.1, mas com o endereço IP "normal" do YouTube. Eu esperava que o Chrome resolvesse o youtube.com para 127.0.0.1.
Eu tenho o Chrome configurado para usar as configurações de proxy do meu sistema. No OS X, quando vou para Preferências do sistema> Rede> "Avançado ..."> Proxies, selecionei "Descoberta automática de proxy".
Por que o Chrome aparentemente está ignorando meu /etc/hosts
arquivo?
macos
networking
google-chrome
dns
Jonathan
fonte
fonte
Respostas:
Tente adicionar
www.youtube.com
ao seu arquivo hosts.youtube.com
é redirecionado permanentemente parawww.youtube.com
, desde que você tenha visitadoyoutube.com
uma vez, seu navegador armazena em cache essa resposta e o redireciona parawww.youtube.com
. Esse endereço não está no arquivo do seu host, portanto, o chrome o resolve logicamente corretamente.fonte
www
não funciona para mim. Mesmo depois de limpar todos os dados do navegador e liberar o DNS. Talvez essa seja uma medida anti-phishing incorporada ao Chrome?O Google Chrome ignora o arquivo de hosts e faz pesquisas de DNS reais (apesar do que os outros possam pensar,
/etc/hosts
não faz parte do DNS, é o que foi usado antes do DNS). Embora o Google Chrome deva honrar essas entradas de arquivo de hosts, isso não ocorre. O arquivo hosts, sendo uma alternativa ao DNS, será lido quando nenhum servidor DNS estiver disponível (como se você desativasse sua conexão de rede).Você pode testar isso adicionando "127.0.0.1 foobar.dev" ao arquivo de hosts, ativando o wireshark e assistindo na sua interface de rede. Abra o Chrome e coloque
http://foobar.dev/
na sua barra de endereços e pronto . Você verá uma consulta DNS no Wireshark, algo como:FWIW, o DNS do Google retorna 127.0.53.53 para foobar.dev.
Uma solução alternativa seria usar o HostAdmin, uma extensão mais antiga do Chrome que faz o Chrome usar os hosts. No entanto, versões mais recentes do Chrome (> 38, adequadamente) não são mais compatíveis.
fonte
/etc/hosts
arquivo no OS X. Pelo menos não o Chrome v43 no OS X 10.10.3.Corrigi esse problema: Desative "Proteger você e seu dispositivo contra sites perigosos" nas Preferências avançadas do Chrome.
A "proteção" incorporada do Chrome inclui a verificação direta de um domínio em relação ao seu próprio DNS e o desvio de certos tipos de entradas de host que considera "suspeitas" ou entradas de sites que estão sendo substituídos, o que significa que a maioria das entradas personalizadas de host são ignoradas. Especialmente as entradas * .dev e * .local usadas para desenvolvimento.
Desativar isso resolveu o problema 100% do tempo para mim. Isso me deixou louco por meses durante o desenvolvimento local e eu não consegui encontrar a resposta listada em nenhum lugar, todo mundo ficava dizendo que isso não poderia estar acontecendo. Acontece que foi uma simples alternância nas configurações avançadas. Espero que isso ajude você também, felicidades.
fonte
Localhost é uma convenção para o endereço 127.0.0.1 que é um endereço interno para tcp / ip; no entanto, o Chrome não está usando os / etc / hosts para resolver o endereço, está usando um servidor DNS; portanto, nenhum endereço não vem do seu / etc / hosts, mas a partir de um servidor DNS, se estiver usando o / etc / hosts, ele deverá conter os nomes de host www inteiros para resolver qualquer endereço.
Espero que isto ajude.
fonte
/etc/hosts
substitui todos os servidores DNS. Sim, se você estiver usando apenas/etc/hosts
, ele deverá conter todos os nomes de domínio, mas a maioria das configurações também inclui servidores DNS. Se o Chrome simplesmente solicitar que o sistema operacional resolva o nome de domínio, como deveria ,/etc/hosts
será verificado primeiro e, se não contiver uma entrada, uma consulta DNS será enviada./etc/hosts
deve substituir e solicitação de DNS, mas esse não é o caso do Google Chrome. Ele realiza suas próprias pesquisas de DNS, apesar do que pode estar no arquivo hosts. Isso é facilmente demonstrável. Isso é especificamente um problema para o desenvolvimento local usando o.dev
TLD.Eu me deparei com essa pergunta pensando que o
hosts
arquivo não funcionava no Chrome para macOS para os.dev
domínios falsos que eu uso no desenvolvimento.Realmente ele faz o trabalho, pelo menos no Chrome 77.
O problema não é que o domínio não foi encontrado, mas que todos os .dev agora são automaticamente redirecionados para https :
Se você clicar duas vezes no nome do domínio, poderá ver o culpado:
Agora que o Google quebrou o nosso
.dev
, como solução, o link acima sugere a mudança para outro TLD para desenvolvimento, como.test
ou.localhost
.fonte