セカンダリDNS設定時の注意

ちょっとネットワーク寄りの細かい話になりますがご容赦ください。

DNS は、ドメイン名からIPアドレスを引き当てる非常に重要なサービスですが、先日自社の Windows 7 PC でこんな事象が発生しました。

nslookup aaa.mycompany.co.jp で得られたIPアドレス → ローカルIP
ping aaa.mycompany.co.jp で得られたIPアドレス → グローバルIP

工エエェェ(´д`)ェェエエ工 ってなったわけです。このPCは、社内の一部のサーバーにアクセスできなくなっており、その調査をする段階で発見しました。aaa は外部公開しているサーバーで、社内からはローカルIP、社外からはグローバルIPでアクセスするわけですが、なぜ社内のPCでこのような事象が発生するのでしょうか。

いろいろ調べていった結果、自社ではDNSサーバーの再構築にあたって、各PCの設定を下記の通り変更していっていました。

プライマリDNS (優先DNS):自社内の内部DNSサーバー (ローカルIP)
セカンダリDNS (代替DNS):Google DNS (8.8.8.8)

なぜこんな設定にしたかというと、ノートパソコンで社外に持ち出してホテルや自宅のネットワークに接続した際に、DNSを自動取得に変更したりしなくても接続できるように…という親切心からだったような気がします。社内にいるときはプライマリDNSが優先され、社外にいるときはセカンダリDNSが優先されるはず。

ところが、Windows 7 では、どうもプライマリとセカンダリへの問い合わせが競合?混在?するようで、nslookup の結果はプライマリの結果なのに、ping や Webアクセス はセカンダリを利用している…という状態となってしまいました。Windows 10 では発生していない (発生しても、一度 ipconfig /flushdns をすれば二度と発生しない) ので、Windows 7 固有の問題のように思います。

理由はよく分かりませんが、セカンダリの設定を削除したら見事に事象はおさまったので、Windows 7 についてはプライマリのみで運用しようと思います。