¿Por qué el archivo / etc / hosts no funciona?

29

He tenido problemas con esto durante un tiempo y he intentado todo lo que sé, así que pensé que finalmente era hora de pedir ayuda.

Cualquier edición que haga /etc/hostssimplemente no funciona.

Ejemplo:

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

En el ejemplo anterior, cuando accedo dev.julianfernand.es(esto no existe), debería cargarse desde 192.168.1.100.

Si hago ping, funciona bien. Sin embargo, cuando accedo dev.julianfernand.esusando Google Chrome o Firefox, no lo hace.

Ahora, después de reiniciar un par de veces, funciona. Pero como trabajo en una empresa administrada de alojamiento de WordPress, me enfrento a muchas situaciones en las que tengo que editar mi archivo para ver el sitio web del cliente en nuestro servidor.

Simplemente no puedo seguir reiniciando mi computadora. No es productivo en absoluto. Reiniciar el servicio de red no funciona, lo mismo para borrar el caché (incluso el caché DNS interno de Chrome).

¿Alguien tiene una idea aquí? Esto sucede con elementaryOS (basado en Ubuntu 12.04) y Ubuntu 13.10 (diariamente). No he probado con ninguna otra versión todavía.

PD: si esto importa, tengo un servidor NGINX ejecutándose en esta máquina con PHP-FPM y MySQL.

Gracias por adelantado :)

Julian Fernandes
fuente
Difícil saber el problema. Cuando falla el acceso al sitio a través del nombre de host (dev.julianfernand.es), ¿puede acceder a él a través de la dirección IP (192.168.1.100)?
Panther
@ bodhi.zazen Sí, puedo. Sin embargo, dado que nuestra empresa no utiliza la idea predeterminada de "acceso IP para acceder al sitio web" de los hosts compartidos, esto no funciona.
Julian Fernandes
No estaba sugiriendo que acceda a sitios web a través de ip como una solución a largo plazo. Sin embargo, la información ayuda a la depuración, ya que excluye otros problemas desde el firewall hasta el enrutamiento hacia problemas del lado del servidor.
Panther
¿Qué pasa si escribe la dirección IP en la barra de direcciones de su navegador?
Sergiy Kolodyazhnyy

Respuestas:

14

En Ubuntu si desea vaciar la caché de DNS, debe reiniciar el nscddemonio.

Instale nscdusando el siguiente comando:

sudo apt-get install nscd

Vaciar caché DNS en Ubuntu con el siguiente comando:

sudo service nscd restart

O

sudo service dns-clean start

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

Arnold
fuente
Compruebe también su configuración de Nginx y el archivo de registro de errores. Debe haber alguna pista al acceder al sitio.
Arnold
7

Lo siguiente funcionó para mí: agregar

addn-hosts=/etc/hosts

en

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

matar a dnsmasq y

service NetworkManager restart
Ruediger
fuente
6

Para mí, la solución fue editar el /etc/nsswitch.confarchivo (puede usar el comando sudo vim /etc/nsswitch.conf). He cambiado de linea:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

a:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

¡y ahora está funcionando como se esperaba!

jmarceli
fuente
1
Probablemente desee filescomo primera entrada si desea /etc/hoststener prioridad sobre los resultados de los servidores DNS.
muru
Eso es extraño, pero no es un error, tengo que tener exactamente este orden para que funcione.
jmarceli
4

La respuesta aceptada funciona en 12.04 a 13.04 deshabilitando dnsmasq, pero dejó de funcionar para mí en 13.10. Encontré la siguiente solución nueva para 13.10.

Editar / etc / default / dnsmasq y el cambio ENABLED=1a ENABLED=0y reinicie.

Mark E. Haase
fuente
2
No tengo ningún archivo dnsmasq en la ruta especificada. Estoy en Linux 15.04
Hiren
Ya no hay una respuesta aceptada. ¿De qué respuesta estás hablando?
toon81
3

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

