さて、インストール大会の最後を飾るのはBIND。
DNSサーバが動けば、晴れてこのマシンは、外部向けサーバとして完全にリプレイスできるようになる。
もっとも、BINDもインストール自体はyumで一発。
設定ファイルも、実際はすでに動いているものをコピーすればほとんど変更なしで行けるだろう。
# yum install bind caching-nameserver bind-chroot
インストールしたのは、bind BIND本体の他に、キャッシュサーバとして動かすためのパッケージcaching-nameserver 、BINDをchrootして動かすためのパッケージbind-chroot。
まず、既存の設定ファイルをtowerにコピーする。
starler# tar cvf - | ssh nor@192.168.1.6 (cd ~work ; tar xf - )
starler# tar cvf - | ssh nor@rally.or.jp (cd ~work ; tar xf - )
rpm -q --filesbypkg bindでは、/etc/named.confが見えるのだが、実際にはインストールされていない。
設定ファイルのサンプルは/usr/share/doc/bind-9.3.3/sample/etcと/usr/share/doc/bind-9.3.3/sample/var/namedの下にある。
今までは、20世紀のBIND8の頃からの設定ファイルを流用していたが、ここで最新の設定ファイルを見て、1からつくり直すことにする。
named.confは、まあコメントなども参考にはなるが、モジュールファイル化を使いまくって書いてあるので、追っていくのがちょっと面倒だ。
さらに、named.confは/etcに置くのは普通だが、キャッシュサーバ用のnamed.root.hintsやnamed.rfc1912.zonesも/etcに置くようになっている。
この構成について解説しているページを探すと、非常に丁寧かつ技術的にもしっかりしたページが見つかった。
ここを参考にしながら、以下の作業を行った。
- "localhost_resolver" view の削除
- "internal" view にダミーの逆引きゾーンを追加
- "internal" view に自分のドメインのゾーンを追加
- "internal" view からサンプルのゾーン定義を削除
- DDNS用のkey 節の削除
- "external" view から match-clients と match-destinations 文を削除
- "external" view のヒントゾーンを無効化
- "external" view からサンプルのゾーン定義を削除
- "external" view に独自ドメインのゾーンを追加
- パスの修正
そこそこファイルはあるものの、実際にいじるのは一部。
いちいち書くのも面倒なので、基本的にはそのままでも動作するファイルは以下のもの。
まずは、ローカルホスト関連と、不要な問い合わせを吸収するためのもの。
named.rfc1912.zones(とそれに関連した以下のもの。)
localdomain.zone
localhost.zone
named.local
named.ip6.local
named.broadcast
named.zero
named.root.hints
これらは、自分のドメインの設定を書く。
my.external.zone.db
my.internal.zone.db
ルートキャッシュファイルは、当然最新のものを取ってくる。
# dig . ns @198.41.0.4 > /var/named/named.root
これらの設定ファイルを/var/named/chroot/etcと/var/named/chroot/var/namedにコピー。オーナーをroot:namedにして、モードを640にする。
あとは、動作を確認して、
# service named start
マシン起動時にBINDも起動するように。
# chkconfig named on
もちろん、ポートは開けておく。
# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
# service iptables restart
ゾーンファイルのみを書き換えた場合は、Serial値を増やして「# rndc reload」。