BIND10で権威DNSを試してみた

DNS
Published: 2012-10-14

 前回にてBIND10のインストールが上手く行ったので、権威DNSの設定(Chapter 9. Authoritative Server)を試してみました。

b10-authを自動起動させる

 デフォルトではb10-auth(権威DNS用プロセス)が自動起動しないので、自動起動するように設定変更します。

[root@centos6 ~]# bindctl
> config add Boss/components b10-auth
> config set Boss/components/b10-auth/special auth
> config set Boss/components/b10-auth/kind needed
> config set Boss/components/b10-auth/priority 10
> config commit
2012-10-14 16:18:12.502 INFO  [b10-boss.boss] BIND10_CONFIGURATOR_RECONFIGURE reconfiguring running components
2012-10-14 16:18:12.503 INFO  [b10-boss.boss] BIND10_COMPONENT_START component b10-auth is starting
2012-10-14 16:18:12.503 INFO  [b10-boss.boss] BIND10_STARTING_PROCESS starting process b10-auth
> 2012-10-14 16:18:12.515 INFO  [b10-auth.auth] AUTH_SERVER_CREATED server created
2012-10-14 16:18:12.528 INFO  [b10-auth.auth] AUTH_SERVER_STARTED server started

ゾーンファイルを読み込ませる

 BIND10開発版だとsqlite方式と従来のゾーンファイル形式がサポートされているようで、デフォルトで両パターンの設定例が乗っています。

[root@centos6 ~]# bindctl
> config show all
(中略)
data_sources/classes/IN[0]/type "sqlite3"       string  (default)
data_sources/classes/IN[0]/params       {"database_file": "/usr/local/var/bind10-devel/zone.sqlite3"}      any     (default)
data_sources/classes/IN[0]/cache-enable false   boolean (default)
data_sources/classes/IN[0]/cache-zones  []      list    
data_sources/classes/CH[0]/type "static"        string  (default)
data_sources/classes/CH[0]/params       "/usr/local/share/bind10-devel/static.zone"     any     (default)
data_sources/classes/CH[0]/cache-enable false   boolean (default)
data_sources/classes/CH[0]/cache-zones  []      list    

 とりあえずゾーンファイル方式を試します。sqliteはデータベースファイルの作り方が分らなくて。。。まずはデフォルトで読み込まれているstatic.zoneを削除します。

[root@centos6 ~]# bindctl
> config remove data_sources/classes CH
> config commit
> config show all
(中略)
data_sources/classes/IN[0]/type "sqlite3"       string  
data_sources/classes/IN[0]/params       {"database_file": "/usr/local/var/bind10-devel/zone.sqlite3"}      any     
data_sources/classes/IN[0]/cache-enable false   boolean (default)
data_sources/classes/IN[0]/cache-zones  []      list   

 そして、ソースファイルに含まれているexample.net用のゾーンファイルを読み込ませます。

[root@centos6 ~]# bindctl 
["login success "] login as root
> config add data_sources/classes/IN
> config set data_sources/classes/IN[1]/type MasterFiles
> config set data_sources/classes/IN[1]/cache-enable true
> config set data_sources/classes/IN[1]/params { "example.net": "/usr/local/var/bind10-devel/example.net" }
> config commit
> config show all
(中略)
data_sources/classes/IN[0]/type "sqlite3"       string  
data_sources/classes/IN[0]/params       {"database_file": "/usr/local/var/bind10-devel/zone.sqlite3"}      any     
data_sources/classes/IN[0]/cache-enable false   boolean (default)
data_sources/classes/IN[0]/cache-zones  []      list    
data_sources/classes/IN[1]/type "MasterFiles"   string  
data_sources/classes/IN[1]/params       {"example.net": "/usr/local/var/bind10-devel/example.net"}any      
data_sources/classes/IN[1]/cache-enable true    boolean 
data_sources/classes/IN[1]/cache-zones  []      list    

 ゾーンファイルに記載されているa.dns.example.netを問い合わせるとちゃんと答えました。同一セグメントのwindowsPCからBIND10を指定してa.dns.example.netをnslookupしてみましたが、こちらもちゃんと答えました。

[root@centos6 ~]# dig @localhost a.dns.example.net
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.5 <<>> @localhost a.dns.example.net
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38474
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 7
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;a.dns.example.net.             IN      A

;; ANSWER SECTION:
a.dns.example.net.      1000    IN      A       1.1.1.1

;; AUTHORITY SECTION:
example.net.            1000    IN      NS      a.dns.example.net.
example.net.            1000    IN      NS      b.dns.example.net.
example.net.            1000    IN      NS      c.dns.example.net.

;; ADDITIONAL SECTION:
a.dns.example.net.      1000    IN      AAAA    2:2::2:2
b.dns.example.net.      1000    IN      AAAA    4:4::4:4
b.dns.example.net.      1000    IN      AAAA    5:5::5:5
b.dns.example.net.      1000    IN      A       3.3.3.3
c.dns.example.net.      1000    IN      AAAA    8:8::8:8
c.dns.example.net.      1000    IN      A       6.6.6.6
c.dns.example.net.      1000    IN      A       7.7.7.7

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Sun Oct 14 17:01:33 2012
;; MSG SIZE  rcvd: 257

 逆に、設定を削除したstatic.zoneに記載されていたauthors.bindには答えません。

[root@centos6 bind10-devel]# dig @127.0.0.1 -c CH -t TXT authors.bind

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.5 <<>> @127.0.0.1 -c CH -t TXT authors.bind
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 30891
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;authors.bind.                  CH      TXT

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct 14 19:21:50 2012
;; MSG SIZE  rcvd: 30

 細かい部分はさておき、権威DNSとしての基本的な設定が出来ました。従来のnamed.confを編集する方法ではなく、bindctlで作業していく方式の様です。後はゾーン転送とDNSSECですね。dnssec-signzoneなどのコマンドが見当たらないので、どうしたものかと悩んでいます。