~nabeken/diary/

Gentoo Linux(6年くらい)とFreeBSD(1年くらい)とOpenBSD(新参者)を使う日々。


IHANet BGP peering overview

PowerDNS + Poweradmin で DNS サーバを構築する

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 で Master/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

とすると、各スレーブに通知が行き、シリアルが大きければゾーン転送されます。

Poweradmin, a friendly web-based DNS administration tool for PowerDNS server

https://www.poweradmin.org/

PowerDNS に対応した Web アプリケーションです。手元ではこれを使って管理しています。基本的な操作は網羅されているので、中小規模であれば十分実用的です。

このアプリケーションでレコードを操作すると、自動的にシリアル番号をインクリメントしてくれるので、自動的にスレーブまで変更が伝搬します。