ローカルDNSを構築して起きた問題と対処
目次
ローカルドメインを作りたかっただけなのに・・・
こんにちは、こたかです。
先日「BIND9を家庭で動かすメリット」を実施したのですが、IPv6の動作に新たに問題が見えてきました。
DNSをIPv6対応してみたら・・・
こたかのDNSはローカルドメインで公開予定もないので、IPv4レコードのみ返す設定で特に問題はありません。
しかし、iPhoneやWindows10デフォルトではIPv6が有効で、しかもIPv4よりもIPv6が優先的にDNSへアクセスされます。
IPv6とIPv4でDNSサーバーが異なる場合、IPv6で見つかるとIPv4側のDNS設定が使用されません。
つまり、折角IPv4のDHCPでDNSを配布していてもIPv6のDNS設定に先を越されてしまい、ローカルドメインのDNSが使用されない状態になります。
この問題は、ネットオウルなどのサーバー屋のDNSの「独自ドメインが存在すると独自サブドメインが存在しない場合に独自ドメインのIPを返す動き」で本格的な問題になります。サブドメインが無いのに親ドメインのIPが返されてしまい、ローカルドメインの検索が行われなくなるためです。
次に、「ひかり電話」のルーターが返すIPv6アドレスはグローバルIPです。
フィルターが効かない場合、外部からP2Pで利用可能です。
問題はDNSとファイルサーバーが共存することで発生します。
DNSには「フォワード」という機能があり、インターネットのDNSへ検索を丸投げできます。
「フォワード」を有効にするには、インターネットへアクセスできる必要があります。
しかし、こたかのサーバーはファイルサーバーも兼ねていたため、インターネットから切り離しています。
具体的にはデフォルトゲートウェイを設定しないようにして、アクセスできないようにしています。
これではDNSの「フォワード」を使用することができません。
もしインターネット接続を許可してしまうとIPv6経由でファイル共有が公開されてしまいます。
VirtualBoxで仮想PCを構築しDNSを分離
そこでDNSをまるごとVirtualBoxの別PCにして対応しました。
仮想PCのネットワークに「ブリッジ」接続というものがあります。この接続では仮想PCの接続を同一ネットワークの別なPCの接続とみなすことができます。インターネット接続の有無をホストPCと仮想PCでそれぞれ別々に設定できます。
OSイメージは「CentOS7 minimal」でCentOS7のisoからインストールしました。
「CentOS7 minimal」はCUI、コンソールしか扱いませんが、DNS単体などでは軽量なので、サーバーのCPUがpentiumでも十分動きます。
割り当てコア数:2 / メモリ:1GB / SSD:8GB(実質2GB) といった具合で、ホスト側はメモリが8GBもあれば十分です。
結局メリットがあった?
CentOS7を1つ初期化するのに2日近く費やしましたが、「ひかり電話」環境でローカルドメインを使いたい場合のポイントが分かりました。
- WindowsのDNSアクセスはデフォルトでIPv4よりもIPv6が優先される
- 「ひかり電話」のルーターはRA方式でIPv6のグローバルアドレスを配ってくる。この動きは変更できない
- Windowsファイル共有が有効でIPv6も有効だとIPv6でもファイル共有されている。フィルターが無い場合インターネットからアクセスできてしまう
- Windowsファイル共有は「\\<IPv6の’:’を’-‘にしたアドレス>.ipv6-literal.net」でアクセスできる
- ネットオウルのDNSは独自サブドメインがあっても無くても独自ドメインのIPを返す。応答無しによるDNS切り替えは利用できない
WindowsでIPv6が有効だとIPv6のDNSに先にアクセスします。そのためIPv4でDNSを運用していてもアクセスされません。
次にIPv6でDNSを運用しても、NTTルータのRAが有効です。RAからの情報ではDHCPv6を無視するフラグになっているのでDHCPv6を立てても恐らくDNS切り替えはできないと推測されます。
この段階で、ローカルドメインを使いたい場合は「クライアントはIPv6のDNS設定を手動で設定する」以外方法がなくなります。
または、クライアントはすべてIPv6をオフにすることで回避できますが、結局手動で設定することに変わりありません。
次に手動でIPv6のDNSを設定する運用にした場合について、
「Windowsファイル共有が有効でIPv6も有効だとIPv6でもファイル共有されている。フィルターが無い場合インターネットからアクセスできてしまう」の課題が発生します。ファイアーウォールでブロックしないとファイル共有が公開されてしまいます。
そのため、DNSはそれ専用にPC1台で構築し、ファイル共有は含まれないようにする方が安全です。
ただ、同じファイル共有でもLinuxのSMBの場合は、アクセスできるネットワークを絞り込むことができます。
こちらは、ローカルIPに限定することで、外部IPからのアクセスをブロック可能です。
最終的に、「手動でIPv6DNSのIPを設定すれば、ローカルドメインが利用可能」な状況までたどりつきました。
こたかの環境ではDHCPv6による自動化はできない環境ということでした。
ちなみに、NTTルーターと端末の間に別途ルーターを入れればとも思いましたが、「ひかり電話」のIP電話子機を利用するとSIPプロトコルが透過できず、IP電話子機が使用できなくなります。IP電話子機だけNTTルーターに直結にすると、もはやネットワークはカオス状態です。
これ以上、ルーター増やして24時間 5/wh の消費電力が増えても嫌なので・・・1kw/hあたり28円で年間1266円。
ひかり電話のルーターの設定にセキュリティーの問題
「ひかり電話」ルーターから取得するIPv6アドレスはグローバルIPです。インターネットからアクセスできる(P2Pできる)アドレスです。
「ひかり電話」はNTT網についてデフォルでは公開になっていて、設定でアクセスをブロックできるらしいです。※確認する方法がない・・・
具体的には、NTTルータ内部のURLにある「詳細設定」>「IPv6パケットフィルタ設定(IPoE)」、「IPv6ファイアウォール機能」と「IPv6セキュリティのレベル」です。
「IPv6セキュリティのレベル」は「高度」にしないとNTT網に公開されているらしいのです。
ずっとデフォルトの「標準」で使用していましたが、IPv6アドレス数が多すぎるので、うちのクライアントを当てることも困難だったのだと思います。
IPv6で何もサービスを動作させていなかったので、いままで気が付きませんでした。
まとめ
今日はIPv6がグローバルアドレスで想定外だったお話でした。
WindowsでIPv6が有効な場合は、IPv6のDNSが先に検索されますので、使わないならIPv6を無効にするか、googleなどのpublic DNSを使用する場合はIPv6のDNS設定も変更すると、ブラウザーの初動が速くなります。
IPv6で思わぬバックドアが開いてしまい焦りましたが、NTTルータのフィルター設定とファイル共有だけ気を付ければ直ちに影響はなさそうです。
それでは、また次の記事でお会いしましょう。