Alternativa scoperta per sostituire l'argomento mDNSResponder?


13

Questo è un seguito diretto a questa domanda . Prima di Yosemite , aggiungerei l'argomento "-AlwaysAppendSearchDomains" al file plist di mDNSResponder in modo che tutte le ricerche del resolver locale aggiungessero i domini di ricerca, indipendentemente dal fatto che fosse presente un punto nell'etichetta da cercare. Ad esempio, se provo a ssh con il nome host foo.bar o foo, il dominio di ricerca di baz.com dovrebbe essere provato, non solo per quest'ultimo caso, poiché era (ed è) il comportamento predefinito.

Ora, sembra che mDNSResponder sia sparito, sostituito con discoveryd. Non riesco a trovare un'opzione simile per ottenere sempre l'aggiunta del dominio di ricerca. Suggerimenti? Preferirei non seguire la strada dell'utilizzo di un resolver locale non predefinito, ma lo considero un'opzione. Per ora, scriverò solo i nomi di dominio completi lunghi, ma preferirei davvero di no.

Grazie Pete


In precedenza avevo provato ad abilitare il mDNSResponder disabilitato ma da DP8, questo sembra del tutto assente :( Ho un ticket di supporto inoltrato agli ingegneri Yosemite ora sull'opzione -AlwaysAppendSearchDomains e su come gestirlo con discoveryd, quindi posterò ulteriori risultati qui quando mi contattano tra qualche giorno.
djh

@djh, qualche fortuna con gli ingegneri Apple?
Sigsegv,

Ciò viene risolto come parte della 10.10.1 aggiornamento: Allows you to append search domains for partially qualified domain names when performing DNS lookups (consult the discoveryd man page for more information). Vedi la risposta di @ Teknisten di seguito.
cOle2,

Ciò sembra essere meno rilevante nelle versioni più recenti di macOS poiché hanno rimosso discoveryd in 10.10.4 macrumors.com/2015/06/30/apple-releases-os-x-10-10-4
Scott Willeke

Risposte:


18

Dal 10.10.1, il modo più semplice per risolvere questo problema è aggiungere --AlwaysAppendSearchDomainsal ProgramArgumentsfile plist/System/Library/LaunchDaemons/com.apple.discoveryd.plist

Quindi riavviare com.apple.discoveryd.plistcon:

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.discoveryd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.discoveryd.plist

Tutto questo secondo l'aiuto stampato da:

/usr/libexec/discoveryd --help

Ciò farà lo stesso che ha fatto per mDNSResponder per quanto ne so.


Purtroppo non funziona a El Capitan.
Dmitry Verkhoturov,

4

Esegui sudo discoveryutil mdnsactivedirectory yes in Terminal. Secondo https://discussions.apple.com/message/26927843#26927843 è la soluzione.

Questo può essere fatto per funzionare automaticamente ogni volta che si avvia un terminale senza password:

  • sudo visudo
    • aggiungi una linea in fondo %admin ALL=NOPASSWD: /usr/sbin/discoveryutil
    • Se il gruppo di amministratori non funziona, esegui groupsal terminale e utilizza un gruppo appropriato, forse "staff" o "tutti". O semplicemente usa un nome utente individuale senza il lead%
  • Per testare il cambiamento visudo
    • sudo -k
    • sudo sue verifica che ti venga richiesta la password. Quindi control-c senza inserire la password
    • sudo discoveryutil mdnsactivedirectorye verifica che non ti venga richiesta la password
  • Aggiungi una riga a ~ / .bash_profile sudo discoveryutil mdnsactivedirectory yes
  • Aggiungi terminale agli elementi di accesso dell'utente
    • il 10.10: Preferenze di Sistema-> Utenti e gruppi, selezionare Utente
    • Vai alla scheda "Elementi di accesso" e aggiungi / Applicazioni / Utilità / Terminale

Come lo rendi permanente? Dopo il riavvio sarà necessario eseguire nuovamente questo comando.
JoeriBe

Questo non sembra funzionare per me, almeno ha scritto nomi host non .local. Ho ancora bisogno di digitare "ssh foo.bar.baz.com" invece di "ssh foo.bar", anche se ".baz.com" è nel mio percorso di ricerca.
Sigsegv,

Non dovresti aggiungere in un utente ~/.bash_profileuna modifica di configurazione che deve essere fatta a livello del demone di sistema, qui discoveryd.
dan

1

Purtroppo nessuna soluzione, ma ho scoperto che puoi almeno controllare la configurazione del resolver usando 'discoveryutil', in questo modo:

mdbraber-mba:~ mdbraber$ sudo discoveryutil configresolver
Configuration Resolvers: Resolver domain [default], type Unicast, ifIndex 4, port 0, timeout 30, A yes, AAAA no, serviceID 0, scope None, order 0
    server 192.168.143.1
    search domain ourhouse
Configuration Resolvers: Resolver domain [default], type Unicast, ifIndex 4, port 0, timeout 30, A yes, AAAA no, serviceID 0, scope InterfaceID, order 0
    server 192.168.143.1

Apparentemente il primo risolutore elenca un dominio di ricerca, sebbene non funzioni come in OS X <10.10 versioni. Non ho idea del perché esista un secondo resolver senza un dominio di ricerca elencato.


1

Ecco una soluzione compromessa che utilizza un nameserver locale - funziona per me:

https://github.com/joedj/yosemite_dnsfix


1
Sarebbe meglio aggiungere la soluzione come parte della risposta, altrimenti se il collegamento scompare mai, la risposta diventa inutile. Puoi modificare il tuo post per aggiungerlo.
Tetsujin,
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.