セカンダリ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 についてはプライマリのみで運用しようと思います。