Ubuntu-Server löst LAN-Hostnamen nicht auf

14

Bit hier stecken.

Ich habe 2 Maschinen, die LAN-Hostnamen nicht auflösen können, es sei denn, es gibt bestimmte Einträge in / etc / hosts

Andere Computer im LAN können jedoch Hostnamen auflösen.

Mein LAN:

  • 1 x Cisco-Router, der DD-WRT v24-sp2 mit aktiviertem DNSMasq ausführt. Ich habe dies mit den Hostnamen und IPs in meinem LAN konfiguriert.
  • 1 x Kubuntu 12.10 (löst alle Hostnamen korrekt auf, solange sie auf dem Router in DNSMasq eingegeben werden)
  • 2 x NAS (auch alle Namen korrekt auflösen)

  • 1 x Ubuntu Server 12.04 (dadurch werden lokale Hostnamen NICHT aufgelöst, es sei denn, sie werden in / etc / hosts eingegeben)

  • 1 x XBMCLive (Dharma) (gleich - wird nur aufgelöst, wenn sich die Einträge in / etc / hosts befinden)

Wie erhalte ich die letzten 2, um die DNSMasq-Einträge auf dem Router zu verwenden? Jeder Computer ist so eingestellt, dass er den Router als Nameserver verwendet, und alle Einheiten lösen externe Adressen korrekt auf.

Vielen Dank.

einige weitere Infos:

auf dem Server, wenn ich einen anderen PC anpinge (wstation)

$ ping wstation
PING wstation.local.domain (x.x.x.x) 

Wenn ich dann .local anhänge

$ ping wstation.local
PING wstation.local.local.domain (x.x.x.x)

und direkt

$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_req=1 ttl=64 time=0.387 ms
64 bytes from 10.0.0.4: icmp_req=2 ttl=64 time=0.316 ms
64 bytes from 10.0.0.4: icmp_req=3 ttl=64 time=0.312 ms
64 bytes from 10.0.0.4: icmp_req=4 ttl=64 time=0.280 ms
64 bytes from 10.0.0.4: icmp_req=5 ttl=64 time=0.322 ms
^C
--- 10.0.0.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.323/0.387/0.038 ms                                                                       
teracow
quelle
Ich kenne die Antwort nicht und habe keine Ahnung, ob dies hilfreich sein wird, aber falls Sie es nicht wussten ... Ich habe festgestellt, dass es irgendwie gefunden wird, wenn ich ".local" nach einem Computernamen anhänge ohne Konfiguration erforderlich. Es hat mir tatsächlich geholfen, weil ich Adressen angegeben habe, aber immer wieder Einträge ändern musste, wenn ich ein Betriebssystem hinzufügen oder entfernen wollte, das ich zum Testen usw. verwendet habe. Durch die Angabe von machinename.local musste ich mir jedoch keine Sorgen mehr machen. Wenn Sie wissen, woher das kommt, können Sie es mir gerne mitteilen. :)
Marty Fried
1
Hallo Marty, danke für deine Antwort. Ich habe dem Problem weitere Informationen hinzugefügt, um zu zeigen, was mit .local
teracow

Antworten:

15

Über Ihre aktuelle Ausgabe

ping wstation
PING wstation.local.domain

Zeigt eindeutig an, dass Ihr PC .local.domainan Nicht-FQDN-Abfragen angehängt wird. Dies ist falsch konfiguriert oder zumindest falsch in Ihrer Einrichtung. (es sei denn, Sie verwenden das .local.domainSuffix absichtlich)

Namensauflösung und Punkte

Eine wichtige Sache, die viele Leute nicht wissen, ist, dass ein vollständiger Name immer mit einem Punkt ( .) enden sollte . Wenn Sie es weglassen, versucht der Computer, es in der lokalen Suchdomäne (z. B. mydomain.tld) ​​aufzulösen. Also in diesem Fall mypc.localwürde eine Abfrage nach werden mypc.local.mydomain.tld. Um dies zu verhindern, fragen Sie mit dem Punkt ab.

Resolver-Konfiguration

Hierbei ist die Resolver-Konfiguration von großer Bedeutung. In Ubuntu (und Debian) ist dies in der Datei konfiguriert /etc/network/interfaces(vorausgesetzt, Sie führen keinen NetworkManager aus):

iface eth0 inet static
   address 192.168.3.3
   netmask 255.255.255.0
   gateway 192.168.3.1
   dns-nameservers 192.168.3.45 192.168.8.10
   dns-search foo.org bar.com                      # <-- these are the search domains

Die Namensauflösung unter Linux kann auch auf andere Weise erfolgen. Es ist nicht nur so, dass der lokale DNS-Server nach all dem abgefragt wird. Sehen Sie sich Ihre /etc/nsswitch.confDatei für die hostsKonfiguration der Lösung an:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

Dies bedeutet, dass zuerst Dateien versucht werden (dies ist die /etc/hostsDatei), dann mDNS und erst später der echte DNS-Server abgefragt wird. mDNS wird mit Avahi unter Linux implementiert und heißt auf Apple-Geräten Bonjour. Es wird .localstandardmäßig das Suffix verwendet und funktioniert über Broadcast-Nachrichten. Ähnlich wie ARP funktioniert das dann aber für DNS.

Alle diese Systeme können sehr verwirrend sein und noch mehr, wenn sie .localin einem normalen DNS-Setup mit mDNS-Geräten verwendet werden. Ich denke, das ist der Grund, warum Sie jetzt verwirrt sind, warum ein Gerät funktioniert und das andere nicht: Sie verwenden nicht alle die gleiche Auflösungsmethode.

