Il file OS X 10.10.1 / etc / hosts e / private / etc / hosts viene ignorato e non si sta risolvendo


40

Come dice il titolo, eseguendo os x 10.10.1. se ho una voce nel mio file hosts e faccio un digo nslookupmostra ancora un IP diverso da quello che è nel mio file hosts anche dopo aver provato a svuotare varie cache.

Ho provato il seguente ..

  1. svuota le cache mdns e udns eseguendo:
    1. sudo discoveryutil mdnsflushcache;
    2. sudo discoveryutil udnsflushcaches;
  2. svuotare la cache utilizzando dscacheutil -flushcache
  3. ricaricare il discoveryd.plistfile
    1. sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist
    2. sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist

il mio file hosts è simile a questo ..

% cat /private/etc/hosts
##
# 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
166.78.60.102   admin.devsite1.com

3
Sembra che Yosemite non stia usando gli host come prima; non svuota le cache allo stesso modo, e mDNS ha preso posto in secondo piano - Questo ha un sacco di chiacchiere sull'argomento - forums.macrumors.com/showthread.php?t=1741422 Modifica ahh ... immagino hai già ottenuto fino a azchipka.thechipkahouse.com/…
Tetsujin,

grazie, sì, l'ho già letto .. se è così che os x sarà .. è scadente: \
gorelativo

1
Sono contento di non dover fare affidamento su host su Mac, tbh; Tendo a giocare sempre su Win quando devo farlo, anche se non è l'unica cosa che mi tiene lontano da Yosemite in questo momento :(
Tetsujin,

Sì, il mio rmbp è la macchina di sviluppo primaria che uso sfortunatamente per lo sviluppo web / sysadmin e ho bisogno di capirlo, altrimenti tornerò ai maverick.
gorelativo

Altri potrebbero voler disabilitare solo ipv6 sulle loro stazioni di lavoro, ho trovato questo che spiega la chiave: technipages.com/how-to-disable-ipv6-in-macos-sierra - Tuttavia, anche dopo aver disabilitato ipv6 su my nic, il problema persisteva .
James T Snell,

Risposte:


61

/ private / etc / hosts sembra funzionare normalmente per me in Yosemite (versione 10.10.1). Non è necessario svuotare la cache o ripristinare discoveryd(il resolver DNS in Yosemite); sudo fs_usage | grep private/etc/hostsmostra la discoverydlettura del file immediatamente dopo aver salvato le modifiche.

[Aggiornamento: è discoverydstato utilizzato solo nelle versioni OS X 10.10.0 - 10.10.3. Nelle versioni precedenti e successive, mDNSResponderfornisce la stessa funzione ... e nota immediatamente anche le modifiche in / etc / hosts.]

Tuttavia, dig, nslookup, e hostnon vedrà le voci in essa, perché essi bypass risolutore del sistema e fanno ricerche DNS prime. Lo hanno sempre fatto, quindi non è una novità in Yosemite. Il modo "ufficiale" di effettuare una ricerca tramite il resolver di sistema in OS X è utilizzare dscacheutil:

dscacheutil -q host -a name www.example.com

... ma dal momento che è dolorosamente prolisso, tendo a usare solo pinginvece (e quindi guardare la prima riga, dove elenca quale IP sta eseguendo il ping). A partire da 10.9, è anche possibile utilizzare la scheda Ricerca dell'utilità di rete (prima utilizzata dige quindi ignorata la politica di ricerca del sistema).

A proposito, per favore non prestare attenzione al thread macrumors che Tetsujin ha collegato; è pieno di persone che non sanno bene cosa stanno facendo e fraintendono i risultati dei propri errori.


1
grazie Gordon, sì ho capito dopo che ho postato questo che dig, nslookupe hostnon utilizzare la risoluzione DNS locale. Detto questo, /etc/hostsfunziona come previsto.
Gorelative

Se aggiorno il mio /etc/hostsfile o il mio /private/etc/hostsfile, allora non si riflette affatto con dscacheutil -q host -a name www.example.como qualsiasi altro comando ..
Viaggio

