Debian 9(stretch)でpingで名前解決ができない(nslookupは使用可)の対処方法

ローカルDNSサーバーを参照して名前解決ができるようにしたのですが、pingコマンドでホスト名を指定すると「名前またはサービスが不明です」となる。
nslookupコマンドでは名前解決ができた。

ここでは pingコマンドで名前解決する方法を掲載しています。

環境

対象クライアント
OS: Debian GNU/Linux 9 (stretch)

インストール済みパッケージ: dnsutils

$ sudo apt list –installed | grep dnsutils
dnsutils/stable,stable,now 1:9.10.3.dfsg.P4-12.3+deb9u4 amd64 [インストール済み]

症状

  • pingコマンドを使ってでドメインを指定すると、名前解決ができない。
  • pingコマンドを使ってIPアドレスを指定すると正常にPING送信ができる。
  • nslookupコマンドで名前解決ができる。

pingコマンドで引けるドメイン名と引けないドメイン名があることがわかった。
aaa.com は OKだが、 aaa.local はNG。

原因

nsswitch.conf のDNSリゾルバが正しくドメインを参照できないため

対策

/etc/nsswitch.confファイルを適切に変更する

変更箇所
変更前)
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
変更後)
hosts: files dns mdns4

念のため、ファイルのバックアップ
user@debian:/etc$ sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.orig

ファイルを編集する
user@debian:/etc$ sudo vi /etc/nsswitch.conf

変更箇所の確認
user@debian:/etc$ diff /etc/nsswitch.conf /etc/nsswitch.conf.orig
12c12
< hosts: files dns mdns4

> hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

mdns4_minimalとは

_minimal 最低限のホスト名のチェックをする
名前解決をしたいホスト名に「.local」が含まれていないかアドレスの範囲169.254.0.0/16(IPV4LL/APIPA/RFC3927)でない場合は名前解決を行わない。

例えば名前解決の手段として/etc/hostsの他にDNSとWINSを使うなど複数のモジュールを使用する場合に早く次のモジュールに制御が移せる効果がある。

コメント

タイトルとURLをコピーしました