# vi /etc/modules.conf.local
# vi /etc/modprobe.conf.local
# Turn off IPv6
alias net-pf-10 off
alias ipv6 off
「Esc」、「:」、「w」、「q」で保存。
# tar zxfv ddns-1.1.tar.gz
# cd ddns-1.1
# cp -p /etc/init.d/named /etc/init.d/named.bak
# patch /etc/init.d/named ./9.x/init.named.patch
# cp -p /etc/sysconfig/named /etc/sysconfig/namedo
# patch /etc/sysconfig/namedo ./9.x/sysconfig.named.patch
# cp -p /usr/share/bind/createNamedConfInclude /usr/share/bind/createNamedConfIncludeo
# patch /usr/share/bind/createNamedConfIncludeo ./9.2/createNamedConfInclude.patch
# cp -p /etc/named.conf /etc/namedo.conf
# cp -p /etc/named.conf.include /etc/namedo.conf.include
# cp -pr /var/lib/named /var/lib/namedo
# mv /var/lib/namedo/var/lib/named /var/lib/namedo/var/lib/namedo
/var/lib/named/ ・・・・・・・・・各ゾーンファイルを置くディレクトリ | |-- named.d/ | | |-- rndc.access.conf ・YaSTでIncludeするファイルを指定。デフォルトで | | rndcに関する設定ファイルがincludeされている。 | |-- etc/ | | |--named.conf | | | |-- master/ | | |-- example.zive.net.zone | | |-- example.com.local | | |-- acorn.examplex.com.local | | |-- 192.168.1.zone | | | |-- slave/ | | | |-- root.hint | |-- localhost.zone | |-- 127.0.0.zone | |-/namedo/ ・・・・・・・・・各ゾーンファイルを置くディレクトリ |-- named.d/ | |-- rndc.access.conf ・YaSTでIncludeするファイルを指定。デフォルトで | rndcに関する設定ファイルがincludeされている。 |-- etc/ | |-- namedo.conf | |-- master/ | |-- example.com.zone | |-- dyn/ |-- examplex.com.zone
[named.conf]
options { listen-on { 127.0.0.1; 192.168.1.100; }; directory "/var/lib/named"; dump-file "/var/log/named_dump.db"; statistics-file "/var/log/named.stats"; notify no; allow-query { 127.0.0.1; 192.168.1.0/24; }; allow-transfer { 127.0.0.1; 192.168.1.0/24; }; forwarders { 1.2.3.4; 5.6.7.8; }; forward only; }; logging { # Log queries to a file limited to a size of 100 MB. channel query_logging { file "/var/log/named_querylog" versions 3 size 100M; print-time yes; // timestamp log entries severity info; print-category yes; }; category queries { query_logging; }; # Don't log lame server messages. category lame-servers { null; }; }; # ルートのゾーン設定 zone "." in { type hint; file "root.hint"; }; # 正引きのループバックのゾーン設定 zone "localhost" in { type master; file "localhost.zone"; }; # 逆引きのループバックのゾーン設定 zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0.zone"; }; # 正引きのおやじ宅内のゾーン設定 zone "example.zive.net" in { type master; file "master/example.zive.net.zone"; }; # acorn.examplex.comの正引きのゾーン設定 zone "acorn.examplex.com" in { type master; file "master/acorn.examplex.com.local"; }; # 逆引きのおやじ宅内ゾーンの設定 zone "1.168.192.in-addr.arpa" in { type master; file "master/192.168.1.zone"; }; # example.comの正引きのゾーン設定 zone "example.com" in { type master; file "master/example.com.local"; }; include "/etc/named.conf.include"; // デフォルトでrndc 関係をincludeしている
[namedo.conf]
options { listen-on { 192.168.1.101; }; directory "/var/lib/namedo"; dump-file "/var/log/named_dump.db"; statistics-file "/var/log/named.stats"; notify yes; // zone設定に変化があったらnsで定義されたdnsにnotify通知。 recursion no; // 再帰的検索の禁止 }; logging { # Log queries to a file limited to a size of 100 MB. channel query_logging { file "/var/log/named_querylog" versions 3 size 100M; print-time yes; // timestamp log entries severity info; print-category yes; }; category queries { query_logging; }; # Don't log lame server messages. category lame-servers { null; }; }; key "examplex.com" { algorithm hmac-md5; secret "L7TFIweh/s/Dcf・・・(省略)・・・"; }; # example.comの正引きのゾーン設定 zone "example.com" in { type master; file "master/example.com.zone"; allow-transfer { yyy.yyy.yyy.yyy; }; // セカンダリDNSのIPアドレスを記述(セカンダリDNSのみに転送) allow-query { any; }; // 問合せは全て可 };
# examplex.comの正引きのゾーン設定 zone "examplex.com" in { type master; file "dyn/examplex.com.zone"; allow-transfer { zzz.zzz.zzz.zzz; }; // セカンダリDNSのIPアドレスを記述(セカンダリDNSのみに転送) allow-query { any; }; // 問合せは全て可 allow-update { key examplex.com; }; // Updateはkeyが一致したら可 }; controls { }; // rndcの二重起動防止対策 #include "/etc/namedo.conf.include"; // デフォルトでrndc 関係をincludeしている
オプション |
概 要 |
設定内容 |
備 考 |
allow-query | 問合せ元制限 | { 127.0.0.1; 192.168.1.0/24; } | アドレス/ネットワークを [ ; ] で区切って直接記述し、全体を { } でくくる。最後のアドレスの後ろの[
; ]も忘れずに。 |
allow-trasfer | 転送先制限 | { 127.0.0.1; 192.168.1.0/24; } |
オプション |
概 要 |
設定内容 |
備 考 |
forwarders | 問合せ先指定 | { 1.2.3.4; 5.6.7.8; } | 契約プロバイダの DNS を [ ; ] で区切って直接記述し、全体を { } でくくる。最後のアドレスの後ろの[ ; ]も忘れずに。 |
forward | forward動作指定 | first | first 指定で、まずフォワーダーに問合せ、駄目なら rootから検索する。 |
# mkdir /usr/local/bin/ddns # cd /usr/local/bin/ddns |
# dnssec-keygen -a HMAC-MD5 -b 512 -n HOST examplex.com Kexamplex.com.+157+62830 |
# ls . .. Kexamplex.com.+157+62830.key Kexamplex.com.+157+62830.private # more Kexamplex.com.+157+62830.key examplex.com. IN KEY 512 3 157 L7TFIweh/s/Dcf・・・(省略)・・・ |
# cd /var/lib/named
# wget -O root.hint.new ftp://ftp.internic.net/domain/named.root
# mv root.hint.new root.hint
# cd /usr/local/bin
# wget http://www.aconus.com/~oyaji/dns/root.hint.check
# chmod 755 root.hint.check
# root.hintファイルの更新チェック
23 1 * * 5 root /usr/local/bin/root.hint.check
$TTL 1W @ IN SOA @ root ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1H ) ; minimum IN NS @ IN A 127.0.0.1
$TTL 1W @ IN SOA localhost. root.localhost. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1H ) ; minimum IN NS localhost. 1 IN PTR localhost.
$TTL 86400 (1) (2) @ IN SOA pdns.example.zive.net. root.example.zive.net. ( 2005020501 ; serial (3) 3H ; refresh (4) 15M ; retry (4) 1W ; expiry (4) 1H ) ; minimum (4) IN NS pdns.acorn.zive.net. (5) IN MX 10 acorn.zive.net. (6) @ IN A 192.168.1.100 (7) router IN A 192.168.1.1 (8) oyaji IN A 192.168.1.2 (8) rina IN A 192.168.1.3 (8) akko IN A 192.168.1.4 (8) printer IN A 192.168.1.10 (8) pdns IN A 192.168.1.100 (8) www IN CNAME pdns (9) mail IN CNAME pdns (9) ftp IN CNAME pdns (9)
(1) 家庭内で使用するdnsのFQDNを指定。(最後に ' . '(ピリオド)を忘れずに) (5)とあわせること。
(2) サーバ管理者のメールアドレス(' @ 'を ' . 'に変えて指定。最後に ' . '(ピリオド)を忘れずに)ドメインは(6)とあわせること。
(3) データベースのシリアル番号。(変更するたびに必ず値を増やすこと。年月日+追番がよい)
(4) リフレッシュ・リトライ・有効・生存時間(デフォルトのまま)
(5) ネームサーバ名を指定(サーバ名の最後に ' . '(ピリオド)を忘れずに) (1)とあわせること。
(6) メールエクスチェンジャの指定。(CNAMEは使用しないこと)
(7) acorn.zive.netでサーバのローカルアドレスを返すための設定。
(8) 各ホストの正引きデータを指定。
(9)別名定義を指定。(おやじは、サーバだけ用途毎の別名を登録した。DNSは、別名定義しないこと。)素直に、(8)項と同様にAレコードで定義しても良い。
$TTL 86400 (1) (2) @ IN SOA pdns.acorn.examplex.com. root.acorn.examplex.com. ( 2005020501 ; serial (3) 3H ; refresh (4) 15M ; retry (4) 1W ; expiry (4) 1H ) ; minimum (4) IN NS pdns.acorn.examplex.com. (5) IN MX 10 acorn.examplex.com. (6) @ IN A 192.168.1.100 (7) router IN A 192.168.1.1 (8) oyaji IN A 192.168.1.2 (8) rina IN A 192.168.1.3 (8) akko IN A 192.168.1.4 (8) printer IN A 192.168.1.10 (8) pdns IN A 192.168.1.100 (8) www IN CNAME pdns (9) mail IN CNAME pdns (9) ftp IN CNAME pdns (9)
(1) 家庭内で使用するdnsのFQDNを指定。(最後に ' . '(ピリオド)を忘れずに) (5)とあわせること。
(2) サーバ管理者のメールアドレス(' @ 'を ' . 'に変えて指定。最後に ' . '(ピリオド)を忘れずに)ドメインは(6)とあわせること。
(3) データベースのシリアル番号。(変更するたびに必ず値を増やすこと。年月日+追番がよい)
(4) リフレッシュ・リトライ・有効・生存時間(デフォルトのまま)
(5) ネームサーバ名を指定(サーバ名の最後に ' . '(ピリオド)を忘れずに) (1)とあわせること。
(6) メールエクスチェンジャの指定。(CNAMEは使用しないこと)
(7) acorn.examplex.comでサーバのローカルアドレスを返すための設定。
(8) 各ホストの正引きデータを指定。
(9)別名定義を指定。(おやじは、サーバだけ用途毎の別名を登録した。DNSは、別名定義しないこと。)素直に、(8)項と同様にAレコードで定義しても良い。
$TTL 86400 (1) (2) @ IN SOA pdns.example.com. root.example.com. ( 2005020501 ; serial (3) 3H ; refresh (4) 15M ; retry (4) 1W ; expiry (4) 1H ) ; minimum (4) IN NS pdns.example.com. (5) IN MX 10 example.com. (6) @ IN A 192.168.1.101 (7) pdns IN A 192.168.1.101 (8) www IN A 192.168.1.101 (8) mail IN A 192.168.1.101 (8) ftp IN A 192.168.1.101 (8)
(1) 家庭内で使用するdnsのFQDNを指定。(最後に ' . '(ピリオド)を忘れずに) (5)とあわせること。
(2) サーバ管理者のメールアドレス(' @ 'を ' . 'に変えて指定。最後に ' . '(ピリオド)を忘れずに) ドメインは(6)とあわせること。
(3)〜(4) 前述と同一
(5) ネームサーバ名を指定。 (1)とあわせること。
(6) メールエクスチェンジャの指定。(外向きと合わせた)
(7) example.comでサーバのローカルアドレスを返すための設定。
(8) 各ホスト名をAレコードで定義(CNAMEのほうが簡単であるが)
$TTL 86400 (1) (2) @ IN SOA pdns.acorn.examplex.com. root.acorn.examplex.com. ( 2005020501 ; serial (3) 3H ; refresh (4) 15M ; retry (4) 1W ; expiry (4) 1H ) ; minimum (4) IN NS pdns.acorn.examplex.com. (5) 1 IN PTR router.acorn.examplex.com. (8) 2 IN PTR oyaji.acorn.examplex.com. (8) 3 IN PTR rina.acorn.examplex.com. (8) 4 IN PTR akko.acorn.examplex.com. (8) 10 IN PTR printer.acorn.examplex.com. (8) 100 IN PTR pdns.acorn.examplex.com. (8) 101 IN PTR ns1.example.com. (8)
(1)〜(5)は、前述と同一.
(8)は、正引きの(8)で指定したホストの逆引きデータを指定。(別名定義したものではない)
$TTL 86400 (1) (2) @ IN SOA ns1.example.com. root.example.com. ( 2004060600 ; serial (3) 3H ; refresh (4) 15M ; retry (4) 1W ; expiry (4) 1H ) ; minimum (4) IN NS ns1.example.com. (10) IN NS nsx.zoneedit.com. (11) IN MX 10 example.com. (12) @ IN A xxx.xxx.xxx.xxx (13) ns1 IN A xxx.xxx.xxx.xxx (14) www IN A xxx.xxx.xxx.xxx (14) mail IN A xxx.xxx.xxx.xxx (14) ftp IN A xxx.xxx.xxx.xxx (14)
(1)〜(5)は、前述と同一.
(10) プライマリネームサーバ名を指定(レジストラに登録した自分のDNS)
(11) セカンダリネームサーバ名を指定(レジストラに登録したセカンダリDNS。とりあえずはなくても可。)
(12) メールエクスチェンジャの指定。(1)とあわせること。
(13) example.comでサーバのローカルアドレスを返すための設定。
(14) 各ホスト名をAレコードで定義
$TTL 86400 (1) (2) @ IN SOA ns1.examplex.com. root.acorn.examplex.com. ( 2005020501 ; serial (3) 3H ; refresh (4) 15M ; retry (4) 1W ; expiry (4) 1H ) ; minimum (4) IN NS ns1.examplex.com. (10) IN NS nsx.zoneedit.com. (11) IN MX 10 examplex.com. (12) @ IN A xxx.xxx.xxx.xxx (13) ns1 IN A xxx.xxx.xxx.xxx (14)
(1)〜(5)は、前述と同一.
(10) プライマリネームサーバ名を指定(レジストラに登録した自分のDNS)
(11) セカンダリネームサーバ名を指定(レジストラに登録したセカンダリDNS。とりあえずはなくても可。)
(12) メールエクスチェンジャの指定。(1)とあわせること。
(13) example.comでサーバのローカルアドレスを返すための設定。
(14) 各ホスト名をAレコードで定義
# named-checkconf /etc/namedo.conf # /etc/namedo.conf:8: unknown option 'option' |
# cd /var/lib/namedo # named-checkzone examplex.com ./dyn/examplex.com.zone zone example.com/IN: Loaded serial 2005020501 OK |
# chkconfig --list named named 0:off 1:off 2:off 3:off 4:off 5:off 6:off # chkconfig named on # chkconfig --list named named 0:off 1:off 2:off 3:on 4:off 5:on 6:off # /etc/init.d/named start Starting name server BIND 9 done |
Feb 6 01:26:23 server named[7588]: starting BIND 9.2.2 -c /etc/named.conf
-t /var/lib/named -u named Feb 6 01:26:23 server named[7588]: using 1 CPU Feb 6 01:26:23 server named[7590]: loading configuration from '/etc/named.conf' Feb 6 01:26:23 server named[7590]: listening on IPv4 interface lo, 127.0.0.1#53 Feb 6 01:26:23 server named[7590]: listening on IPv4 interface eth0:1, 192.168.1.100#53 Feb 6 01:26:23 server named[7590]: command channel listening on 127.0.0.1#953 Feb 6 01:26:23 server named[7601]: starting BIND 9.2.2 -c /etc/namedo.conf -t /var/lib/namedo -u named Feb 6 01:26:23 server named[7601]: using 1 CPU Feb 6 01:26:23 server named[7603]: loading configuration from '/etc/namedo.conf' Feb 6 01:26:23 server named[7603]: listening on IPv4 interface eth0, 192.168.1.101#53 |
# netstat -ln Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State : (snip) : tcp 0 0 192.168.1.100:53 0.0.0.0:* LISTEN tcp 0 0 192.168.1.101:53 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN : (snip) : tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN : (snip) : udp 0 0 192.168.1.100:53 0.0.0.0:* udp 0 0 192.168.1.101:53 0.0.0.0:* udp 0 0 127.0.0.1:53 0.0.0.0:* |
No. |
パラメータ |
設 定 内 容 |
1 |
$router_url | ルータのLAN側アドレスを指定 ( 192.168.1.1 ) |
2 |
$isp | ・MN8300/W Zive.orgに登録したいルータの接続先No.を指定 (1〜8) 外部スクリプトで検出する場合は、0を指定。ルータでの検出とは背反 |
3 |
$router_user | ルータのログインユーザ名を指定 |
4 |
$router_pass | ルータのログインパスワードを指定 |
5 |
$dir | このスクリプトを設置したディレクトリを指定 ( /usr/local/bin/ddns ) |
6 |
$domain | DDNSのドメイン名 ( examplex.com ) |
7 | $host | 登録ホスト名 ( example ) |
8 | $ttl | DDNSのTTL ( 600: 秒で指定 ) |
9 |
$dns | 外向けDNSのアドレス ( 192.168.1.101 ) |
10 | $key | update用共有鍵ファイル ( ./Kexamplex.com.+157+62830.key ) |
11 |
$debug | デバッグ用でルータから受信したメッセージを記録するか否か指定 ( 0:off 1:on ) |
# perl /usr/local/bin/ddns/ddns.cgi
# dig @192.168.1.101 acorn.examplex.com A
; <<>> DiG 9.2.2 <<>> @192.168.1.101 acorn.examplex.com A
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6614
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
;; QUESTION SECTION:
;acorn.examplex.com. IN A
;; ANSWER SECTION:
acorn.examplex.com. 600 IN A yy.yy.yy.yy
;; AUTHORITY SECTION:
examplex.com. 86400 IN NS ns1.examplex.com.
examplex.com. 86400 IN NS nsx.zoneedit.com.
;; ADDITIONAL SECTION:
ns1.examplex.com. 86400 IN A xx.xx.xx.xx
nsx.zoneedit.com. 97598 IN A zzz.zzz.zzz.zzz
;; Query time: 2 msec
;; SERVER: 192.168.1.101#53(192.168.1.101)
;; WHEN: Tue Feb 8 20:58:06 2005
;; MSG SIZE rcvd: 160
0-59/5 * * * * root perl /usr/local/bin/ddns/ddns.cgi