Das Hinzufügen von „lokal“ zu den DNS-Suchdomänen hat keine Auswirkung

Ich habe einen Mac Mini (Yosemite) in meinem lokalen Netzwerk und es läuft überhaupt kein DNS-Server. Wenn ich von einem Terminal auf meinem Macbook Air (Yosemite) über SSH darauf zugreifen möchte, kann ich Folgendes eingeben:

$ ssh myserver.local

Und das funktioniert gut.

Aber ich wollte vermeiden, jedes Mal die „.local“-Domain eingeben zu müssen, also habe ich die „local“-Domain zur Liste der Suchdomains in den Netzwerkeinstellungen hinzugefügt (für meinen Wi-Fi-Adapter, der derzeit in meinem MBA verwendet wird ).

Wenn ich dann versuche:

$ ssh myserver

das funktioniert nicht (Hostname konnte nicht aufgelöst werden).

Irgendeine Idee warum?

Antworten (2)

Die Hostnamenauflösung in Mac OS X (seit ~10.3) hat grob gesagt - ich schließe diverse Cache-Mechanismen aus - folgenden Ablauf:

  1. 'Dateien' (zB /etc/hosts) ->
  2. mDNS ->
  3. DNS (Suchdomänen) ->
  4. DNS

Gültige Namen für die verschiedenen Methoden zur Namensauflösung:

für 1: fast beliebige Namen
für 2: name.local
für 3: name (+ search.domain in Ihren Netzwerkeinstellungen) Ein Start Of Authority (SOA) Record für die Top Level Domain ist obligatorisch.
für 4: fqdn

In Ihrem ersten Szenario ( myserver.local) verwenden Sie nur „Dateien“ und mDNS. 'Dateien' schlägt fehl, da es keinen Eintrag myserver.localin Ihrer Hosts-Datei gibt. mDNS kann ihn erfolgreich auflösen, da es sich um einen gültigen und auflösbaren mDNS-Namen handelt.

In Ihrem zweiten Szenario ( myserver& search.domain local) verwenden Sie 1, 2, 3 (und 4). „Dateien“ schlägt fehl, weil Sie keinen Eintrag haben myserver, mDNS schlägt fehl, weil es kein gültiger mDNS-Name ist. DNS (Suchdomänen) schlägt fehl, weil Sie keinen DNS-Server mit einem SOA-Eintrag für .local in Ihrem Netzwerk haben (sowie DNS).

Geben Sie also einfach sudo nano /etc/hostsTerminal ein und fügen Sie die Zeile hinzu:

 a.x.y.z      myserver

(axyz= IP-Nummer Ihres Servers) und es sollte funktionieren. Wenn Sie wirklich faul sind, kann sogar ein 'a' als Name ausreichen. Verwenden Sie jedoch keine einzelnen Zahlen (wie 1 oder 123), da ssh dann möglicherweise versucht, eine Verbindung zu 0.0.0.1 oder 0.0.0.123 herzustellen. Mindestens ping verbindet sich mit 0.0.0.1 oder 0.0.0.123.

Perfekte Antwort. Ich verstehe jetzt die Namensauflösung unter OS X und habe meinen Server auch zu /etc/hosts hinzugefügt, damit ich schnell darauf zugreifen kann. Vielen Dank.
@introiboad gerne geschehen ;-) Ich versuche die Antwort später zu verbessern, aber ich muss mich zuerst eingehender mit Apple mDNS & DNS befassen. Tatsächlich ist es viel komplexer und es gibt einige Änderungen zwischen den verschiedenen Systemen 10.3-10.10 ...

Die Antwort von @klanomath erklärt perfekt, wie die Namensauflösung funktioniert, warum Ihr Versuch nicht funktioniert hat und wie Sie auf Ihrem lokalen Computer ein Pseudonym für eine statische Adresse über die /etc/hostsDatei erstellen können.

Wenn es jedoch myserverkeine statische Adresse hat, sondern dynamisch zugewiesen wird (z. B. durch DHCP), /etc/hostsist dies nicht ideal, da man einen Weg finden muss, die darin enthaltene Adresse auf dem neuesten Stand zu halten.

Für SSH kann man stattdessen einen Alias ​​erstellen in /etc/ssh/ssh_config(systemweit) oder ~/.ssh/config(benutzerspezifisch):

Host myserver
    HostName myserver.local

Dann können Sie einfach ssh myserver.

Danke für den Tipp. "myserver" hat eine statische IP-Adresse (es ist ein Mac Mini, der sowohl als Backup-Server als auch als Mediaplayer fungiert). Wenn ich mich jemals entscheide, zu DHCP zu wechseln, werde ich die von Ihnen beschriebene Alias-Funktionalität verwenden.