Ich habe einen neu gebauten Fedora 20-Server, den ich gerade an mein Netzwerk angeschlossen habe. Es ist ein virtueller Server, der auf einem VirtualBox-Host läuft. Alles scheint zu funktionieren, aber ich habe ein Problem mit der Namensauflösung.
(Ich sollte an dieser Stelle erwähnen, dass die Namensauflösung von einem Windows-Server auf separater Hardware bereitgestellt wird, der für alle anderen Computer im Netzwerk gut funktioniert.)
Über die Befehlszeile kann ich einen externen Host wie auflösen unix.stackexchange.com
. Ich kann das problemlos auflösen und anpingen, wie bei jedem anderen externen Host, den ich ausprobiert habe.
Mein lokales Netzwerk (nennen wir es xyz.local
) ist jedoch anders. Die Netzwerkschnittstelle auf meinem F20-Rechner hat DOMAIN=xyx.local
im Netzwerkskript (vollständiges Skript unten). Von der Befehlszeile aus kann ich beispielsweise , server-01
aber nicht auflösen server-01.xyz.local
.
Ich kann einen Alias in der Kurzform auflösen, obwohl der kanonische Name die Langform ist, also wird beispielsweise ping mysql
erfolgreich in seinen Alias aufgelöst , ich kann jedoch weder noch linux-04.xyz.local
auflösen .mysql.xyz.local
linux-04.xyz.local
Offensichtlich habe ich etwas übersehen. Kann mir jemand sagen, was?
/etc/hosts hat nur die Standard-Localhost-Einträge für 127.0.0.1
/etc/resolv.conf lautet wie folgt:
#Generated by Network Manager
search xyz.local
nameserver 192.168.xxx.xxx
Mein Schnittstellenskript ist
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="Wired connection 1"
UUID=<uuid>
ONBOOT=yes
IPADDR0=192.168.xxx.xxx
PREFIX0=24
GATEWAY0=192.168.xxx.xxx
DNS1=192.168.xxx.xxx
HWADDR=<mac>
DOMAIN=xyz.local
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
Antwort1
Ein Teil Ihres Problems ist wahrscheinlich darauf zurückzuführen, dass Ihr Suchpfad automatisch über NetworkManager generiert wird:
search xyz.local
Diese Zeile sollte eigentlich so lauten:
search xyz.local.
Der Punkt am Ende ist wichtig, da er dem DNS-Resolver mitteilt, dass er anhalten soll. So etwas passiert Ihnen also nicht:
mysql.xyz.local.xyz.local
Sie können dies bestätigen, indem Sie versuchen, Hostnamen aufzulösen, indem Sie vorübergehend selbst manuell einen Punkt hinzufügen.
$ nslookup mysql.xyz.local.
Diese Domain wird umfassend aufgelöst
Um dies zu beheben, müssen Sie die Definition Ihrer Domäne auf Ihrem DHCP-Server ändern, sodass die Domäne als bereitgestellt wird xyz.local.
.
/etc/nsswitch.conf
Die Methode, mit der ein Hostname aufgelöst wird, wird durch die Datei gesteuert /etc/nsswitch.conf
. Die Notation NSS steht für Name Service Switch und Sie können mehr darüber auf der Manpage lesen man nss
.
Hier ist die Zeile aus meiner Datei, die steuert, wie Hostnamen aufgelöst werden:
$ grep ^hosts /etc/nsswitch.conf
hosts: files dns mdns4_minimal
Es sucht zuerst in meiner lokalen Datei /etc/hosts
und fragt dann DNS ab.
Antwort2
Das Problem wird durch das Schlüsselwort „mdns4_minimal“ in der Datei nsswitch.conf verursacht. Dieses Schlüsselwort teilt dem Resolver mit, dass alles, was mit „local“ endet, mit mdns abgefragt werden soll. Es sollte ausreichen, dieses Schlüsselwort (und zusätzliche Optionen, die normalerweise in eckigen Klammern angegeben sind) zu entfernen.
Weitere Einzelheiten finden Sie in meinemPost
Der Grund, warum nslookup alles auflöst, liegt darin, dass es nicht in nsswitch.conf nachsieht, sondern /etc/resolv.conf direkt verwendet. Ping hingegen ist auf einen Resolver angewiesen, der zuerst in nsswitch.conf nachsieht und den Namen mit dem auflöst, was dort steht.