Posted on Sun Mar 22 15:38:59 +0900 2009 by nabeken
VPSを借りている Rimuhosting でセカンダリDNSのサービスを受けるため、DNSサーバ環境を構築仕直しました。今回はその記録です。
Rimuhostingについては https://projects.tsuntsun.net/~nabeken/diary/Sysadmin/rimuhosting-a-Xen-based-VPS-hosting.html 参照。
つぎはぎでの拡張で見直しをしたかったのもありました。以下がこれまでの構成です。
ns1.tknetworks.org PowerDNS ----- MySQL(master) <--- PowerDNS on Rails (Railsで作られた PowerDNS 用アプリ) | | | | replication over ssh portforwarding | ns2.tknetworks.org | | PowerDNS ----- MySQL(slave)
その場しのぎで ssh を採用していました。ここは切断時の再接続などは自動化していなかったため、再起動するととても残念なことになります。
そこで、OpenVPNできちんと VPN をすることで再接続も確実に行われる構成にしました。そして、RimuhostingのDNSを使用し、計4台のDNSサーバを用意しました。
ns1.tknetworks.org mocha.osaka.tknetworks.org PowerDNS ----- MySQL(master) <---------------------- Poweradmin (PHPで作られた PowerDNS 用アプリ) | | +---------+ replication over OpenVPN | | | | ns2.tknetworks.org | | AXFR (ゾーン転送) | | PowerDNS ----- MySQL(slave) | | ns3.tknetworks.org | (ns1.rimuhosting.com) | PowerDNS ----- MySQL(master) -+ | ns4.tknetworks.org | (ns4.rimuhosting.com) | PowerDNS ----- MySQL(slave)
RimuhostingではWebのコントロールパネルが充実しており、一発で作業が完了しました。
DNSを選びます。
ゾーンを追加してみます。
ここで、ドメイン名を入れます。ドメイン名を入れると、次のような画面になります。
ここでは、tknetworks.org ドメインの例を上げています。
この例では、すでにスレーブなため、メニューにはありませんが、追加したての時は "Convert Zone from Master to Slave" になっています。これを使うことでゾーン転送をすることができます。
大事なのはここからで、この後、マスターの PowerDNS でゾーン転送を許可する必要があります。ドキュメントは今一わかりにくいのですが、以下の参考にしました。
肝は pdns.conf で
allow-axfr-ips=127.0.0.1 master=on disable-axfr=no
1行目にはゾーン転送を許可するIPアドレス(コンマ区切り)、2行目、3行目でゾーン転送を有効にします。テストは dig で行います。
$ dig @ns1.tknetworks.org tknetworks.org axfr
ここまでで、ゾーン転送ができるようになります。最後は、マスターでの更新をスレーブに notify する仕掛けです。これは、データベースにある domains テーブルの type カラムを MASTER にすることで完了します。
手動で行いたい場合は、マスター上で
$ pdns_control notify example.org
とすると、各スレーブに通知が行き、シリアルが大きければゾーン転送されます。
PowerDNS に対応した Web アプリケーションです。手元ではこれを使って管理しています。基本的な操作は網羅されているので、中小規模であれば十分実用的です。
このアプリケーションでレコードを操作すると、自動的にシリアル番号をインクリメントしてくれるので、自動的にスレーブまで変更が伝搬します。