3
@Trip assicurarsi che le voci aggiunte siano formattate correttamente: indirizzo IP seguito da uno spazio o una scheda, seguito dal nome, quindi da un avanzamento di riga alla fine della riga. Prova a stampare il file hosts con cat -vet /etc/hostsper rendere visibili i caratteri normalmente invisibili. Ogni riga dovrebbe apparire come "127.0.0.1 ^ Inetsecuritybureau.com $" ("^ I" è una scheda e "$" è l'alimentatore) o "127.0.0.1 netsecuritybureau.com $". Se vedi una "^ M" (ritorno a capo) appena prima di "$", hai un testo formattato DOS / Windows e devi rimuovere il ritorno a capo (i).
Gordon Davisson,

Ah, grazie mille per l'aiuto. Ho seguito il tuo esempio assicurandomi che fosse una scheda o uno spazio. La mia riga recita esattamente:, M127.0.0.1^Iyoutube.com^M^Mpoi mi sono esibito dscacheutil -flushcache; sudo killall -HUP mDNSRespondere quando navigo su youtube.com fa apparire comunque youtube e non localhost.
Viaggio

@Trip Esistono diversi modi per ripulire i caratteri invisibili come quelli della riga di comando, ma ti consiglio l'editor GUI TextWrangler - usa il menu Visualizza> Display di testo> Mostra invisibili per vedere (e modificare) cose come quelle ritorni a capo. Inoltre, è gratuito e ha opzioni per mostrare / aprire file e cartelle invisibili (come / etc) e per usare i diritti di amministratore per modificare i file di sistema.
Gordon Davisson,

17

Ho scoperto un'altra ruga con questo problema.

Per risolvere il problema che stavo riscontrando, ho dovuto AGGIUNGERE voci di file host in stile IPv6.

Sembra che Safari trascuri le voci di IPv4 SE hai una configurazione di configurazione di rete IPv6.

È necessario aggiungere voci duplicate che si risolvono nell'indirizzo localhost IPv6 in / etc / hosts.

Voce IPv4 127.68.56.101 facebook.com

ad es. voce IPv6 fe80::1%lo0 facebook.com

eccetera.


1
Nota che ho avuto successo con questo per funzionare utilizzando gli indirizzi IP più brevi: 0.0.0.0 e :: 1
Ben Morrow,

grazie, ha funzionato anche per me. mi stava grattando la testa dopo aver ripristinato le configurazioni di vhosts / apache dopo l'aggiornamento. apprezzato.
Gavin,

Sì, questo è stato risolto anche per me.
advert2013

1

Il mio file hosts continuava a essere ignorato dopo averlo modificato con la modifica del testo. Ho provato diversi modi per correggere i finali di linea, ho aggiunto voci IPv6 alle voci IPv4 esistenti senza successo dopo la risposta di JB Smiths sopra . Sospetto che la sua risposta funzionerebbe se la mia azienda supporta IPv6 che ho scoperto dopo i miei tentativi.

L'unica soluzione che ha funzionato per me è usare questo plugin GUI gratuito per modificare il file hosts.

https://github.com/specialunderwear/Hosts.prefpane/blob/master/README.mdown


1

Ho trovato questo articolo perché Yosemite 10.10.5 non stava rilevando le modifiche ai file dei miei host e non potevo fare altro che risolverlo. (Ho riavviato, ho provato a svuotare la cache, ho seguito tutti i consigli che ho trovato su Internet, ecc. Ecc.).

La risposta è stata così semplice che in realtà è imbarazzante, ma ho pensato di condividere. Ho usato textedit per modificare il file hosts e mi sono preso la libertà di salvare il file come hosts.txt. Normalmente noterei qualcosa del genere, ma sto usando una nuova installazione di Yosemite e non avevo ancora attivato "mostra tutte le estensioni di file", quindi non sembrava che il nome del file fosse cambiato quando l'ho visto sul mio desktop.

Quindi è abbastanza ovvio, e la maggior parte delle persone che leggono questo post probabilmente lo hanno già fatto, ma assicurati di controllare che il tuo file hosts sia effettivamente lì e non sia stato sostituito da hosts.txt .

Per attivare la visualizzazione delle estensioni di file, vai su Finder> Preferenze> Mostra tutte le estensioni di file

Per interrompere TextEdit di aggiungere l'estensione .txt ai file, aprire un file in modificare testo e scegliere File> Salva con nome (Se non vedi la Salva con nome voce di menu, tenere premuto il tasto opzione dopo aver fatto clic File e Salva con nome dovrebbe appare nel menu). Cerca l'opzione Se non viene fornita alcuna estensione, usa ".txt" e deselezionala.


0

Credo che Apple lo riconoscerà come un bug (ne ho inviato uno oggi). Ho notato che /etc/hostsvengono prese nuove voci ma, le modifiche alle voci esistenti vengono ignorate. Quindi .... la modifica del nome host di una voce (ad es. Web1 in web1a) mi ha fornito una soluzione alternativa.

Voce OLD / etc / hosts: 54.173.164.18 web1

NOVITÀ / etc / hosts: 54.174.161.12 web1a


sudo dscacheutil -flushcache - svuota la cache del servizio di directory.
Kevin Buchs,

0

Nel mio caso avrei impostato un .ssh / config

#Host *.ourdemo.ca
  User jumpy
  ProxyCommand ssh ourjumpbox.ca -W %h:%p

Ti dispiacerebbe spiegare cosa fa il file di configurazione e come questo è correlato alla domanda?
klanomath,

1
La domanda era: perché una voce in un file / etc / hosts locale veniva ignorata. Nel mio caso, veniva ignorato perché avevo incaricato di eseguire il tunneling di tutto il traffico verso un set di macchine (* .ourdemo.ca) attraverso una casella proxy (ourjumpbox.ca). SSH obbedì obbedientemente alla connessione, in modo che risultasse essere il file / etc / hosts del proxy utilizzato per risolvere l'indirizzo anziché il mio file / etc / hosts locale.
Martin Cleaver,

0

Ho avuto un problema molto simile in cui ho ricevuto via mail due file da aggiungere al mio /etc/hosts

Il dominio conteneva un -likemy-domain.com

Il problema si è rivelato essere il client di posta elettronica del mittente - non importa dire, MS Outlook - che ha convertito l'ascii -nel lungo -carattere che Microsoft ama così tanto da usare la sua correzione automatica incorporata per sostituirla -con la loro -.

Il file hosts sembrava perfetto ed è stato difficile trovare questo problema. Quando ho eliminato le righe e le ho riscritte manualmente, hanno iniziato a funzionare.

È stato così difficile da capire questo, che ho approfondito il motivo per cui il client MacOS dovrebbe ignorare il file hosts e saltare direttamente alla risoluzione dei nomi.


0

Ho appena avuto questo problema. È stato causato facendo copia / incolla da hipchat invece di scrivere l'indirizzo.

Il processo di copia ha aggiunto alcuni caratteri errati anziché spazi e ha causato il problema.

Riscrivere la riga ha risolto il problema.


0

Sto usando l'app SelfControl (in realtà su macOS mojave 10.14.4) da un po 'di tempo ormai e ho pensato di controllare come SelfControl fa le sue voci ... sembrano così:

0.0.0.0 xyz.com
:: xyz.com
0.0.0.0 www.xyz.com
:: www.xyz.com

in base a questo ho cambiato tutto nel mio localhost, quindi

127.0.0.1
::1

lavori.


Non sono sicuro di come questo risponda alla domanda. Sembra solo qualche osservazione casuale, non correlata alla domanda.
Tetsujin,

1
Puoi aggiungere alcuni dettagli su dove esattamente hai cambiato cosa e come si collega alla domanda?
Nohillside

La domanda era perché il file hosts veniva ignorato dal 10.10.1 ... Ero nella stessa situazione in cui le voci manuali venivano ignorate ma le voci fatte tramite l'app SelfControl funzionavano come previsto. Ciò che mancava alle mie precedenti voci, era la seconda parte, i domini con "www.". Non sono riuscito a capire cos'altro non andava nelle mie voci, dal momento che tutto funzionava bene prima del 10.10.1.
Needlol
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.