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

名前解決は機能しませんが、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/ホスト:

    # ::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
    

答え1

Solaris 11 以降、ネットワーク構成が基本的に変更されました。 nsswitch.confは現在情報提供用です。サイレントモードではなく、DNSが正しく設定されている場合、新しい手順は次のとおりです。

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

答え2

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

答え3

私の考えでは、あなたの問題はSolarisネームサービスデーモン、より正確にはこのモンスターの構成に関連しているようです。たぶん、/etc/nsswitch.confを手動で編集しましたか?これは、ネームサービスデーモンがこれを受け取らなかった理由を説明します。

私が知る限り、nslookupコマンドはSolarisネームサービスを使用しません。これはnslookupが期待どおりに機能しているように見えますが、他のすべてがそうでない理由を説明できます。

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

getent ホスト stackexchange.com

したがって、問題は、Solarisネームサービスが2つのローカルファイルでホスト名を見つける必要があることをどのように知ることができるかを確認することです。またDNSから。 Solaris 11 では、/etc/nsswitch.conf などのファイルを直接編集することはできません。これはSMFで実行されるデーモンによって制御されます。変更する方法は次のとおりです。

#svccfg
svc:>ネームサービス/スイッチの選択
svc:/system/name-service/switch> setprop config/host = astring: "file dns"
svc:/system/name-service/switch> システム/name-service/switch:default を選択
svc:/system/name-service/switch:default> 更新
svc:/system/name-service/switch:default> 確認
svc:/system/name-service/switch:default> 終了
# svcadm リフレッシュネームサービス/スイッチ

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

頑張ってください。

答え4

まず、次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

これでネームサービスのキャッシュを再度有効にできます。

svcadm enable name-service-cache

今試してみてください。効果がありますように。

関連情報