web-dev-qa-db-ja.com

名前解決は機能しませんが、nslookupは機能します

Solaris 11のインストールで非常に奇妙な問題が発生しています。DNS解決が機能しませんが、奇妙なことに、nslookupは機能し、接続は正常です。

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

ファイルの関連セクション:

  • / etc/resolv.conf:(これは私たちのLinuxボックスが持っているものと同じです)

    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
    
7
NullUser

Solaris 11以降、ネットワーク構成が根本的に変更されました。nsswitch.confは現在、情報を提供するだけです。自動モードではない場合(DNSが正しく構成されているはず)の場合、新しい手順は次のとおりです。

http://docs.Oracle.com/cd/E23824_01/html/E24456/gliyc.html#OSTELgllc

7
jlliagre

SMFを使用したネームサービスの構成

次の例は、SMFコマンドを使用してDNSを構成する方法を示しています。

# 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
4
max

あなたの問題は、Solarisネームサービスデーモン、またはより正確にはこの獣の構成に関係していると思います。おそらく、/ etc/nsswitch.confを手動で編集しましたか?これは、ネームサービスデーモンがそれを取得しない理由を説明します。

Nslookupコマンドは、Solarisネームサービスを使用しません。これは、nslookupが期待どおりに機能しているのに、他のすべてが機能していない理由を説明している可能性があります。

Solarisでは、getentコマンドを使用して、検索サービスが期待どおりに機能しているかどうかを確認することを常にお勧めします。あなたの例では次のようになります:

新しいホストstackexchange.com 

したがって、問題は、Solarisネームサービスが、ローカルファイルとDNSのの両方でホスト名を検索する必要があることをSolarisネームサービスに確実に知らせる方法です。 Solaris 11では、/ etc/nsswitch.confなどのファイルを直接編集することを/許可されなくなったことを思い出してください。これらは、SMFの下で実行されるデーモンによって制御されます。これを変更する方法は次のとおりです。

#svccfg 
 svc:> 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> exit 
#svcadm refresh name-service/switch 

この後、あなたはあなたの/etc/nsswitch.confファイルがディスクに書き直されました。以前に手動で編集したことがある場合は、実際の変更が表示されない場合があります。 getentコマンドを再発行すると、うまくいけばうまくいきます。

幸運を。

3
peterh

Solaris 10の場合、私はsvcadm restart /system/name-service-cache;その後、Telnet/pingを使用してホストを解決できます。

1
Hazhar Ismail

まず、trussからnscdを開始してください:

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

上記のtrussコマンドの実行中に、試してください

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

次に、一時的にnscdを無効にしてください:

svcadm disable name-service-cache

そして実行します:

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

これで、name-service-cacheを再度有効にすることができます。

svcadm enable name-service-cache

試してみましょう...うまくいくことを願っています。

1
anil rathod