ダイナミックDNSを構築してみる。
特別なパッケージは必要ない。bind9が使える状態になっていればよい。
# apt-get install bind9 bind9-host dnsutils
鍵を作成する。カレントディレクトリに、Kddns.+157+xxx.keyとKddns.+157+xxx.privateが作成される。rootが読む権限があれば十分。
dnssec-keygen -a HMAC-MD5 -b 512 -n USER DDNS
bindが使うキーファイルを作成。XXXの部分には、Kddns.+157+xxx.privateの Key: 以降を設定。作成したファイルのパーミッションは、640にしておく。
key DDNS { algorithm "HMAC-MD5"; secret "XXX"; };
キーを読むように指定する。
include "/etc/bind/ddns.key";
ゾーンの設定に allow-update を追加し、外部からの変更を受け付ける。
zone "ddns.example.jp" IN { type master; file "ddns.zone"; allow-update { key DDNS; }; };
基本のゾーンファイルを作成する。
$ORIGIN . $TTL 3600 ; 1 hour ddns.example.jp IN SOA ns.ddns.example.jp. webmaster.example.jp. ( 1 ; serial 60 ; refresh (1 minute) 20 ; retry (20 seconds) 3600 ; expire (1 hour) 600 ; minimum (10 minutes) ) NS ns.ddns.example.jp. $ORIGIN ddns.example.jp.
nsupdateコマンドを使用する。ここでは対話型での設定方法を説明するが、追加の引数にコマンドを書いたファイルを指定すればバッチでの処理も可能となる。
# nsupdate -k Kddns.+157+xxx.private > server 127.0.0.1 > update delete test01.ddns.example.jp > update add test02.ddns.example.jp 60 A 192.168.2.30 > send > ^D (Ctrl + D で抜ける)