Die Namensauflösung funktioniert nicht, nslookup jedoch


7

Ich habe ein sehr seltsames Problem mit meiner Installation von Solaris 11. Die DNS-Auflösung funktioniert einfach nicht, aber seltsamerweise funktioniert nslookup und die Konnektivität ist in Ordnung:

root@solarisxyz:~# ping stackexchange.com
ping: unknown host stackexchange.com
root@solarisxyz:~# nslookup stackexchange.com
Server:         10.x.x.x (DNS)
Address:        10.x.x.x#y

Non-authoritative answer:
Name:   stackexchange.com
Address: 64.34.119.12

root@solarisxyz:~# ping 64.34.119.12
64.34.119.12 is alive

Relevante Abschnitte von Dateien:

  • /etc/resolv.conf : (das ist das gleiche, was unsere Linux-Boxen haben)

    domain us.oracle.com
    nameserver 10.x.x.x
    nameserver 10.x.x.x  
    
  • / etc / hosts :

    # ::1 solarisxyz localhost (commented out)
    127.0.0.1 localhost loghost solarisxyz
    
  • /etc/nsswitch.conf :

    hosts:    files dns
    # pretty much everything else set to files
    

In resolv.conf, ist es tatsächlich 10.x.x.xoder haben Sie die IP-Adresse versteckt?
Amphetamachine

@amphetamachine Die tatsächliche Adresse ist korrekt und per Ping erreichbar.
NullUser

1
Könnten Sie bitte die Ausgabe dieser Befehle vergleichen:dig @10.x.x.x stackexchange.com dig @8.8.8.8 stackexchange.com dig stackexchange.com
Amphetamachine

Antworten:


7

Die Netzwerkkonfiguration hat sich ab Solaris 11 radikal geändert. Nsswitch.conf ist nur noch informativ. Angenommen, Sie befinden sich nicht im automatischen Modus. In diesem Fall wäre DNS korrekt konfiguriert worden. Gehen Sie wie folgt vor:

http://docs.oracle.com/cd/E23824_01/html/E24456/gliyc.html#OSTELgllcu


Das Bearbeiten von Dateien wie nsswitch.confhat also im Grunde keinerlei Auswirkungen auf die Netzwerkkonfiguration?
NullUser

In der Tat wird nsswitch.conf jetzt von smf verwaltet, genau wie resolv.conf und viele andere / etc-Konfigurationsdateien. Weitere Informationen finden Sie auf den Handbuchseiten.
Jlliagre

4

Konfigurieren von Namensdiensten mithilfe von SMF

Das folgende Beispiel zeigt, wie DNS mithilfe von SMF-Befehlen konfiguriert wird.

# svccfg
svc:> select dns/client
svc:/network/dns/client> setprop config/search = astring: \
("us.company.com" "eu.company.com" "companya.com" "companyb.com" "company.com" )
svc:/network/dns/client> setprop config/nameserver = net_address: \
( 138.2.202.15 138.2.202.25 )
svc:/network/dns/client> select dns/client:default
svc:/network/dns/client:default> refresh
svc:/network/dns/client:default> validate
svc:/network/dns/client:default> select name-service/switch
svc:/system/name-service/switch> setprop config/host = astring: "files dns"
svc:/system/name-service/switch> select system/name-service/switch:default
svc:/system/name-service/switch:default> refresh
svc:/system/name-service/switch:default> validate
svc:/system/name-service/switch:default> 
# svcadm enable dns/client
# svcadm refresh name-service/switch
# grep host /etc/nsswitch.conf
hosts:  files dns
# cat /etc/resolv.conf

Ich hasse dieses System. Danke für deinen Rat.
Max

3

Ich denke, Ihr Problem hat etwas mit dem Solaris Name Service-Daemon oder genauer mit der Konfiguration dieses Tieres zu tun. Vielleicht haben Sie /etc/nsswitch.conf von Hand bearbeitet? Dies würde erklären, warum der Name Service-Daemon ihn nicht erkennt.

Der Befehl nslookup verwendet den Solaris Name Service nicht. Dies könnte erklären, warum nslookup wie erwartet funktioniert, während alles andere nicht funktioniert.

Unter Solaris ist es immer eine gute Idee, mithilfe des getentBefehls zu überprüfen, ob die Suchdienste wie erwartet funktionieren . In Ihrem Beispiel wäre es:

getent hostet stackexchange.com

Die Frage ist also, wie sichergestellt werden kann, dass der Solaris Name Service weiß, dass Hostnamen sowohl in lokalen Dateien als auch in DNS gesucht werden müssen. Denken Sie daran, dass Sie in Solaris 11 Dateien wie /etc/nsswitch.conf nicht mehr direkt bearbeiten dürfen / dürfen. Sie werden von Dämonen gesteuert, die unter SMF ausgeführt werden. So ändern Sie es:

# svccfg
svc:> name-service / switch auswählen
svc: / system / name-service / switch> setprop config / host = astring: "dateien dns"
svc: / system / name-service / switch> wähle system / name-service / switch: default
svc: / system / name-service / switch: default> refresh
svc: / system / name-service / switch: default> validate
svc: / system / name-service / switch: default> exit
# svcadm Name-Service / Switch aktualisieren

Danach werden Sie feststellen, dass Ihre /etc/nsswitch.confDatei neu auf die Festplatte geschrieben wurde. Wenn Sie zuvor von Hand bearbeitet haben, sehen Sie möglicherweise keine tatsächliche Änderung. getentGeben Sie den Befehl erneut aus und hoffentlich funktioniert er jetzt.

Viel Glück.


1

Für Solaris 10 habe ich getan svcadm restart /system/name-service-cache; Dann kann ich den Host mit Telnet / Ping auflösen.


1

Zunächst starten Sie bitte trussauf nscd:

truss -aefld -vall -wall -rall -o truss-nscd.out -u nss_\*:: -u libnsl:: -p `pgrep nscd`

trussVersuchen Sie es bitte, während der obige Befehl ausgeführt wird

truss -aefld -vall -wall -rall -o truss-getent_1.out -u a.out,libnsl:: getent hosts ANY_HOSTNAME

Dann bitte vorübergehend deaktivieren nscd:

svcadm disable name-service-cache

und Renn:

truss -aefld -vall -wall -rall -o truss-getent_2.out -u a.out,libnsl:: -u nss_\*:: getent hosts ANY_HOSTNAME

Jetzt können Sie den Name-Service-Cache wieder aktivieren:

svcadm enable name-service-cache

Versuchen Sie jetzt ... hoffe, es wird funktionieren.

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.