Por que o arquivo / etc / hosts não está funcionando?

29

Eu tenho problemas com isso há um tempo e tentei de tudo que sei, então achei que finalmente era hora de pedir ajuda.

Qualquer edição que eu fizer /etc/hostsnão funciona.

Exemplo:

julian@ifrit:~$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   ifrit
192.168.1.100   dev.julianfernand.es

No exemplo acima, quando eu acessar dev.julianfernand.es(isso não existe), ele deverá carregar de 192.168.1.100.

Se eu pingar, ele funciona muito bem. No entanto, quando acesso dev.julianfernand.esusando o Google Chrome ou Firefox, isso não ocorre.

Agora, depois de reiniciar algumas vezes, ele funciona. Mas, como trabalho em uma empresa gerenciada de hospedagem WordPress, lido com muitas situações em que tenho que editar meu arquivo para ver o site do cliente em nosso servidor.

Eu simplesmente não consigo continuar reiniciando meu computador. Não é produtivo. Reiniciar o serviço de rede não funciona, o mesmo para limpar o cache (mesmo o cache DNS interno do Chrome).

Alguém tem uma ideia aqui? Isso acontece com o elementaryOS (baseado no Ubuntu 12.04) e o Ubuntu 13.10 (diariamente). Ainda não tentei com nenhuma outra versão.

PS: se esse for o caso, eu tenho um servidor NGINX em execução nesta máquina com PHP-FPM e MySQL.

Desde já, obrigado :)

Julian Fernandes
fonte
Difícil de saber o problema. Ao acessar o site via nome do host (dev.julianfernand.es) falha, você pode acessá-lo via endereço IP (192.168.1.100)?
Panther
@ bodhi.zazen Sim, eu posso. No entanto, como nossa empresa não usa a idéia "IP de acesso para acessar o site" padrão de hosts compartilhados, isso não funciona.
Julian Fernandes
Eu não estava sugerindo que você acessasse sites via ip como uma solução a longo prazo. As informações ajudam na depuração, pois excluem outros problemas do firewall para rotear para problemas do servidor.
Pantera
E se você digitar o endereço IP na barra de endereços do seu navegador?
Sergiy Kolodyazhnyy 12/08

Respostas:

14

No Ubuntu, se você deseja liberar o cache DNS, é necessário reiniciar o nscddaemon.

Instale nscdusando o seguinte comando:

sudo apt-get install nscd

Liberar cache DNS no Ubuntu usando o seguinte comando:

sudo service nscd restart

OU

sudo service dns-clean start

Referência: http://www.upubuntu.com/2012/05/how-to-flush-clear-dns-cache-under.html

Arnold
fonte
Verifique também a configuração do Nginx e o arquivo de log de erros. Deve haver alguma pista quando você acessa o site.
Arnold
7

O seguinte funcionou para mim: add

addn-hosts=/etc/hosts

em

/etc/NetworkManager/dnsmasq.d/hosts.conf

matar dnsmasq e

service NetworkManager restart
Ruediger
fonte
6

Para mim, a solução foi editar o /etc/nsswitch.confarquivo (você pode usar o comando sudo vim /etc/nsswitch.conf). Eu mudei de linha:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

para:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

e agora está funcionando como esperado!

jmarceli
fonte
1
Você provavelmente deseja filesa primeira entrada se quiser /etc/hostster precedência sobre os resultados dos servidores DNS.
Muru
Isso é estranho, mas não é um erro, tenho que ter exatamente essa ordem para fazê-lo funcionar.
jmarceli
4

A resposta aceita funciona de 12.04 a 13.04 desativando dnsmasq, mas parou de funcionar para mim em 13.10. Encontrei a seguinte solução nova para a 13.10.

Edite seu / etc / default / dnsmasq e mude ENABLED=1para ENABLED=0e reinicie.

Mark E. Haase
fonte
2
Eu não tenho nenhum arquivo dnsmasq no caminho especificado. Estou no linux 15.04
Hiren
Não há mais resposta aceita. De que resposta você está falando?
toon81
3

