PowerDNSは、リレーショナルデータベースなど様々なバックエンドを利用出来る DNSサーバです。古典的なDNSサーバとしては BINDが有名で今なお使われ続けていますが、BINDは全ての設定をテキストファイルで行う必要があるため使い始めるには DNSそのものの知識以外にも BIND自体の知識がそれなりに必要となり、あまり手軽に利用出来るとは言えません。

PowerDNSなら、汎用のデータベースを使ってデータを保持するため専用の管理ツールを組み合わせれば管理画面から比較的簡単に管理運用することができます。

活用例:LAN内で iPhone用のローカルDNSサーバとして利用する

自宅や社内のLANの中にWebサーバやNASをお持ちの方で、iPhoneから無線LANを経由してファイルにアクセスしたいといった場合、(WebサーバやNASがマルチキャストDNSに対応していない限り) iPhoneからアクセスする際にはホスト名でなく IPアドレスを使わざるを得ません。これでは不便なので、iPhoneからもホスト名を使ってアクセスしたくなるかもしれません。そのような場合に PowerDNSをどう設定するかをここでは例示します。

IPアドレスの固定

まず、PowerDNSが動作する仮想マシンのIPアドレスを固定しなくてはなりません。Walbrixの仮想マシンは、デフォルトでは DHCPで動的に IPアドレスを取得するように設定されていますが、DNSサーバはクライアントからIPアドレスで参照される必要があるため起動するたびに変化するIPアドレスでは都合が悪いのです。

PowerDNS仮想マシンのIPアドレス設定を変更する方法について詳しくは、 仮想マシンのIPアドレスについて における 「Debianベースの場合」をご参照ください。

例えばLANのネットワークアドレスが 192.168.0.x で、ネットマスクが 255.255.255.0、デフォルトゲートウェイが 192.168.0.1、そのうえでPowerDNSに 192.168.0.2を固定的に割り当ててあげるつもりなら sshで PowerDNS仮想マシンにログインし、/etc/network/interfaces ファイルの

iface eth0 inet dhcp
となっているところを
iface eth0 inet static
  address 192.168.0.2
  netmask 255.255.255.0
  gateway 192.168.0.1
に書き換え、さらに /etc/resolve.conf ファイルの内容を下記に置き換えてください(8.8.8.8と 8.8.4.4は Google社の公開DNSサーバで、誰でも使って良いことになっています)。
nameserver 8.8.8.8
nameserver 8.8.4.4

再帰的な問い合わせ(recursive query)の有効化

デフォルトでは、PowerDNSは自分の管理するドメイン以外についての問い合わせを拒否するよう設定されています。これを再帰的な問い合わせが無効であると言います。しかしながら、LAN内で利用するDNSの場合は自分の管理するドメイン以外に関する問い合わせにも応答できなければならないのが普通だと思います。そのため PowerDNSの設定ファイルに変更を加えて再帰的な問い合わせを有効にします。

/etc/powerdns/pdns.conf ファイルにて

allow-recursion=127.0.0.1
となっている行の先頭に # を挿入して
#allow-recursion=127.0.0.1
のようにコメントアウトします。

さらに、recursor= 行に、PowerDNSの知らないドメインに関する情報を問い合わせるための外部DNSサーバを指定します。特に考えがなければ Google社の提供する公開DNSサーバ 8.8.8.8を使っても良いでしょう。

recursor=8.8.8.8

再起動して設定を有効にする

上記IPアドレスの設定と再起問い合わせの設定をを有効にするにはコマンドプロンプトから reboot と入力して仮想マシンを再起動します。

1分程度で仮想マシンが再起動するので、LAN内の適当なコンピュータから

ping pdns (仮想マシン名が pdnsの場合)
として仮想マシンが動作していることとIPアドレスが指定したものになっていることを確認してください。LinuxやMacの場合ホスト名指定は .localをつけて pdns.localです。

ゾーン(ドメイン)の設定

PowerDNSが再起動したら、管理画面にアクセスしてください。仮想マシン名が pdnsの場合、http://pdns が管理画面のURLとなります。(Macや iPhone、iPadでは http://pdns.local)
デフォルトの管理者 IDは admin、パスワードは secret です。

サンプルとしてデフォルトで example.com ドメインがセットされています。名前を変更してこれを使い回しても良いですし、新しくドメインを作成しても構いません。ここでは example.comをそのまま使いまわして説明することにします。

ドメインを選択し、Domain RR's のところから New Recordを選択してAレコードを追加し、IPアドレスをセットします。
example.comドメインに myserver というレコードを追加するとそれは myserver.example.comのことになります。

iPhone側の設定

DHCPサーバ(多くの場合ルーターがDHCPサーバを兼ねています)の設定で DNSサーバを変更できる場合はそちらを PowerDNSのIPアドレスに変更すれば iPhone側で設定変更を行う必要はありません。DHCPサーバ側の設定変更を行わない場合はiPhone側で下記のような設定変更を行ないます。

iPhoneでは「設定」から Wi-Fi設定画面に入り、接続中の無線LANを示すESS名の脇にある右矢印をタップします。

するとIPアドレスなどを設定する画面になるので、「DNS」欄に PowerDNS仮想マシンのIPアドレスを、「検索ドメイン」欄にドメイン名を入力してください。

Safariを起動し http://myserver で自分のサーバに接続できれば成功です。