/etc/resolv.conf
には、稼働中のネームサーバーが含まれています(ping
コマンドによって報告されます)Host
またはnslookup
はgoogle.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
またはtelnet
はgoogle.com
を解決できません
$ ping google.com
ping: unknown Host google.com
$ telnet google.com
google.com: node name or service name not known
ping
とtelnet
は、設定されたDNSサーバーにクエリを実行していないため、ホスト名を解決できなかったようです(Host
とnslookup
は異なるDNSを使用しているようですコードのクエリ)、解決策は:
上書き/etc/nsswitch.conf
と/etc/nsswitch.dns
:
cp /etc/nsswitch.dns /etc/nsswitch.conf
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にも適用されます。
これの一部を使用できるとよいのですが。
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