Dinge zu klären

  • Vermeiden Sie die Verwendung, wenn .localSie sich nicht vollständig auf mDNS verlassen möchten. Aus Ihrer Frage geht hervor, dass Sie die Konfiguration der Dinge an einem zentralen Ort aufbewahren möchten. Mein Ansatz hier ist es, dies zu vermeiden.
  • Konfigurieren Sie Ihren lokalen DNS-Server (in Ihrem Fall das DD-WRT-Gerät) für die Verwendung eines speziellen Domainnamens, z my.home. Für dnsmasq ist dies eine einzelne Einstellung, aber in regulären Setups sollte dies sowohl auf dem DNS-Server als auch auf dem DHCP-Server konfiguriert werden (wie dies über DHCP angekündigt wird).
  • Konfigurieren Sie alle PCs so, dass sie einen einfachen und eindeutigen Hostnamen haben. Sie verwenden dies in ihrer Anfrage nach DHCP und dies wird in dem DNSMASQ verwendet, das auf Ihrem Router ausgeführt wird, um sie aufzulösen. Alternativ können Sie sie manuell konfigurieren, damit Sie sich nicht auf DHCP verlassen müssen.
  • Entfernen Sie alle verbleibenden Konfigurationen, /etc/resolv.conffalls Sie in der Vergangenheit daran herumgespielt haben.
  • Konfigurieren Sie die PCs in Ihrem Netzwerk so, dass sie my.homeals lokale Suchdomäne verwendet werden. Dies kann automatisch über DHCP oder bei Verwendung von statischen Adressen über die /etc/network/interfacesDatei oder in Network Manager erfolgen:

    Bildbeschreibung hier eingeben

  • Jetzt sollten sowohl die einfache Namensauflösung ( ping hostname) als auch der vollständige Name ( ping hostname.my.home) funktionieren.
gertvdijk
quelle
5
Beeindruckend! Ehrfürchtige Antwort gertvdijk! Sehr umfangreich. So sehr, dass ich etwas Zeit brauche, um zu verstehen, was Sie gesagt haben. Ich kann sagen, dass ich einen Ping mit einem Punkt nach dem Hostnamen getestet habe und er korrekt funktioniert hat. Ich verwende in diesem LAN kein DHCP für die permanenten Maschinen. Ich habe die .local-Einstellungen auf keinem Computer konfiguriert, da ich nicht verstand, worum es ging. Ich werde dies gemäß Ihren Anweisungen weiter untersuchen und mich bei Ihnen melden.
Teraców
Vielen Dank für diese umfassende Antwort. Ich habe meine /etc/nsswitch.conf so geändert, dass DNS vor mDNS versucht wird files mdns4_minimal [NOTFOUND=return] dns mdns4. Jetzt verhält sich alles eher so, wie ich es von meinen (schlecht benannten) host.foo.local-adressierten Computern erwarte. Bevor diese Änderung ping hostnamefunktionieren würde, ping hostname.foo.localscheiterte sie jedoch. Ich war wirklich verwirrt, als dig hostnamees fehlschlug und dig hostname.foo.localein Ergebnis lieferte, das Gegenteil von dem, was ich erwartet hatte. Jetzt kann ich die FQDNs wie erwartet anpingen. Gibt es einen Nachteil, wenn die Reihenfolge so festgelegt wird?
TafT
1

Aufgrund der Antwort von gertvdijk habe ich gerade die Zeile in nsswitch.conf auskommentiert

sudo vim /etc/nsswitch.conf

.
.
.
hosts:          files dns # mdns4_minimal [NOTFOUND=return] dns
Jan Alfred Richter
quelle
0

Ich habe ähnliche Probleme mit einer / etc / hosts, die mehrere Leerzeichen zwischen IP und Hostname enthält, anstatt ein TAB zu verwenden. Nach dem Wechsel zu TAB konnte der Hostname durch Ping aufgelöst werden.

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

Siehe auch unter /superuser//a/938366/467479

Thomas Lauria
quelle
3
Es tut mir leid, das ist NICHT richtig. Die hosts-Datei funktioniert mit Leerzeichen oder Tabulatoren. Außerdem sollte 127.0.0.1 zuerst localhost gefolgt von localhost.localdomain haben - und abhängig von Ihrer Konfiguration den Hostnamen Ihres Computers. (In einigen Setups, Ubuntu / Debian, haben Sie Ihren Hostnamen in die Zeile 127.0.1.1 eingetragen.) Ich würde jedoch nicht empfehlen, lokale Adressen in der Hosts-Datei zu installieren, da sie mit mDNS / Avahi
The Dude
1
Wenn Sie Windows-Computer in Ihrer Domäne haben, wird anscheinend Unicast-DNS verwendet, das nicht mit den mDNS-Implementierungen von Avahi oder Zeroconf kompatibel ist. Überprüfen Sie auch Ihre /etc/nsswitch.conf, um festzustellen, ob sie nach mdns4_minimal [NOTFOUND = return] oder einer vollständigen mdns4-Suche (Verschieben Sie sie zurück) blockiert. Konfigurieren Sie auch keine DNS-Server für die Verwendung der lokalen Domain, da mDNS / sd-DNS-Resolver Lookups für diese Domain maskieren. Verwenden Sie für Ihre interne DNS-TLD .lan, .work, .home usw. (NICHT jedoch eine der neuen TLDs wie .biz, .xyz, .web usw.). Viel Glück und willkommen in der unterhaltsamen Welt der DNS-Auflösung.
Der