玄箱に付属のバイナリパッケージには、いかなるDNSの実装も存在していないので、自分でビルドする以外に、方法はありません。
ここではBIND9を持ってくることにしました。理由は、マスターサーバであるVineLinux側がこれを利用していることと、最もポピュラーなDNSの実装であるため、情報の入手が容易であることがあげられます。
さて、ビルドに先立ち、ソースを入手する必要があります。ftpサイトより最新のパッケージを取得してください。
取得したら、展開し、configureします。とりあえず –enable-threads くらいをつけておけばいいでしょう。FHSに従いたい方は、さらに–prefixや–sysconfigなどのパラメータも必要になりますが、/usr/local の下にインストールされてもかまわないのであれば、単純に、–enable-threads だけでいいでしょう。
configure が済んだら make して make install です。30分くらいで完了するでしょうか。新しい、Gb ether対応版ならもっと速いでしょう。
$ tar -zxf bind-9.3.0.tar.gz $ cd bind-9.3.0 $ ./configure --enable-threads ... $ make ... $ su Password: # make install ...
こんな感じでしょうか。なおバージョンはそのときの最新のものを使うようにするべきでしょう。
インストールが済んだら設定です。今回はスレーブサーバにするだけなので難しく考えることはほとんどありません。以下の手順で進めばいいだけです。
権限の分離はセキュリティの観点からも非常に重要です。rootのまま実行することももちろんできますが、bindのためだけに存在するユーザ/グループを作成することにします。このことにより、万一、DNSをクラックされても、被害が大きくなることを防げる可能性があるからです。(プロセスをクラックしても、それは限定された権限のユーザで実行されているので、さらに、権限の昇格を行なわないと悪質な行為に及べないため。)
ここではユーザもグループもnamedとし、どちらにもid=25を与えることにします。これはVine との整合性をとるためで、既にNISや、LDAPなどで集中管理している場合には改めて作成する必要もないかもしれませんし、またidはシステムにお任せにすることも可能です。もちろん、別の名前でもかまいません。(bindなど)
# groupadd -g 25 named # useradd -u 25 -g named -d /var/named -s /bin/false
念のため、vipw で、パスワードのフィールドは'*'にしておきます。
named は一般に、/var/named を利用しますので、これを作成します。作成後所有者をnamed(上記で作成したユーザ・グループ)に変更しておきます。
# mkdir /var/named # chown named.named /var/named
マスターサーバの場合には、ここにゾーン情報のファイルを作成する必要がありますが、スレーブの場合は勝手に作られますので、何もする必要はありません。
mydomain.comというドメインにセカンダリDNSを立てるものとします。セカンダリはあくまでもLAN内部のみへのサーブを前提として組み立てるものとします。LANは192.168.0.0/24のCLASS Cアドレス空間に存在するものとします。
正引き、逆引きともに、キャッシュファイルはここで指定した名前で、/var/named以下に勝手に作成されます。
acl lan { 192.168.0.0/24; 127.0.0.1; }; options { directory "/var/named"; allow-query { lan; }; allow-transfer { none; }; forwarders { xxx.xxx.xxx.xxx; ← 上位のDNSを指定する yyy.yyy.yyy.yyy; ← 〃 }; }; zone "mydomain.com" IN { type slave; file "mydomain.com.zone"; ← キャッシュファイル名を指定(任意) masters { 192.168.0.1; ← プライマリDNSのアドレスを指定 }; }; zone "0.168.192.in-addr.arpa" IN { type slave; file "mydomain.com.rev"; ← キャッシュファイル名を指定(任意) masters { 192.168.0.1; ← プライマリDNSのアドレスを指定 }; };
マスターDNS側では、セキュリティを考えて、転送範囲を絞っているかもしれません。その場合、スレーブ側へデータが転送されてこないので、せっかく立てたセカンダリサーバが機能しません。
最低でも、マスター側で、正逆の問い合わせに対する転送許可を出すことが必要になります。マスター側の /etc/named.conf に次の部分を追加します。
zone "mydomain.com" IN { type master; file "mydomain.com.zone"; allow-transfer { 192.168.0.2; ← セカンダリサーバのアドレスを追加する }; }; zone "0.168.192.in-addr.arpa" IN { type master; file "mydoman.com.rev"; allow-transfer { 192.168.0.2; ← セカンダリサーバのアドレスを追加する }; };
Tipsへ戻る。