Wenn ich in meiner Firma Ubuntu installiere, kann ich keinen lokalen Rechner anpingen:
$ ping foobar.mycompany.local
ping foobar.mycompany.local: Name or service not known
Wenn ich es aber am Anfang der Liste einsetze, dann funktioniert es dns
:/etc/nsswitch.conf
# hosts: files mdns4_minimal [NOTFOUND=return] dns
hosts: dns files mdns4_minimal [NOTFOUND=return]
Ich würde gerne verstehen, warum.
Antwort1
Ihr Unternehmen verwendet eine DNS-Domäne mit der Endung .local
. Dabei handelt es sich eigentlich um ein Spezialsuffix, das von der IETF reserviert ist fürMulticast-DNSDa Sie einen mDNS-Client installiert haben (mdns4_minimal), wird dieser für die vorrangige Behandlung aller *.local
Namen konfiguriert.
(Leider ist es in Firmenintranets immer noch üblich, einfach einen nicht existierenden Domänennamen zu erfinden oderIP AdresseReichweite und hoffe, dass es für immer nicht existent bleibt ...)
Gehen Sie Ihre konfigurierten Module nacheinander durch:
hosts: files mdns4_minimal [NOTFOUND=return] dns
- Das Modul „Dateien“ durchsucht /etc/hosts und gibt dann „nicht gefunden“ zurück.
- Die Verarbeitung wird mit dem nächsten Modul fortgesetzt.
- Das Modul „mdns4_minimal“ durchsucht das lokale LAN-Subnetz mithilfe von Multicast DNS (mDNS) und gibt dann „nicht gefunden“ zurück.
[NOTFOUND=return]
gibt an, dass die Verarbeitung nach diesem Fehler nicht fortgesetzt werden soll; d. h. „nicht gefunden“ soll sofort an das Programm zurückgegeben werden.- Das Modul „DNS“ wird nie erreicht.
Warum das zusätzliche "[NOTFOUND=return]"? Laut verschiedenen Quellen soll es dazu dienen, erfolglose Abfragen zu beschleunigen, Informationslecks zu verhindern und die Belastung öffentlicher DNS-Server zu verringern.
Nehmen wir an, jemandes Netzwerktatsächlich genutztmDNS (üblicherweise unter Linux/macOS). Wenn der Benutzer versucht, „MyLittleLaptop.local“ aufzulösen und es nicht gefunden wird, versucht das System es mit dem nächsten Modul („dns“) und die Abfrage wird an den öffentlichen DNS gesendet (z. B. an die DNS-Server der Schule oder an den Router des Cafés).
Aber – gemäß der IETF-Einschränkung – *.local
können Namen unmöglich im öffentlichen DNS existieren, daher wäre eine solche Abfrage nutzlos, sie offenbart lediglich Ihre persönlichen Daten dem Netzwerkadministrator. Daher wird das Tag [NOTFOUND=return] hinzugefügt, um zu verhindern, dass die Abfrage vollständig das DNS erreicht.
Wenn Ihr Firmennetzwerk .local
internes DNS verwendet und Sieziemlich sicherEs wird nie mDNS verwenden. Sie können das gesamte Modul entfernen – das Ergebnis:
hosts: files dns
Wenn Sie DNS priorisieren möchten, sich aber die Möglichkeit zur Verwendung von mDNS offen halten möchten, verschieben Sie es an das Ende:
hosts: files dns mdns_minimal