Perché il file / etc / hosts non funziona?


29

Ho avuto problemi con questo per un po 'e ho provato tutto quello che so, quindi ho pensato che fosse finalmente giunto il momento di chiedere aiuto.

Qualsiasi modifica /etc/hostsapportata non funziona.

Esempio:

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

Nell'esempio sopra, quando accedo dev.julianfernand.es(questo non esiste), dovrebbe caricarsi da 192.168.1.100.

Se eseguo il ping, funziona perfettamente. Tuttavia, quando accedo dev.julianfernand.esutilizzando Google Chrome o Firefox, non funziona.

Ora, dopo aver riavviato un paio di volte, funziona. Ma dal momento che lavoro in una società di hosting WordPress gestita, mi occupo di molte situazioni in cui devo modificare il mio file per vedere il sito Web del cliente sul nostro server.

Non riesco proprio a riavviare il mio computer. Non è affatto produttivo. Il riavvio del servizio di rete non funziona, lo stesso per la pulizia della cache (anche la cache DNS interna di Chrome).

Qualcuno ha un'idea qui? Questo succede con elementaryOS (basato su Ubuntu 12.04) e Ubuntu 13.10 (quotidiano). Non ho ancora provato con un'altra versione.

PS: in questo caso, ho un server NGINX in esecuzione su questa macchina con PHP-FPM e MySQL.

Grazie in anticipo :)


Difficile conoscere il problema. Quando l'accesso al sito tramite nome host (dev.julianfernand.es) non riesce, è possibile accedervi tramite indirizzo IP (192.168.1.100)?
Pantera,

@ bodhi.zazen Sì, posso. Tuttavia, poiché la nostra azienda non utilizza l'idea predefinita di "accesso IP per accedere al sito Web" da host condivisi, ciò non funziona.
Julian Fernandes,

Non ti stavo suggerendo di accedere a siti Web tramite ip come soluzione a lungo termine. Le informazioni aiutano il debug anche se escludono altri problemi dal firewall al routing ai problemi lato server.
Pantera,

Che dire se si digita l'indirizzo IP nella barra degli indirizzi del browser?
Sergiy Kolodyazhnyy,

Risposte:


14

In Ubuntu se si desidera svuotare la cache DNS, è necessario riavviare il nscddemone.

Installa nscdusando il seguente comando:

sudo apt-get install nscd

Svuota la cache DNS in Ubuntu usando il comando seguente:

sudo service nscd restart

O

sudo service dns-clean start

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


Controllare anche la configurazione di Nginx e il file di registro degli errori. Ci deve essere qualche indizio lì dentro quando si accede al sito.
Arnold,

7

Per me ha funzionato: aggiungi

addn-hosts=/etc/hosts

nel

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

uccidere dnsmasq e

service NetworkManager restart

6

Per me la soluzione era quella di modificare il /etc/nsswitch.conffile (è possibile utilizzare il comando sudo vim /etc/nsswitch.conf). Ho cambiato linea:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

a:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

e ora funziona come previsto!


1
Probabilmente vuoi filesessere la prima voce se vuoi /etc/hostsavere la precedenza sui risultati dei server DNS.
muru,

È strano ma non è un errore, devo avere esattamente questo ordine per farlo funzionare.
jmarceli,

4

La risposta accettata funziona disattivando dal 12.04 al 13.04 dnsmasq, ma ha smesso di funzionare per me nel 13.10. Ho trovato la seguente nuova soluzione per il 13.10.

Modifica il tuo / etc / default / dnsmasq e cambia ENABLED=1in ENABLED=0e riavvia.


2
non ho alcun file dnsmasq nel percorso specificato. Sono su Linux 15.04
Hiren,

Non c'è più una risposta accettata. Di quale risposta stai parlando?
toon81,

3

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

Una nuova "funzionalità" in Ubuntu 12.04 desktop edition è da utilizzare dnsmasqcome plugin per NetworkManager per DNS locale. Dnsmasq ha lo scopo di velocizzare i servizi DNS e DHCP ma ha uno sfortunato effetto collaterale: dnsmasqmemorizza nella cache il DNS locale e ignora le modifiche /etc/hosts. Apporto frequenti modifiche al file hosts mentre lavoro su siti Web, quindi questa "funzionalità" è stata piuttosto fastidiosa.

La soluzione è disabilitare dnsmasqnel file di configurazione di Networkmanager. Apri /etc/NetworkManager/NetworkManager.confe commenta la riga:

dns=dnsmasq

Il mio NetworkManager.conffile contiene quanto segue:

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

[ifupdown]
managed=false

Vedi anche https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298


1
Ho provato questo il 13.10 e elementaryOS, ancora niente. Ma grazie per l'aiuto! :)
Julian Fernandes,

@JulianFernandes Sembra che non funzioni il 13.10. Ho seguito questo consiglio e ha funzionato il 12.04, ma dopo l'aggiornamento alla 13.10, dnsmasq è tornato e non riesco a liberarmene.
Mark E. Haase,


1

Semplice e aggiornato

  1. Crea /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Metti linee come address=/whatever/1.2.3.4in esso. Vedi i documenti (cerca --address). I caratteri jolly sono possibili: address/.whatever./1.2.3.4.
  3. Kill dnsmasq( bug ).
  4. Riavviarlo: $ service network-manager restart.

0

Sembra che il tuo setup sia molto simile al mio. Ho una scatola che esegue Ubuntu come server dell'ufficio e host di sviluppo. Su quella scatola, eseguo le app Nginx, Apache, Tomcat, Rails e qualsiasi altra cosa di cui abbia bisogno.

Dal mio Mac, posso semplicemente aggiungere una voce host e caricare il server con qualsiasi nome di cui ho bisogno, ma da un client ElementaryOS, che non funziona.

Ho provato le correzioni sopra, senza successo.

Quello che ho fatto è stato eseguire Squid Proxy Server e aggiungere i nomi host a / etc / hosts sul server. (La modifica richiede un riavvio di calamari.)

Successivamente, configurare le impostazioni proxy appropriate nel browser o nel pannello di controllo del sistema operativo.


0

Controlla le autorizzazioni sul /etc/hostsfile.

Sul mio servizio cloud dopo aver clonato un server le autorizzazioni sul file hosts sono cambiate da 644a 600quindi il file non può essere letto da apache ( www-data) immagino. Sono corso sudo chmod 644 hostsda /etce questo l'ha riparato.

Il problema è iniziato come:

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

L'ho rintracciato fino alla variabile server in MongoClient che punta a localhost. Non sono stato in grado di eseguire il ping di localhost o del nome host.


A volte ho avuto successo cambiando 'localhost' in '127.0.0.1' in questo tipo di casi
pbr

0

Modifica /etc/nsswitch.conf, commenta sotto la riga aggiungendo # davanti alla riga

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

e aggiungi

hosts:          files mdns4_minimal [NOTFOUND=return] dns

Fondamentalmente, la configurazione viene riordinata. Ora il processo di ricerca del dominio consulterà prima il file, /etc/hostsquindi il DNS. Con la configurazione predefinita consulta il DNS prima di qualsiasi altro servizio o file appropriato.

Per una rapida verifica se funziona o meno

sudo python -m SimpleHTTPServer 80

per creare un semplice server HTTP per servire i file dalla directory e quindi commentare sotto la riga nel /etc/hostsfile

127.0.0.1      localhost
127.0.1.1      01hw730983

e aggiungi

127.0.0.1       content

quindi vai a un browser e digita content/, se riesci a vedere la struttura della directory che funziona altrimenti non lo è.

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.