このページはリンク切れを生じないために残してありますが、内容は古くなっています。バージョン2.4.0については別ページを作りました。併せてご覧下さい。

いろいろ

interface

この状態でnetstatすると

$ netstat -a | grep :domain
$

localhostにすらbind()していません。
knot.confにinterfaces{}を書き足して

interfaces { any { address 0.0.0.0; } }
zones { example.jp { file "/proj/knot-1.3.1/etc/namedb/primary/example.jp"; } }
起動してみると

 /usr/bin/sudo /proj/knot-1.3.1/sbin/knotd
2013-09-14T12:26:57 Using '/proj/knot-1.3.1/etc/knot/knot.conf' as default configuration.
2013-09-14T12:26:57 Reading configuration '/proj/knot-1.3.1/etc/knot/knot.conf' ...
2013-09-14T12:26:57 Knot DNS 1.3.1 starting.
2013-09-14T12:26:57 Binding to interface 0.0.0.0 port 53.
2013-09-14T12:26:57 Configured 1 interfaces and 1 zones. 2013-09-14T12:26:57 Server started in foreground, PID = 10538 2013-09-14T12:26:57 Server running without PID file. 2013-09-14T12:26:57 Loading 1 zones... 2013-09-14T12:26:57 Loaded zone 'example.jp.' serial 1 2013-09-14T12:26:57 Loaded 1 out of 1 zones. 2013-09-14T12:26:57 Starting server... 2013-09-14T12:26:57 Binding remote control interface to /proj/knot-1.3.1/var/run/knot/knot.sock
0.0.0.0にbind()しました。netstatでも確認してみます。

$ netstat -a | grep :domain
tcp        0      0 *:domain                *:*                     LISTEN     
udp        0      0 *:domain                *:*                                

user

特権を放棄させるための設定を追加してみます。

system { user knot; }
interfaces { ANY { address 0.0.0.0; } } zones { example.jp { file "/proj/knot-1.3.1/etc/namedb/primary/example.jp"; } }
-dオプションをつけて起動してみると

$ /usr/bin/sudo /proj/knot-1.3.1/sbin/knotd -d

/var/log/syslogに

Sep 14 12:33:54 lars knot[10582]: [warning] Storage directory '/proj/knot-1.3.1/var/db/knot' is not writeable.

と出力されていて、errorではなくwarningなんですがknotdのプロセスは動作していません。

$ ps auxww | grep knotd | grep -v grep
$

/proj/knot-1.3.1/var/db/knotをユーザknotに書き込めるようにして

$ /usr/bin/sudo chown knot /proj/knot-1.3.1/var/db/knot

もう1度起動してみます。すると、さっきのwarningは解消しましたが、新しく

Sep 14 12:44:16 lars knot[10597]: [error] Couldn't create a PID file '/proj/knot-1.3.1/var/run/knot/knot.pid'.

というerrorが出ました。/proj/knot-1.3.1/var/run/knotもユーザknotに書き込めるようにして

$ /usr/bin/sudo chown knot /proj/knot-1.3.1/var/run/knot

起動してみます。

$ ps auxww | grep knotd | grep -v grep
knot     10604  0.0  0.0  32428  1992 ?        Ssl  12:48   0:00 /proj/knot-1.3.1/sbin/knotd -d

今度は無事起動しました。

class CH

identityとversionをonにしてみました。

system {
        user knot;
identity on; version on;
} interfaces { ANY { address 0.0.0.0; } } zones { example.jp { file "/proj/knot-1.3.1/etc/namedb/primary/example.jp"; } }

$ /proj/knot-1.3.1/bin/kdig @localhost version.bind TXT CH
; Warning: response timeout for ::1#53(UDP)

;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 50904
;; Flags: qr rd; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; version.bind.       	0	CH	TXT	

;; ANSWER SECTION:
version.bind.       	0	CH	TXT	"Knot DNS 1.3.1"

;; Received 57 B
;; Time 2013-09-14 12:59:09 JST
;; From 127.0.0.1#53(UDP) in 3.6 ms

この環境でv6が有効になっていないので::1がタイムアウトしてしまいました。

追記

…と書いておいたら、他ならぬCZ.nicのMarekさんからじきじきに日本語で(!)
"[::]"の"interface"をいれましょう。
というメールをいただきました。
interfaces {
        ANY {
                address 0.0.0.0;
        }
IN6ADDR_ANY { address [::]; }
}
という設定にして、kdigの問い合わせ先をlocalhostにしても::1にしてもタイムアウトしなくなったことを確認しました。
追記ここまで
今度は127.0.0.1で指定してみます。

$ /proj/knot-1.3.1/bin/kdig @127.0.0.1 hostname.bind TXT CH

;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 61437
;; Flags: qr rd; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; hostname.bind.      	0	CH	TXT	

;; ANSWER SECTION:
hostname.bind.      	0	CH	TXT	"lars.kkdlabs.jp"

;; Received 59 B
;; Time 2013-09-14 13:03:38 JST
;; From 127.0.0.1#53(UDP) in 0.1 ms
$ /proj/knot-1.3.1/bin/kdig @127.0.0.1 id.server TXT CH

;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 44970
;; Flags: qr rd; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; id.server.          	0	CH	TXT	

;; ANSWER SECTION:
id.server.          	0	CH	TXT	"lars.kkdlabs.jp"

;; Received 55 B
;; Time 2013-09-14 13:04:33 JST
;; From 127.0.0.1#53(UDP) in 0.1 ms

version.bind、hostname.bind、id.serverに、それぞれ答えるようになりました。
Copyright(c) 2013 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へ]