このページはリンク切れを生じないために残してありますが、内容は古くなっていますのでご注意下さい。

スレーブになってみる

無事、プライマリとしてゾーンデータをサーブできたので、次はスレーブとして動作させてみましょう。
先ほどのとは別のexample2.jpゾーンのスレーブとして設定してみます。マスタは203.0.113.1です。
knot.confにremotes{}でマスタについての設定を追加し、zones{}にはexample2.jpゾーンの設定を追加します。xfr-inはゾーン転送の要求先、notify-inはNOTIFYの受け入れ制限です。

system {
        storage "/proj/knot-dns/var";
}
interfaces {
        eth0 {
                address 192.0.2.1;
        }
}
remotes { ns.example2.jp { address 203.0.113.1; } }
zones { example1.jp { file "/proj/dns/namedb/example1.jp"; }
example2.jp { file "/proj/dns/namedb/example2.jp"; xfr-in ns.example2.jp; notify-in ns.example2.jp; }
}
それでは設定をチェックしてみましょう。

% /usr/bin/sudo /proj/knot-1.0.6/sbin/knotc checkconf
2012-06-28T21:43:43.746520+09:00 Using '/proj/knot-dns/etc/knot.conf' as default configuration.
2012-06-28T21:43:43.768185+09:00 [error] Config '/proj/knot-dns/etc/knot.conf' - remote specified for XFR/IN or NOTIFY/OUT  needs to have valid port! on line 20 (current token 'ns.example2.jp').
2012-06-28T21:43:43.768695+09:00 [error] Failed to parse configuration '/proj/knot-dns/etc/knot.conf'.

xfr-inで参照するエントリ(ここではns.example2.jp{}には、53番であってもportの設定が必要なようです。

system {
        storage "/proj/knot-dns/var";
}
interfaces {
        eth0 {
                address 192.0.2.1;
        }
}
remotes {
        ns.example2.jp {
                address 203.0.113.1;
port 53;
} } zones { example1.jp { file "/proj/dns/namedb/example1.jp"; } example2.jp { file "/proj/dns/namedb/example2.jp"; xfr-in ns.example2.jp; notify-in ns.example2.jp; } }
portの設定を追加したところ、今度はチェックに通りました。

% /usr/bin/sudo /proj/knot-1.0.6/sbin/knotc checkconf
2012-06-28T21:44:21.124770+09:00 Using '/proj/knot-dns/etc/knot.conf' as default configuration.
2012-06-28T21:44:21.133484+09:00 OK, configuration is valid.

それではreloadしましょう。

% /usr/bin/sudo /proj/knot-1.0.6/sbin/knotc reload
2012-06-28T21:44:55.880573+09:00 Using '/proj/knot-dns/etc/knot.conf' as default configuration.
2012-06-28T21:44:55.900643+09:00 Server reload queued - OK.

example2.jpのゾーンデータとデータベースが増えています。

% ls -l /proj/dns/namedb
total 8
-rw-r--r-- 1 root root 148 Jun 21 19:34 example1.jp
-rw------- 1 root root 236 Jun 24 10:50 example2.jp
% ls -l /proj/knot-dns/var total 68 -rw-r--r-- 1 root root 282 Jun 21 19:34 example1.jp.db -rw-r--r-- 1 root root 9 Jun 21 19:34 example1.jp.db.crc -rw-r----- 1 root root 20517 Jun 24 10:52 example1.jp.diff.db
-rw------- 1 root root 282 Jun 24 10:50 example2.jp.db -rw-r--r-- 1 root root 11 Jun 24 10:50 example2.jp.db.crc -rw-r----- 1 root root 20517 Jun 24 10:52 example2.jp.diff.db
-rw-r--r-- 1 root root 4 Jun 24 10:52 knot.pid
digでexample2.jpをクエリしてみます。

% dig @localhost example2.jp SOA

; <<>> DiG 9.8.1-P1 <<>> @localhost example2.jp SOA
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36367
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;example2.jp.                   IN      SOA

;; ANSWER SECTION:
example2.jp.            86400   IN      SOA     ns.example2.jp. hostmaster.example2.jp. 2012062401 1200 900 2419200 900

;; AUTHORITY SECTION:
example2.jp.            86400   IN      NS      ns.example2.jp.

;; ADDITIONAL SECTION:
ns.example2.jp.         86400   IN      A       203.0.113.1

;; Query time: 5 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jun 24 10:54:20 2012
;; MSG SIZE  rcvd: 109

ちゃんと応答しました。それでは、他のホスト(実はマスタ)からゾーン転送を要求してみます。

ns.example2.jp% dig @192.0.2.1 example2.jp AXFR

; <<>> DiG 9.6.-ESV-R5-P1 <<>> @192.0.2.1 example2.jp AXFR
; (1 server found)
;; global options: +cmd
; Transfer failed.

拒否されました。xfr-outを設定しないときの動作は、allow anyではなくdeny anyのようです。
Copyright(c) 2012 Koh-ichi Ito, All rights reserved
ページ先頭のアイコン: Copyright(c) 2017 いらすとや, All rights reserved.
Last update: $Date: 2019-08-16 11:45:02 +0900 (Fri, 16 Aug 2019) $
[起動へ|indexへ|マスタになってみるへ]