このページはリンク切れを生じないために残してありますが、内容は古くなっていますのでご注意下さい。
小ネタ
chroot()
READMEやsamples/knot.full.confにも記述がありませんし、ソースツリーでgrep chrootを実行してみてもヒットしないので、v1.0.6の時点ではchroot()の機能はないようです。
特権放棄
samples/knot.full.confには
system {
user knot;
}
この設定を追加して、/proj/knot-dns/var/*と/proj/dns/namedb/example2.jpを削除し、さらにchmod 777 /proj/knot-dns/var /proj/dns/namedbしてknotc startしてみました。
% /usr/bin/sudo /proj/knot-1.0.6/sbin/knotc start
2012-06-28T21:52:31.798155+09:00 Using '/proj/knot-dns/etc/knot.conf' as default configuration.
起動は問題なくできました。ところがPIDファイルのオーナがknotにならずrootで、サイズが0Byteです。
% ls -l /proj/knot-dns/var
total 24
-rw-r----- 1 knot root 20517 Jun 28 21:56 example2.jp.diff.db
-rw-r--r-- 1 root root 0 Jun 28 21:56 knot.pid
この状態でknotc reloadしてみると
% /usr/bin/sudo /proj/knot-1.0.6/sbin/knotc reload
2012-06-28T21:59:04.610592+09:00 Using '/proj/knot-dns/etc/knot.conf' as default configuration.
2012-06-28T21:59:04.634286+09:00 [warning] Server PID not found, probably not running.
knotcはPIDファイルを参照しているようで、reloadに失敗してしまいました。
この問題は既にknot-dns-users MLで議論されているので、近い内に修正されるのではないでしょうか。
version.bindなど
% dig @192.0.2.1 version.bind TXT CH
; <<<< DiG 9.8.1-P1 <<<< @192.0.2.1 version.bind TXT CH
; (1 server found)
;; global options: +cmd
;; Got answer:
;; -<<HEADER<<- opcode: QUERY, status: REFUSED, id: 41600
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;version.bind. CH TXT
;; Query time: 3 msec
;; SERVER: 192.0.2.1#53(192.0.2.1)
;; WHEN: Sat Jun 30 15:28:16 2012
;; MSG SIZE rcvd: 30
% dig @192.0.2.1 hostname.bind TXT CH
; <<<< DiG 9.8.1-P1 <<<< @192.0.2.1 hostname.bind TXT CH
; (1 server found)
;; global options: +cmd
;; Got answer:
;; -<<HEADER<<- opcode: QUERY, status: REFUSED, id: 14165
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;hostname.bind. CH TXT
;; Query time: 3 msec
;; SERVER: 192.0.2.1#53(192.0.2.1)
;; WHEN: Sat Jun 30 15:30:12 2012
;; MSG SIZE rcvd: 31
% dig @192.0.2.1 id.server TXT CH
; <<<< DiG 9.8.1-P1 <<<< @192.0.2.1 id.server TXT CH
; (1 server found)
;; global options: +cmd
;; Got answer:
;; -<<HEADER<<- opcode: QUERY, status: REFUSED, id: 16990
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;id.server. CH TXT
;; Query time: 5 msec
;; SERVER: 192.0.2.1#53(192.0.2.1)
;; WHEN: Sat Jun 30 15:30:57 2012
;; MSG SIZE rcvd: 27
knot-1.0.6/src/knot.full.confに
# Identity of the server (see RFC 4892). Not used yet.
identity "I have no mouth and must scream";
knot-1.0.6/KNOWN_ISSUESに
Here is a list of the most notable features that are not supported in the
current version of Knot.
* Other DNS classes than IN (CH, CS, HS)
と書いてあるように、これらのサポートは予定にはあるようですが、まだされていません。
ゾーンデータのBIND独自拡張
BINDには、RFC 1035, DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATIONとRFC 2308, Negative Caching of DNS Queries (DNS NCACHE)($TTLが定義されている)で定義されているゾーンデータの書式の他に、時間に関するm(minutes)、h(hour)、d(day)、w(week)の補助単位と、$GENERATEディレクティブが独自に拡張されています。
このうち、時間に関する補助単位は起動のページで既に無意識の内に使ってしまいました。ここで$GENERATEについて調べてみましょう。
/proj/dns/namedb/example1.jpに、以下のように$GENERATEを書き足して
$TTL 1d
$ORIGIN example1.jp.
@ IN SOA ns.example1.jp. hostmaster.example1.jp. (
2012040101
20m
15m
4w
15m )
NS ns.example1.jp.
ns A 192.0.2.1
$GENERATE 2-254 pool$ IN A 192.0.2.$
knotc checkzoneしてみると
% /proj/knot-1.0.6/sbin/knotc checkzone example1.jp
2012-07-03T22:32:43.530181+09:00 Using '/proj/knot-dns/etc/knot.conf' as default configuration.
2012-07-03T22:32:43.550375+09:00 [warning] /proj/dns/namedb/example1.jp:11: Unknown directive: $GENERATE
2012-07-03T22:32:43.551988+09:00 [error] /proj/dns/namedb/example1.jp:11: syntax error
2012-07-03T22:32:43.555547+09:00 [error] /proj/dns/namedb/example1.jp:11: unknown character '$' (\036) seen - is this a zonefile?
2012-07-03T22:32:43.555651+09:00 [error] /proj/dns/namedb/example1.jp:11: unknown character '$' (\036) seen - is this a zonefile?
2012-07-03T22:32:43.555723+09:00 [error] /proj/dns/namedb/example1.jp:11: unrecognized RR type '2-254'
2012-07-03T22:32:43.555888+09:00 [error] Parser finished with 4 error(s).
エラーになってしまいました。
NSDでもメーリングリストで$GENERAGEをサポートして欲しいというリクエストがあって、nsdc rebuildの前にperlで下処理すれば?で話が終わっているんですが、Knot DNSも、少なくとも現時点では$GENERATEはサポートしていませんでした。
確かにNSDやKnot DNSがターゲットにしているrootやTLDでは$GENERATEを使う場面はありませんし、DNSSECを使うには署名前に$GENERATEを展開しなければならず、ネームサーバにロードされる時点では展開が済んでいますから、開発コンセプトとしては必要ない機能なんでしょうね。
RFC 2317
RFC 2317, Classless IN-ADDR.ARPA delegationで規程されている/24に満たないIPv4アドレス空間の逆索きゾーンの例として32/27.2.0.192.in-addr.arpa(192.0.2.32/27に対応するゾーン名)を試してみました。
knot.conf(実際はknot-2317.confという名前で試しました)には
zones {
32/27.2.0.192.in-addr.arpa {
file "/proj/dns/etc/namedb/32_27.2.0.192.in-addr.arpa";
}
}
という設定を追加し、ゾーンデータは
$TTL 1d
$ORIGIN 32/27.2.0.192.in-addr.arpa
@ IN SOA ns.example1.jp. hostmaster.example1.jp. (
2012070401
20m
15m
4w
15m )
NS ns.example1.jp.
という内容で作成してknotc checkzoneしたところ
% /usr/bin/sudo /proj/knot-1.0.6/sbin/knotc -c /proj/knot-dns/etc/knot-2317.conf checkzone 32/27.2.0.192.in-addr.arpa
2012-07-04T19:47:33.287327+09:00 [error] Config '/proj/knot-dns/etc/knot-2317.conf' - syntax error on line 5 (current token '32').
2012-07-04T19:47:33.287980+09:00 [error] Failed to parse configuration '/proj/knot-dns/etc/knot-2317.conf'.
というエラーになりました。この件もメーリングリストでレポートしたところ開発者から反応がありましたので、そのうち直ると思います。
v1.1.0-rc1で直っています。
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) $
[TSIGでゾーン転送を認証してみるへ|indexへ]