Discoveryd Alternative pour remplacer l'argument mDNSResponder?

13

Il s'agit d'une suite directe à cette question . Avant Yosemite , j'ajoutais l'argument "-AlwaysAppendSearchDomains" au fichier plist mDNSResponder afin que toutes les recherches de résolveur local ajoutent les domaines de recherche, qu'il y ait ou non une période dans l'étiquette à rechercher. Par exemple, si j'essaie de ssh vers le nom d'hôte foo.bar ou foo, le domaine de recherche de baz.com doit être essayé, non seulement pour ce dernier cas, comme cela a été (et est) le comportement par défaut.

Maintenant, il semble que le mDNSResponder soit parti, remplacé par Discoveryd. Je ne trouve pas d'option similaire pour l'ajouter toujours au domaine de recherche. Suggestions? Je préfère ne pas suivre la voie de l'utilisation d'un résolveur local non par défaut, mais je le considérerais comme une option. Pour l'instant, je vais simplement taper les longs FQDN, mais je préfère vraiment ne pas.

Merci, Pete

Sigsegv
la source
J'avais précédemment essayé d'activer le mDNSResponder désactivé mais depuis DP8, cela semble tout à fait absent :( J'ai maintenant un ticket de support transmis aux ingénieurs de Yosemite concernant l'option -AlwaysAppendSearchDomains et comment gérer cela avec Discoveryd donc je posterai plus loin découvertes ici quand ils me contacteront dans quelques jours.
djh
@djh, une chance avec les ingénieurs Apple?
Sigsegv
Ce problème est résolu dans le cadre de la 10.10.1 mise à jour: Allows you to append search domains for partially qualified domain names when performing DNS lookups (consult the discoveryd man page for more information). Voir la réponse de @ Teknisten ci-dessous.
cOle2
Cela semble moins pertinent sur les nouvelles versions de macOS car elles ont supprimé la découverte dans 10.10.4 macrumors.com/2015/06/30/apple-releases-os-x-10-10-4
Scott Willeke

Réponses:

18

Depuis 10.10.1, la façon la plus simple de résoudre ce problème est d'ajouter --AlwaysAppendSearchDomainsà ProgramArgumentsdans le fichier plist/System/Library/LaunchDaemons/com.apple.discoveryd.plist

Redémarrez ensuite com.apple.discoveryd.plistavec:

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

Tout cela selon l'aide imprimée par:

/usr/libexec/discoveryd --help

Pour autant que je sache, cela fera la même chose que pour le mDNSResponder.

Teknisten
la source
Ne fonctionne pas à El Capitan malheureusement.
Dmitry Verkhoturov,
4

Exécutez sudo discoveryutil mdnsactivedirectory yes dans Terminal. Selon https://discussions.apple.com/message/26927843#26927843, c'est la solution.

Cela peut être exécuté automatiquement lors du lancement d'un terminal sans mot de passe:

  • sudo visudo
    • ajouter une ligne en bas %admin ALL=NOPASSWD: /usr/sbin/discoveryutil
    • Si le groupe administrateur ne fonctionne pas, exécutez-le groupssur le terminal et utilisez un groupe approprié - peut-être «personnel» ou «tout le monde». Ou utilisez simplement un nom d'utilisateur individuel sans le premier%
  • Pour tester le changement de visudo
    • sudo -k
    • sudo suet vérifiez que le mot de passe vous est demandé. Puis contrôlez-c sans entrer votre mot de passe
    • sudo discoveryutil mdnsactivedirectoryet vérifiez qu'on ne vous demande pas de mot de passe
  • Ajoutez une ligne à ~ / .bash_profile sudo discoveryutil mdnsactivedirectory yes
  • Ajouter un terminal aux éléments de connexion de votre utilisateur
    • sur 10.10: Préférences Système-> Utilisateurs et groupes, sélectionnez l'utilisateur
    • Allez à l'onglet "Éléments de connexion" et ajoutez / Applications / Utilitaires / Terminal
user97566
la source
Comment rendez-vous cela permanent? Après un redémarrage, vous devrez à nouveau exécuter cette commande.
JoeriBe
Cela ne semble pas fonctionner pour moi, au moins par rapport aux noms d'hôtes non .local. J'ai encore besoin de taper "ssh foo.bar.baz.com" au lieu de "ssh foo.bar", même si ".baz.com" est dans mon chemin de recherche.
Sigsegv
Vous ne devez pas ajouter à un utilisateur ~/.bash_profileune modification de configuration qui doit être effectuée au niveau du démon système, ici discoveryd.
dan
1

Aucune solution malheureusement, mais j'ai découvert que vous pouvez au moins vérifier la configuration du résolveur en utilisant 'discoveryutil', comme ceci:

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

Apparemment, le premier résolveur répertorie un domaine de recherche, bien qu'il ne semble pas fonctionner comme sous les versions OS X <10.10. Aucune idée pourquoi il existe un deuxième résolveur sans domaine de recherche répertorié.

mdbraber
la source
1

Voici une solution piratée utilisant un serveur de noms local - fonctionne pour moi:

https://github.com/joedj/yosemite_dnsfix

joedj
la source
1
Il serait préférable d'ajouter la solution dans le cadre de la réponse, sinon si le lien disparaît, la réponse devient inutile. Vous pouvez modifier votre propre message pour l'ajouter.
Tetsujin