daemontoolsとかdjbdnsをRPMで入れる
bindより設定が分かりやすいのが気に入ってdjbdnsを使ってます。毎度毎度ビルドするのも効率悪いし、かと言ってyumに入るようなことはないので、RPMを拾ってきて環境整えます。そのへんの設定メモ。もちろん環境によって設定値は異なるので、そのへんは読み替えてください。
■インストール
http://www.qmail.org/rpms/RPMS/ にRPMがあるので、
- daemontools
- ucspi-tcp
- djbdns
をそれぞれ拾ってきて入れる。
これだけだとmanが入らないので、http://www.qmailtoaster.org/ のSRPMからアーカイブを取得して、/usr/local/share/man/man8/ に手動でコピー。
自分でビルドした場合はdaemontoolsが自動で起動するけど、RPMでインストールした場合は手動で起動する必要あり。
sudo svscan /service &
サーバ起動時の自動起動設定も入ってないので、/etc/inittabに以下の行を追加。
SV:123456:respawn:/command/svscanboot
これも手動ビルドした時は自動で入ってたと思う。
あと、ユーザの追加とかもRPMではやってないので、そのへんも自分で。
sudo groupadd -g 800 dns sudo useradd -u 800 -g dns -M -d /var/dns -s /sbin/nologin dnslog sudo useradd -u 801 -g dns -M -d /var/dns -s /sbin/nologin dnscache sudo useradd -u 802 -g dns -M -d /home/tinydns -s /bin/bash tinydns
tinydnsユーザは対になるDNSサーバにscpするのでhomeディレクトリを作る。scpするだけなので、/home/tinydns/ にはssh鍵だけ置けばいい。
sshの制限は、今のところ公開鍵にno-pty付けて端末取得不可にするのと、fromでIP制限かける程度です。~/.ssh/authorized_keysにこんな感じで書く。
no-pty,from="アクセスを許可するIP" ssh-rsa …
fromはホスト名で書いた方が分かりやすいかなとも思ったけど、ウチではsshd_configでUseDNS noしてるのでIPで。
本来的にはコマンド固定するか、シェルをscp-onlyにした方がいいんだろうけど、ひとまずこれで。
■dnscacheの設定
dnscacheはlocalhostで稼働させます。
sudo dnscache-conf dnscache dnslog /etc/dnscache 127.0.0.1
標準だとログの容量が小さいので、/etc/dnscache/log/runを
#!/bin/sh exec setuidgid dnslog multilog t s3000000 n10 ./main
に変更(s3000000 n10を追加)。
daemontoolsにサービス登録して完了。
sudo ln -s /etc/dnscache /service/
■tinydnsの設定
tinydnsはグローバルIPで稼働させます。
sudo tinydns-conf tinydns dnslog /etc/tinydns サーバのIP
dnscacheと同様、log/runに「s3000000 n10」を追加。
#!/bin/sh exec setuidgid dnslog multilog t s3000000 n10 ./main
同じく、daemontoolsにサービス登録。
sudo ln -s /etc/tinydns /service/
2台のDNSサーバ(仮にs1,s2とする)でお互いにscpできるように設定。
sudo chown tinydns:dns /etc/tinydns/root sudo chown tinydns:dns /etc/tinydns/root/data
既にmake実行してdata.cdbができてる場合は、そいつも。
make時に対になるサーバに自動でゾーン情報をscpするよう、Makefileを変更。
data.cdb: data /usr/local/bin/tinydns-data sudo -H -u tinydns scp /etc/tinydns/root/data /etc/tinydns/root/data.cdb s2:/etc/tinydns/root/
これで、s1でsudo makeすればs2も勝手に更新される。s2のMakefileはs1にscpするように書けば、どちらでも作業可能。
「sudo -H -u tinydns make」でmake実行した方がお行儀よさそうだけど、まぁ面倒なんで。
と、こんな感じでやってますという未来の自分用のメモ。