named (bind9) を設定する

named (bind9) をローカルドメイン管理用とキャッシュサーバとしてセットアップする手順を紹介します。 キャッシュサーバを運用することにより、 DNSの問い合わせで外部と通信する頻度を減らすことができ、 様々な処理のレスポンスを向上することができます。

このメモは OpenBSD 3.3版に基づいています。

参考: BIND 9 Administrator Reference Manual (PDF)

設定ファイルの作成

  1. /var/named/etc/named.conf
    設定の中心となるファイルです。
    options {
            forward only;
            forwarders { 202.224.32.1; 202.224.32.2; };
            allow-query { 192.168.0.0/24; 127.0.0.1; };
            listen-on { any; };
            listen-on-v6 { none; };
            version "";
    };
    
    /// Standard zones /////////////////////////////////////////////
    
    zone "." {
            type hint;
            file "standard/root.hint";
    };
    
    zone "localhost" {
            type master;
            file "standard/localhost";
            allow-transfer { localhost; };
    };
    
    zone "127.in-addr.arpa" {
            type master;
            file "standard/loopback";
            allow-transfer { localhost; };
    };
    
    zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
            type master;
            file "standard/loopback6.arpa";
            allow-transfer { localhost; };
    };
    
    zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" {
            type master;
            file "standard/loopback6.int";
            allow-transfer { localhost; };
    };
    
    /// Master zones ///////////////////////////////////////////////
    
    zone "local" {
            type master;
            file "master/local";
            allow-transfer { localhost; };
    };
    
    zone "0.168.192.in-addr.arpa" {
            type master;
            file "master/rev.192.168.0";
            allow-transfer { localhost; };
    };
    
    
    options に forward-only を指定すると、 自分で直接管理しているゾーン以外は、自分自身で解決をしないで、 forwarders に指定されたDNSサーバに問い合わせを転送します。 forwarders にはプロバイダのDNSサーバを指定します。
    Standard zones にはループバック関係の設定があり、変更する必要はありません。
    Master zones に独自に管理するゾーンについての設定を指定します。 各ゾーンの情報はここで指定されたファイルに設定することになります。
  2. /var/named/master/local
    ローカルドメイン(ここでは、"local")の正引きの情報を指定します。
    $TTL    86400   ; TTL (24H)
    @               IN SOA  ns.local. root.ns.local. (
                            2002113000      ; Serial (YYYYMMDDNN)
                            43200           ; Refresh (12H)
                            3600            ; Retry (1H)
                            3600000         ; Expire (1000H)
                            86400 )         ; Min TTL (24H)
                    IN NS   ns
    router          IN A    192.168.0.1
    ns              IN A    192.168.0.101
    hostname1       IN A    192.168.0.101
    hostname2       IN A    192.168.0.102
    hostname3       IN A    192.168.0.103
    
    hostname1 でDNSサーバを動かしているという想定の設定例です。
  3. /var/named/master/rev.192.168.0
    192.168.0.XX の逆引きの情報を指定します。
    $TTL    86400   ; TTL (24H)
    @               IN SOA  ns.local. root.ns.local. (
                            2002113000      ; Serial (YYYYMMDDNN)
                            43200           ; Refresh (12H)
                            3600            ; Retry (1H)
                            3600000         ; Expire (1000H)
                            86400 )         ; Min TTL (24H)
                    IN NS   ns.local.
    1               IN PTR  router.local.
    101             IN PTR  hostname1.local.
    102             IN PTR  hostname2.local.
    103             IN PTR  hostname3.local.
    

起動と利用の設定、動作確認

  1. /etc/rc.conf を編集して起動の設定をします。
    named_flags の設定値を NO から "" に変更します。
    named_flags=""          # for normal use: ""
    
  2. /etc/resolv.conf を編集して参照の設定をします。
    以下のように設定します。
    domain local
    nameserver 192.168.0.101
    
  3. named を起動するために、OSをリブートします。
    OSをリブートしなくても named を単独で起動することは可能ですが、 syslogd との関係で少し複雑になります。 OSをリブートしたくない場合には /etc/rc を参考にして起動してください。
  4. dig を使って動作確認をします。
    % dig hostname1.local
    
    ; <<>> DiG 9.2.2 <<>> hostname1.local 
    ;; global options: printcmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
    ;; QUESTIONS SECTION:
    ;hostname1.local.               IN      A
    
    ;; ANSWERS SECTION:
    hostname1.local.        86400   IN      A       192.168.0.101
    
    ;; AUTHORITY SECTION:
    local.                  86400   IN      NS      ns.local.
    
    ;; ADDITIONAL SECTION:
    ns.local.               86400   IN      A       192.168.0.101
    
    ;; Query time: 2 msec
    ;; SERVER: 192.168.0.101#53(192.168.0.101)
    ;; WHEN: Sat Jul 26 12:34:56 2003
    ;; MSG SIZE  rcvd: 87
    
    %