Warum löst "host" und "nslookup" unter Solaris 10 Hostnamen auf, während "ping" und "telnet" dies nicht tun?


7
  • /etc/resolv.confenthält einen aktiven Nameserver (wie vom pingBefehl gemeldet )
  • hostoder nslookupkann lösengoogle.com

    $ host google.com
    google.com has address 74.125.228.3
    google.com has address 74.125.228.4
    ...
    $ nslookup google.com
    ...
    Non-authorative answer:
    Name:   google.com
    Address: 74.125.228.0
    Name:   google.com
    Address: 74.125.228.1
    ..
    
  • pingoder kann telnetnicht aufgelöst werdengoogle.com

    $ ping google.com
    ping: unknown host google.com
    $ telnet google.com
    google.com: node name or service name not known
    

Antworten:


10

Es scheint pingund telnetwar nicht möglich, Hostnamen aufzulösen, da sie den konfigurierten DNS-Server nicht abgefragt haben ( hostund nslookupanscheinend einen anderen DNS-Abfragecode verwenden). Die Lösung lautet:

Überschreiben /etc/nsswitch.confmit /etc/nsswitch.dns:

cp /etc/nsswitch.dns /etc/nsswitch.conf

2
Idealerweise sollten Sie /etc/nsswitch.dns nach /etc/nsswitch.conf kopieren. Dies ist die normale und dokumentierte Methode, um Ihr System für die Verwendung von DNS einzurichten,
einschließlich der

Dies hängt auch davon ab, wie Sie Solaris installiert haben. Wenn Sie im interaktiven Installationsprogramm oder in sysidcfg DNS angeben, sollte nsswitch.conf bereits ordnungsgemäß konfiguriert sein.
James O'Gorman

@AlexandreAlves Danke, ich habe die Antwort aktualisiert.
Adam Siemion

@ JamesO'Gorman Da ich sehr wenig Erfahrung mit Solaris habe, gebe ich zu, dass ich es vielleicht während der Installation verpasst habe. Trotzdem ist es wirklich überraschend, dass dies nicht standardmäßig eingestellt ist.
Adam Siemion

@AdamSiemion Beachten Sie, dass viele der größten Kunden von Solaris geschlossene Umgebungen sind, in denen DNS nicht unbedingt verwendet werden muss, und stattdessen NIS maßgeblich ist. (oder manchmal LDAP). Früher konzentrierte Sun den größten Teil seiner Energie auf die 50 größten Kunden. DNS-Inhalte wurden für den Rest ihrer Kunden hinzugefügt, jedoch nicht als Standard festgelegt, da die Einnahmen aus den Top 50> dem Rest stammen. Oracle spielt wahrscheinlich ein ähnliches Spiel.
Tim Kennedy

2

Adam, Sie sagen uns nicht, welche Version von Solaris Sie verwenden.

Die gesamte Hostsuche unter Solaris erfolgt über den Solaris Naming Service-Daemon. Die einzige Ausnahme besteht darin nslookup, dass eine direkte DNS-Abfrage für einen DNS-Server durchgeführt wird. Der Naming Service-Daemon fungiert im Wesentlichen als Cache für Namensinformationen. Andere Betriebssysteme haben ähnliche Dienste. Der Solaris-Namensdienst ist in der /etc/nsswitch.confDatei konfiguriert .

Ich hoffe wirklich, dass Sie eine ältere Version wie Solaris 10 oder früher verwenden. Andernfalls haben Sie jetzt eine Datei manuell bearbeitet, die Sie nicht mehr bearbeiten sollen: die /etc/nsswitch.confDatei.

Angenommen, Sie arbeiten mit Solaris 10 oder älter: Sie /etc/nsswitch.confsollten einen Eintrag wie diesen haben:

hosts:  files dns

Dies teilt dem Solaris Naming Service mit, dass Hosts zuerst in der lokalen Datei (dh /etc/hosts) und dann in DNS gesucht werden sollen . Sie können hier natürlich auch nur "DNS" haben, aber die Leute werden es normalerweise wollen, damit es /etc/hostsüberschreiben kann, was in DNS ist.

Möglicherweise müssen Sie jetzt den Namensdienst-Daemon neu starten:

svcadm restart /system/name-service-cache

Sie können Ihr Namensdienst-Setup jederzeit mit dem Solaris- getentBefehl überprüfen :

getent hosts google.com

Der getentBefehl überprüft, ob der Solaris-Namensdienst wie erwartet funktioniert. Sie können dies nicht verwenden nslookup, um dies zu überprüfen.



Wenn Sie mit Solaris 11 arbeiten , können Sie die Antwort von nolan600 auf diese Frage verwenden . Der getentBefehl gilt auch für Solaris 11.



Ich hoffe, Sie können etwas davon verwenden.


/usr/bin/hostist eine weitere Ausnahme, da es sich um einen direkten DNS-Client handelt und die Solaris-Namensdienste nicht verwendet.
Alanc

0
root @ solaris: ~ # svccfg -s Name-Service / Schalter
svc: / system / name-service / switch> setprop config / host = "dateien dns"
svc: / system / name-service / switch> listprop config
Konfigurationsanwendung
Konfigurations- / Standard-Astring-Dateien
config / value_authorization astring solaris.smf.value.name-service.switch
Konfiguration / Drucker adressiert "Benutzerdateien"
config / host astring "files dns"
svc: / system / name-service / switch> exit
root @ solaris11: ~ # svcadm Name-Service / Switch aktualisieren 

Sie können das DNS auch aktualisieren, wenn es immer noch ein Problem mit Solaris 10 & 11 gibt
Michael James Perry

1
Können Sie Ihre Antwort erklären? Das Einfügen von Code macht es nicht zu einer guten Antwort
Romeo Ninov
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.