現時点で抱えている自宅ネットワークの問題のひとつとして、DNS参照問題があります。これは毎度発生するDHCP問題にも関連してくるんだけど、、、
家の中にある端末から自宅サーバにFQDN指定でアクセスできなかったのです。普通のDNSは外部のグローバルアドレスを返してくるんだけど、それだと内部からアクセスできない問題が起こってしまった。
これは、利用しているフレッツ光ネクスト回線に付属しているホームゲートウェイにヘアピンNAT機能が無いことが原因だとわかりました。
そこで、それを解決するために、内部側にBINDでDNSサーバを立ち上げることにしたんだけど、色々と厄介な問題が発生した。
(厄介だとか言っておきながらムッチャ楽しんだんだけどw)
今回立ち上げた内部DNSの役割は、内部にあるサーバのローカルアドレスを通知し、解決できない外部のサイトやIPv6のサイトについては、ホームゲートウェイ経由でプロバイダのDNSを参照するようにすることとしました。
そこで問題発生。
普通の環境だったら、端末がどのDNSサーバを参照するかをDHCPサーバから払い出し(通知)を受けて、それを利用することになります。(最初はそう思っていたw)でも、そこがうまくいかなかった。
これまでホームゲートウェイのDHCP機能を利用していたんだけど、このホームゲートウェイが古い(300系)もんで、通知するDNSサーバを変更することができなくて、自身を通知するようになっていた。
端末がいくつかあって手動設定するわけにもいかないし、しょうがないので、DHCPサーバも内部に構築することにした。これで自身をDNSサーバとして通知することにすれば問題解決だと、考えてたんだけど、何故かうまくいかなかった。
端末の設定をipconfigで確認してみると、ちゃんとDNSサーバのアドレスが払い出されているんだけど、ちょっとnslookupやdigで確認してみると、外部のグローバルアドレスを取得していて、同じ問題となる。
よくよく確認すると、IPv6アドレスのDNSサーバ(ホームゲートウェイ)を参照していることに気付いた。そこでDHCPでIPv6のDNSサーバも払い出すようにしたんだけど、何故かホームゲートウェイを参照してる。
そこでピンときたんだけど、RAのことを忘れてたw
そうだった。IPv6アドレスもだけど、DNSアドレス(IPv6の)もRAで払い出されるんだったw
そして、WindowsはそのIPv6とIPv4の払い出されたDNSサーバのうちIPv6のDNSサーバを優先して利用することになるようだ。
なんだか、ネットで調べるとWindowsをかなりマニアックにいじると解決できそうな感じだったけど、端末はWindowsだけじゃ無いし、敬遠することにした。そして、いまの対処(暫定)としては、Windows端末のうち内部サーバによくアクセスする端末はIPv6の機能を停止することにして、ipadやiphoneなどのIOS系の端末はDNSサーバを手動でIPv4だけを参照する設定にすることにして、しのいでいる状況です。
おそらくだけど、ホームゲートウェイを最新の機種に変更すればヘアピンNAT機能とか色々と機能が豊富になってると思うんで、解決できるんだと思う。これって、無料らしいんだけど注文するのが面倒くさいので、まぁそこまで困って無いので、今はそのままにしておくことにしてる。
ただ、、、立ち上げたDHCPサーバがあんまり安定して無くて、、、あとプライベートビエラが何故かかってにDHCPサーバに切り替わったり、わけわからないことが起こってたりするんだよなぁ。