こんにちは。開発部の松永です。
DNSサーバといえば、エコモットではAWS Route53を使うことが多いです。価格的に手軽なのはもちろんのこと、APIを経由してコードで管理できるのが魅力的です。
なので、全部Route53にお任せー!といきたいのですが、なかなかそうもいかず。ローカルネットワーク内にDNSをたてなきゃいけないケースもまだまだあります。今日はそんなときのために、手間をかけずに立ち上げられるPowerDNSを紹介します。
PowerDNSとは?
オープンソースのDNSサーバです。ライセンスはGPL。DNSコンテンツサーバに相当する「PowerDNS」と、キャッシュサーバに相当する「PowerDNS recursor」があります。
特徴としては、ゾーン情報の持ち方が多様でして、MySQLやPostgreSQLなどのRDBMSや、Bind形式のゾーンファイルにも対応しています。非常に柔軟な管理ができそうです。また、PowerDNSとPowerDNS recursorは独立しているため、どちらか片方のみを立ちげることも可能です。
ゴール
今回は開発環境に使う場合など、最も手軽と思われる方法でDNSキャッシュサーバを立ててみます。ソーン情報は、hostsファイルを使ってみましょう。変更が頻繁であったり、レコード数が多かったりすると大変ですが、エディタで簡単に変更できるので非常に楽です。
インストールおよび設定
「PowerDNS recursor」のみをインストールします。
前提として、EPELリポジトリを有効にしておいてください。
1 2 |
# yum install pdns-recursor |
次に設定ファイルを変更します。
1 2 |
# vi /etc/pdns-recursor/recursor.conf |
BindするIPアドレスは、local-addressで設定します。
1 2 |
local-address=0.0.0.0 |
ローカル以外からの問い合わせを許可する場合は、allow-fromにIPアドレス範囲をカンマ区切りで記述します。
1 2 |
allow-from=127.0.0.0/8,192.168.2.0/24 |
/etc/hostsファイルをゾーン情報とするには、以下の設定を有効にします。
1 2 3 |
etc-hosts-file=/etc/hosts export-etc-hosts=on |
キャッシュがなかった場合に、問い合わせをフォワードするには以下のように。
1 2 |
forward-zones-recurse=.=8.8.8.8 |
設定を確認し、サービスの公開範囲をしっかりと確認した上で、起動します。
※オープンリゾルバ(Open Resolver)に対する注意喚起
1 2 3 |
# service pdns-recursor start Starting pdns-recursor: [ OK ] |
これで完了です。
実際にテストしてみましょう。まずはhostsを以下のように変更します。
1 2 |
192.168.10.2 myserver.localdomain |
DNSキャッシュサーバに変更されたhostsを読み込ませるために再起動します。
1 2 3 4 |
# service pdns-recursor restart Stopping pdns-recursor: [ OK ] Starting pdns-recursor: [ OK ] |
テスト!
digコマンドでテストしてみましょう。
1 2 3 |
# dig myserver.localdomain @127.0.0.1 +short 192.168.10.2 |
成功です!