web-dev-qa-db-ja.com

Solaris 10で「Host」と「nslookup」がホスト名を解決するのに「ping」と「telnet」は解決しないのはなぜですか?

  • /etc/resolv.confには、稼働中のネームサーバーが含まれています(pingコマンドによって報告されます)
  • Hostまたはnslookupgoogle.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
    ..
    
  • pingまたはtelnetgoogle.comを解決できません

    $ ping google.com
    ping: unknown Host google.com
    $ telnet google.com
    google.com: node name or service name not known
    
7
Adam Siemion

pingtelnetは、設定されたDNSサーバーにクエリを実行していないため、ホスト名を解決できなかったようです(Hostnslookupは異なるDNSを使用しているようですコードのクエリ)、解決策は:

上書き/etc/nsswitch.conf/etc/nsswitch.dns

cp /etc/nsswitch.dns /etc/nsswitch.conf
10
Adam Siemion

Adam、使用しているSolarisのバージョンを教えてくれません。

Solarisでのすべてのホスト検索は、Solarisネームサービスデーモンを経由します。唯一の例外はnslookupで、これはDNSサーバーに対して直接DNSクエリを実行します。ネーミングサービスデーモンは、基本的にネーミング情報のキャッシュとして機能します。他のオペレーティングシステムにも同様のサービスがあります。 Solarisネーミングサービスは/etc/nsswitch.confファイル。

Solaris 10以前などの古いバージョンを使用していることを心から願っています。それ以外の場合は、編集する必要のないファイルを手動で編集しました:/etc/nsswitch.confファイル。

とにかく、あなたがSolaris 10以前を使用しているとしましょう:Your /etc/nsswitch.confには次のようなエントリが必要です。

hosts:  files dns

これは、Solarisネーミングサービスに、ホストをローカルファイルで検索するように指示しますfirst(つまり、/etc/hosts)およびthen DNS。もちろん、ここには「dns」のみを指定することもできますが、通常は/etc/hostsはDNSの内容を上書きできます。

ネームサービスデーモンを再起動する必要があるかもしれません:

svcadm restart /system/name-service-cache

Solarisのgetentコマンドを使用すると、ネームサービスの設定をいつでも確認できます。

getent hosts google.com

getentコマンドは、Solarisネームサービスが期待どおりに機能することを確認します。あなたできませんnslookupを使用してこれを確認します。



Solaris 11を使用している場合、 この質問 に対するnolan600の回答を使用できます。 getentコマンドはSolaris 11にも適用されます。



これの一部を使用できるとよいのですが。

2
unixhacker2010
 root @ solaris:〜#svccfg -s name-service/switch 
 svc:/ system/name-service/switch> setprop config/Host = "files dns" 
 svc :/ system/name-service/switch> listprop config 
 config application 
 config/default astring files 
 config/value_authorization astring solaris.smf.value.name-service.switch 
 config/printer astring "user files" 
 config/Host astring "files dns" 
 svc:/ system/name-service/switch> exit 
 root @ solaris11 :〜#svcadm refresh name-service/switch 
0