Una nueva "característica" en la edición de escritorio Ubuntu 12.04 es usarla dnsmasqcomo complemento de NetworkManager para DNS local. Dnsmasq está destinado a acelerar los servicios de DNS y DHCP, pero tiene un efecto secundario desafortunado: dnsmasqalmacena en caché el DNS local e ignora los cambios /etc/hosts. Realizo cambios frecuentes en el archivo de hosts mientras trabajo en sitios web, por lo que esta "característica" fue bastante molesta.

La solución es deshabilitar dnsmasqen el archivo de configuración de Networkmanager. Abre /etc/NetworkManager/NetworkManager.confy comenta la línea:

dns=dnsmasq

Mi NetworkManager.confarchivo contiene lo siguiente:

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

[ifupdown]
managed=false

Ver también https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298

Pantera
fuente
1
Intenté esto en 13.10 y elementaryOS, todavía nada. ¡Pero gracias por la ayuda! :)
Julian Fernandes
@JulianFernandes Parece que esto no funciona en 13.10. Seguí este consejo y funcionó en 12.04, pero después de actualizar a 13.10, dnsmasq ha vuelto y no puedo deshacerme de él.
Mark E. Haase
1

Simple y actualizado

  1. Crear /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Pon líneas como address=/whatever/1.2.3.4esta. Ver los documentos (buscar --address). Los comodines son posibles: address/.whatever./1.2.3.4.
  3. Matar dnsmasq( error ).
  4. Reiniciarlo: $ service network-manager restart.
mightyiam
fuente
0

Parece que tu configuración se parece mucho a la mía. Tengo una caja que ejecuta Ubuntu como mi servidor de oficina y host de desarrollo. En ese cuadro, ejecuto las aplicaciones Nginx, Apache, Tomcat, Rails y todo lo que necesito.

Desde mi Mac, simplemente puedo agregar una entrada de hosts y cargar el servidor con el nombre que necesite, pero desde un cliente de ElementaryOS, eso no funciona.

Probé las soluciones anteriores, sin éxito.

Lo que hice fue ejecutar Squid Proxy Server y agregar los nombres de host a / etc / hosts en el servidor. (La edición requiere un reinicio del calamar).

Después de eso, realice la configuración de proxy adecuada en su navegador o en el panel de control del sistema operativo.

Jim O'Connell
fuente
0

Verifique los permisos en el /etc/hostsarchivo.

En mi servicio en la nube después de clonar un servidor, los permisos en el archivo de hosts cambiaron 644a 600para que apache ( www-data) no pueda leer el archivo, supongo. Corrí sudo chmod 644 hostsa partir /etcy que arreglé.

El problema comenzó como:

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

Lo rastreé hasta la variable del servidor en MongoClient apuntando a localhost. No pude hacer ping a localhost o al nombre de host.

usuario228414
fuente
A veces he tenido éxito al cambiar 'localhost' a '127.0.0.1' en este tipo de casos
pbr
0

Editar /etc/nsswitch.conf, comentar debajo de la línea agregando # delante de la línea

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

y añadir

hosts:          files mdns4_minimal [NOTFOUND=return] dns

Básicamente, la configuración se reordena. Ahora el proceso de búsqueda de dominio consultará primero el archivo que es /etc/hostsy luego consultará DNS. Con la configuración predeterminada, primero consulta el DNS antes que cualquier otro servicio o archivo apropiado.

Para una prueba rápida de si funciona o no, puede usar

sudo python -m SimpleHTTPServer 80

para crear un sencillo servidor HTTP para servir archivos de directorio y luego comentar debajo de la línea en el /etc/hostsarchivo

127.0.0.1      localhost
127.0.1.1      01hw730983

y añadir

127.0.0.1       content

luego vaya a un navegador y escriba content/, si puede ver que la estructura de directorios está funcionando, de lo contrario no funciona.

larva del moscardón
fuente