ページ更新: 2005-01-29 (土) (6695日前)
(2001.07.12 作成) (2005-01-29 wikiに移動) nsupdateでbindにホストを登録する PPPなどでダイヤルアップ接続しているホストをbindに登録します。 環境は DNSサーバ、PPPクライアントともに Debian GNU/Linux Woody kernel 2.2.19 です。 なんでこんなことをやるのかというと、自分専用にDynamicDNSを動かしてみたかったからです……実用はまだ考えていません。IPが固定じゃないとやっぱいろいろと面倒なので。 目次 [編集]情報源 #
目標 #
パッケージの確認 #$ which nsupdate /usr/bin/nsupdate ★nsupdateが入ってます。 $ dpkg -S nsupdate | grep `which nsupdate` dnsutils: /usr/bin/nsupdate ★パッケージは dnsutilsです $ dpkg -s dnsutils | grep -i version Version: 1:9.1.1-1 (サーバー側) $ apt-cache search bind | grep ^bind bind - Internet Domain Name Server bind-dev - Libraries used by BIND bind-doc - Documentation for BIND bind9 - Internet Domain Name Server ★これ bind9-doc - Documentation for BIND # apt-get install bind9[編集] テスト #PPPのIPアドレスを確認 $ /sbin/ifconfig ppp0 | grep addr inet addr:XXX.XXX.XXX.XXX P-t-P:YYY.YYYY.YYY.YYY Mask:255.255.255.255 サーバー側のnamed.confに次の記述を追加 zone "example.jp" { : (略) allow-update { XXX.XXX.XXX.XXX; }; : (略) }; 登録してみる $ nsupdate > update add host.example.jp 3600 A XXX.XXX.XXX.XXX > > ^D $ host host.example.jp host.example.jp A XXX.XXX.XXX.XXX $ nsupdate > update delete host.example.jp > > ^D $ host host.example.jp host.example.jp does not exist (Authoritative answer)[編集] keyを付けて登録してみる #key生成 # dnssec-keygen -a hmac-md5 -b 256 -n ZONE example.jp Kexample.jp.+157+09829 # ls -al K* -rw-r--r-- 1 root root 75 May 11 20:27 Kexample.jp.+157+09829.key -rw------- 1 root root 101 May 11 20:27 Kexample.jp.+157+09829.private named.conf include "/etc/secret/key.example.jp"; zone "example.jp" { : allow-update { key example.jp; }; : }; 登録のテスト (^Dあるいはexitで終了) $ nsupdate -k Kexample.jp.+157+09829 > update add host.example.jp 3600 IN A XXX.XXX.XXX.XXX > > ^D $ host host.example.jp host.example.jp A XXX.XXX.XXX.XXX nsupdate スクリプト……/etc/cron.d や /etc/ppp/ip-ud.d に仕掛ける。さらにFQDN→IP対応が変化すると困るdaemonがあれば、それも再起動する(/etc/init.d/* reload) #! /bin/sh # # nsupdate # # 2001.07.13 # /bin/echo -e 'update delete host.example.jp\n' | \ /usr/bin/nsupdate -k /etc/bind/Kexample.jp.+157+09829 > /dev/null 2>&1 /bin/sleep 3 /sbin/ifconfig ppp0 | /usr/bin/awk '/inet addr:/{\ print "update add host.example.jp 3600 A " substr($2,6) "\n"}' | \ /usr/bin/nsupdate -v -k /etc/secret/Kexample.jp.+157+09829 |