De: http://blog.calebthorne.com/2012/08/broken-etchosts-in-ubuntu-1204.html

Um novo "recurso" no Ubuntu 12.04 desktop edition é usar dnsmasqcomo um plug-in no NetworkManager para DNS local. O Dnsmasq visa acelerar os serviços DNS e DHCP, mas vem com um efeito colateral lamentável: dnsmasqarmazena em cache o DNS local e ignora as alterações /etc/hosts. Eu faço alterações frequentes no arquivo hosts enquanto trabalho em sites, para que esse "recurso" seja bastante irritante.

A solução é desabilitar dnsmasqno arquivo de configuração do Networkmanager. Abra /etc/NetworkManager/NetworkManager.confe comente a linha:

dns=dnsmasq

Meu NetworkManager.confarquivo contém o seguinte:

[main]
plugins=ifupdown,keyfile
# dns=dnsmasq

[ifupdown]
managed=false

Veja também https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298

Pantera
fonte
1
Tentei isso em 13.10 e elementaryOS, ainda nada. Mas obrigado pela ajuda! :)
Julian Fernandes
@JulianFernandes Parece que isso não funciona na 13.10. Segui esse conselho e ele funcionou na versão 12.04, mas após a atualização para a 13.10, o dnsmasq está de volta e não consigo me livrar dele.
Mark E. Haase
1

Simples e Atualizado

  1. Crie /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Coloque linhas como address=/whatever/1.2.3.4ele. Veja os documentos (procure --address). Wildcards são possíveis: address/.whatever./1.2.3.4.
  3. Matar dnsmasq( bug ).
  4. Reiniciá-lo: $ service network-manager restart.
mightyiam
fonte
0

Parece que sua configuração é muito parecida com a minha. Eu tenho uma caixa executando o Ubuntu como meu servidor de escritório e host de desenvolvimento. Nessa caixa, eu executo os aplicativos Nginx, Apache, Tomcat, Rails e qualquer outra coisa que eu precise.

No meu Mac, posso simplesmente adicionar uma entrada de hosts e carregar o servidor com qualquer nome que eu precise, mas de um cliente do ElementaryOS, isso não funciona.

Eu tentei as correções acima, sem sucesso.

O que fiz foi executar o Squid Proxy Server e adicionar os nomes de host em / etc / hosts no servidor. (A edição requer um reinício do squid.)

Depois disso, faça as configurações de proxy apropriadas no navegador ou no painel de controle do sistema operacional.

Jim O'Connell
fonte
0

Verifique as permissões no /etc/hostsarquivo.

No meu serviço de nuvem após a clonagem de um servidor, as permissões no arquivo hosts foram alteradas de 644para, 600para que o arquivo não pudesse ser lido pelo apache ( www-data), eu acho. Corri sudo chmod 644 hostsa partir /etce que fixa-lo.

O problema começou como:

MongoConnectionException Failed to connect to: localhost:27017: Previous connection attempts failed, server blacklisted. 

Eu o localizei na variável do servidor no MongoClient, apontando para o host local. Não foi possível executar ping no host local ou no nome do host.

user228414
fonte
Às vezes, tive sucesso ao alterar 'localhost' para '127.0.0.1' nesses tipos de casos
pbr
0

Edite /etc/nsswitch.conf, comente abaixo da linha adicionando # na frente da linha

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

e adicione

hosts:          files mdns4_minimal [NOTFOUND=return] dns

Basicamente, a configuração é reordenada. Agora, o processo de pesquisa de domínio consultará primeiro o arquivo que é /etc/hostse, em seguida, o DNS. Com a configuração padrão, ele consulta o DNS antes de qualquer outro serviço ou arquivo apropriado.

Para teste rápido, esteja funcionando ou não, você pode usar

sudo python -m SimpleHTTPServer 80

criar um servidor HTTP simples para veicular arquivos do diretório e comentar na linha abaixo do /etc/hostsarquivo

127.0.0.1      localhost
127.0.1.1      01hw730983

e adicione

127.0.0.1       content

vá para um navegador e digite content/, se você conseguir ver a estrutura de diretórios funcionando, ou não.

robô
fonte