Seit OS X Lion (10.7) verhaelt sich die Namensaufloesung im Zusammenhang mit den Such-Domains nicht mehr wie man dies erwarten wuerde. Hat man z.B. die Domain example.com, welche auch bei den Such-Domains eingetragen ist, und einen Host mit dem FQDN webserver.example.com kann man einfach ssh webserver im Terminal aufrufen und alles ist gut.
Hat man nun jedoch einen Server mit dem FQDN server1.webserver.example.com, wuerde man erwarten, dass man diesen mittels ssh server1.webserver erreicht. Jedoch erhaelt man nun die Meldung:

ssh: Could not resolve hostname server1.webserver: nodename nor servname provided, or not known

Dies liegt daran, dass OS X alles was einen Punkt enthaelt nicht mehr um die Such-Domains erweitert und somit die Aufloesung von server1.webserver fehlschlaegt.

Die Loesung

Um das erwartete Verhalten zu erlangen, muss dem Dienst fuer die Namensaufloesung nun gesagt werden, dass die Such-Domain immer angehaengt werden soll. Dazu muss je nach OS X Version die entsprechende Property List angepasst werden. Fuer OS X 10.10 (ab 10.10.1) ist der discoveryd zustaendig und fuer OS X 10.7 bis 10.9 ist es der mDNSResponder. Bei beiden heisst die Option AlwaysAppendSearchDomains (ein Mal mit einem - davor und beim anderen mit Zweien).

OS X 10.10: /System/Library/LaunchDaemons/com.apple.discoveryd.plist

Bei Yosemite muss die /System/Library/LaunchDaemons/com.apple.discoveryd.plist entsprechend angepasst werden:

[...]
<key>ProgramArguments</key>
    <array>
            <string>/usr/libexec/discoveryd</string>
            [...]
            <string>--AlwaysAppendSearchDomains</string>
    </array>
[...]

Um die Aenderungen wirksam werden zu lassen muss entweder der ganze Rechner neugestartet werden oder mittels des Launch Controls die editierte Property List neu eingelesen werden:

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

OS X 10.7 bis 10.9: /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Bei Lion, Mountain Lion und Mavericks muss die /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist entsprechend angepasst werden:

[...]
<key>ProgramArguments</key>
<array>
    <string>/usr/sbin/mDNSResponder</string>
    <string>-AlwaysAppendSearchDomains</string>
</array>
[...]

Um die Aenderungen wirksam werden zu lassen muss entweder der ganze Rechner neugestartet werden oder mittels des Launch Controls die editierte Property List neu eingelesen werden:

$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Ab nun kann man auch ein ssh server1.webserver ausfuehren und erhaelt keine Fehlermeldung mehr, dass der Name nicht gefunden wird.

Changelog

2014-11-18

  • Loesung fuer OS X 10.10 (Yosemite) hinzugefuegt.


Christian Prehl | 4. August 2014 | Tags: searchdomain AlwaysAppendSearchDomains yosemite tipps&tricks osx