Come è configurata la ricerca DNS per OSX Mountain Lion?


33

Se cat il mio resolv.conf, vedo questo messaggio:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#

Sto cercando di aggiungere una voce DNS. Ho modificato il mio file hosts e scaricato la cache del DNS, ma il nome non si risolve se lo uso host servername. Pensavo che forse hostnon fosse configurato per guardare il hostsfile. Come posso risolvere la mia nuova voce e cosa utilizza OSX in caso contrario resolv.conf?

Risposte:


17

Lo strumento host non risolve semplicemente i nomi (come in, usando il risolutore di nomi di sistema) ma in realtà interroga i server DNS (come in, inviando pacchetti a udp / 53 e possibilmente tcp / 53): non conosce né usa il hostsfile locale .

Se vuoi testare il resolver del sistema operativo (come in, gethostbyname () e funzioni libc simili) puoi provare a eseguire il ping del nome che hai aggiunto /etc/hostse onorerà ciò che hai inserito in quel file.

Inoltre, come hai già scoperto, la ricerca DNS su Mac OSX non viene utilizzata /etc/resolv.confe il modo corretto per configurare i server DNS su cui eseguire la query è nella GUI delle impostazioni di rete e / o networksetupnello strumento da riga di comando. Onestamente non so se è possibile configurare l'ordine in cui vengono provate le fonti, ma il comportamento standard è quello di provare /etc/hostsprima i server DNS e successivamente.


1
Ho trovato un wrapper perl per getaddrinfo: search.cpan.org/~pevans/Socket-GetAddrInfo-0.22
Ben Flynn,

26

I resolver DNS possono essere aggiunti in OS X tramite il networksetupcomando:

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

Inserisci il nome della connessione di rete come appropriato. Questi resolver verranno visualizzati in resolv.conf quando viene generato automaticamente, ma le modifiche dirette a resolv.conf non comporteranno l'utilizzo di tali resolver. Presumo che i resolver siano archiviati in un plist da qualche parte; Cercherò e riferirò.

Modificato per aggiungere: sembra che sia il file plist XML che memorizza i server DNS /Library/Preferences/SystemConfiguration/preferences.plist.

Il file host in / private / etc / hosts dovrebbe funzionare per forzare la risoluzione per nomi particolari (/ etc è un link simbolico a / private / etc). Puoi verificare la tua sintassi e che stai modificando il file corretto?


Quindi potrei usare questo comando per aggiungere il file hosts?
Ben Flynn,

non puoi, e non è necessario
Luke404,

No, se vuoi aggiungere nomi al file hosts, aggiungili direttamente. Il file hosts viene verificato prima durante la risoluzione dei nomi, seguito dalla cache di risoluzione locale e quindi dai server DNS configurati. L'uso del comando "host" per testarlo non controlla il file hosts locale. Un modo semplice per testare sarebbe usare un'utilità di rete come il ping.
phoebus,

1
A volte l'interfaccia ottiene nomi sciocchi, per ottenere il nome esatto che devi fare Puoi networksetup -listallnetworkservices anche, se contiene spazi, devi citare un solo nome per intero, cioè:sudo networksetup -setdnsservers 'white space' 8.8.8.8 8.8.4.4
Marcin

2
È possibile configurare il resolver per utilizzare una porta diversa da 53?
Rune FS,
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.