BIND以外のものを使ってみたい
現在、我が家のDNS構成としては、
- 外部権威DNS:Route53⇒CloudFlare
- 内部権威DNS:Windows DNS(Active Directory)
- 内部キャッシュDNS:BIND
と言う構成になっています。
さらに、内部端末から外部に対する名前解決は、先の記事でも書いたように、Quad9を使用しています。概要構成図としては以下のような感じです。
もはや定番中の定番とも言えるBINDですが、その他にも色々DNSサーバとしてのソフトウェアが増えて来ているという事で、それ以外の製品利用としてPowerDNSを考えました。
PowerDNSとは
PowerDNSは、オランダのPowerDNS.COM BVが開発を行った、オープンソースソフトウェアのDNSサーバとのこと。バックエンドに単なるゾーンファイルだけでなく、RDB等様々なものが使えるというのが特徴のようです。
ここで、面白いなーと思ったのが、PowerDNSは複数のコンポーネントに分かれていて、権威DNS機能はPowerDNSが、キャッシュDNS機能はPowerDNS Recursorと言うものが担っているという点。なんと機能毎でパッケージが異なるんです。
確かにキャッシュDNSだけしかしないんであれば、それに特化したパッケージさえ入っていればよく、下手なゾーンファイルを作らずに済むならそれに越したことはありません。
今回、キャッシュDNSの入れ替えを行うということで、BINDをやめ、PowerDNS Recursorを使用してみることにしました。
リポジトリのインストール
どうやらepelリポジトリとremiリポジトリが必要っぽいので導入します。
■epelリポジトリのインストール # yum -y install epel-release ■remiリポジトリのインストール # rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
PowerDNS Recursorのインストール
PowerDNS Recursorと関連ツールのみインストールします。
# yum -y install pdns-recursor pdns-tools
PowerDNS Recursorの設定
設定ファイルは/etc/pdns-recursor/recursor.conf となってるようです。コレを編集して各種設定を行います。
■既存ファイルのバックアップ # cp -p /etc/pdns-recursor/recursor.conf ~/ ■ファイルの編集 # vi /etc/pdns-recursor/recursor.conf
以下、編集例になります。
# UID,GIDの定義 setuid=pdns-recursor setgid=pdns-recursor #DNSクエリを許可するクライアントの定義 #IPv4/v6共に書けます。カンマで区切り、1行で書きます。バックスラッシュ使えます。 allow-from=127.0.0.0/8, \ 192.168.0.0/16, \ ::1/128, \ 2403:****:****::/48 #フォワーダの指定 #<ドメイン名>=<フォワード先>の形式で書きます。DNSの区切りはセミコロンで行います。 #IPv4/v6共に書けます。ゾーンごとにカンマで区切り、1行で書きます。バックスラッシュ使えます。 forward-zones=bluecore.net=192.168.***.202;2403:****:****:****::111, \ ***.168.192.in-addr.arpa=192.168.***.202;2403:****:****:****::111 #再起フォワーダの指定 #書き方はフォワーダの指定と同じです。 #外部向け名前解決はQuad9に指定しています。 forward-zones-recurse=.=9.9.9.9 #受付IPアドレスの定義 #IPv4/v6共に書けます。カンマ区切りで指定します。0.0.0.0や::0の指定もありです。 local-address=192.168.***.202,2001:****:****:****::202,127.0.0.1,::1 #待受ポートの指定(言わずと知れた53にしときます) local-port=53 #最大キャッシュTTLを定義します。当環境では1800secに設定しています。 max-cache-ttl=1800 #否定応答されたキャッシュTTLを定義します。max-cache-ttlと同様1800secに設定しています。 max-negative-ttl=1800
BINDからの切り替え
■BINDの停止 # systemctl stop named ■BINDの停止確認 # nslookup yahoo.co.jp localhost ⇒応答しない。Ctrl+Cで停止 ■PowerDNS Recursorの起動 # systemctl start pdns-recursor ■PowerDNS Recursorによる名前解決確認(外部) # nslookup yahoo.co.jp localhost Server: localhost Address: ::1#53 Non-authoritative answer: Name: yahoo.co.jp Address: 183.79.135.206 Name: yahoo.co.jp Address: 182.22.59.229 ■PowerDNS Recursorによる名前解決確認(内部) # nslookup kome.bluecore.net localhost Server: localhost Address: ::1#53 Non-authoritative answer: Name: kome.bluecore.net Address: 192.168.***.202
自動起動設定の変更
■BINDの自動起動を無効化 # systemctl disable named ■PowerDNS Recursorの自動起動を有効化 # systemctl enable pdns-recursor
以上で、キャッシュDNSをPowerDNS Recursorに変更が完了しました。
キャッシュDNSは簡単だが
以上のように、キャッシュDNS機能の切り替えは非常に簡単なのですが、権威DNS機能であるPowerDNSに関しては少々導入がめんどくさそうです。特にRDBをバックエンドに使う際、そのテーブル構造は現状Tips等をGoogle先生にお伺い立てる限りでは、手動で作っていく必要がありそうで。
今のところ、内部的な権威DNSはActive Directoryが握っているため、今回素直にキャッシュDNSだけ変更し、フォワードさせる仕組みにしたのですが、導入できるWindows Serverが2台しかなく、全部HQ側に寄せているため、いずれは副系DNSサーバが必要かなーと考えており、そう遠くないうちに災対サイト側に新規サーバを立てて、PowerDNSサーバを立てたほうが良いかなーとは思っています。
ただまぁ・・・なんといいますか、災対側ストレージの余裕があまりなく、これ以上サーバ立てるのが無理ゲーということで、もう少し金銭的余裕が出てから考えたいかなーとか思ってます。他にもActive Directory側のゾーン設定の見直し(セキュリティ周りなど)が発生しますしね・・・
追記:2017/12/23
一件指摘を頂きましたので追記します。
PowerDNSについて、今回はremiリポジトリから入手しましたが、PowerDNS自体がリポジトリを構えていることを知りました。
当てはまるプラットフォームを選択し、導入したいバージョン(本日時点で恐らく4.1.xがStable)を選ぶとリポジトリ追加手順について記載されていますので、それを参考にするとよいかと思います。
本記事で導入した際のバージョンが3.7.1でしたが、4.1に上がると、プロセスの引数も変わってました。Hinemos側の監視設定も変更が必要になったりしています。3.x⇒4.xでおそらくは仕様が若干変わっていると思われますので、確認することをお勧めしときます。
Comments are closed