DNSサーバを立てる(続き)

設定ファイル(named.conf.options)

設定ファイルをこのようにします。

$ sudo nano /etc/bind/named.conf.options
acl localnet {
  192.168.1.0/24;  // 内部ネットワーク
  127.0.0.1;       // ループバック
};

options {
  directory "/var/cache/bind";
  version "DNS Server";           // Versionを隠す
  allow-query { localnet; };      // DNSクエリを許可する
  allow-recursion { localnet; };  // 再帰検索(DNSキャッシュ)を許可する
  allow-transfer { none; };       // ゾーン転送を許可する
  forward first;                  // 自身のzone、キャッシュに無いものはforwardersに投げる
  forwarders {
//  203.141.128.39;               // プライマリDNSサーバ(ddns1.interlink.or.jp)
    203.139.160.103;              // セカンダリDNSサーバ(ns-tk021.ocn.ad.jp)
  };
  auth-nxdomain no;    # conform to RFC1035
  listen-on-v6 { any; };
};

プライマリとセカンダリDNSサーバは一応これでいきます。
追記:プライマリにインターリンクDNSサーバを指定したところ『/var/log/daemon.log』に『named: FORMERR resolving』の嵐。

EDNS0 をサポートしないほとんどの古いサーバ (BIND の以前のバージョンも含む) は、これらのクエリに対して FORMERR または NOTIMP 応答を返す。この場合、 BIND 9 は自動的に EDNS0 を使わないでクエリをやり直す。
http://bonz.squares.net/~dais/misc/migration-9.1.2.html

ググルとこういうことが書いてあったので、まさかインターリンクが古いサーバじゃないよねと思いつつも、コメントアウトしてOCNの方にお任せしたら、FORMERRはぴたりと止まった。まさかね。

設定ファイル(named.conf)

前回(→Ubuntuサーバの設定いろいろ・その9 - satake7’s memo)作成した『/etc/bind/rndc.conf』の内容を『named.conf』に貼り付けます。『key "rndc-key"・・・』ブロックです。

$ sudo nano /etc/bind/named.conf
include "/etc/bind/named.conf.options";

key "rndc-key" {
  algorithm hmac-md5;
  secret "************************";
};
controls {
  inet 127.0.0.1 port 953
      allow { 127.0.0.1; } keys { "rndc-key"; };
};
view "internal" {
  match-clients { localnet; };

  zone "." {
    type hint;
    file "/etc/bind/db.root";
  };

  zone "localhost" {
    type master;
    file "/etc/bind/db.local";
  };

  zone "127.in-addr.arpa" {
    type master;
    file "/etc/bind/db.127";
  };

  zone "0.in-addr.arpa" {
    type master;
    file "/etc/bind/db.0";
  };

  zone "255.in-addr.arpa" {
    type master;
    file "/etc/bind/db.255";
  };

  zone "5-55.jp" IN {                 // 5-55.jpの正引きゾーン情報
    type master;
    file "/etc/bind/db.internal";
  };

  zone "1.168.192.in-addr.arpa" IN {  // 192.168.1.xxxの逆引きゾーン情報
    type master;
    file "/etc/bind/db.1.168.192";
  };

};                                  // view "internal"の終わり


include "/etc/bind/named.conf.local";

今回取得した汎用JPドメイン用の『zone "5-55.jp"』を追加します。

設定ファイル(named.conf.local)

$ sudo nano /etc/bind/named.conf.local
view "external" {
  match-clients { any; };
  zone "/etc/bind/5-55.jp" IN {           // 5-55.jpの正引きゾーン情報
    type master;
    file "db.5-55.jp";
    allow-query { any; };                 // 外部からのアクセスを許可
    allow-transfer { 203.139.160.103; };  // ゾーン転送を許可するセカンダリサーバのIPアドレス
    notify yes;
  };
};

セカンダリサーバのIPアドレスは本当はこれじゃいけないんですけど、ちゃんとセカンダリを借りたときに修正するとして、今回はこれでいきます。

設定ファイルのチェック

$ sudo named-checkconf /etc/bind/named.conf

ここまでやったら設定ファイルをチェックします。エラーがなければ何も出ません。ボクの場合、ケアレスミスで『/etc/bind/named.conf:60: syntax error near '}'』が出て、あわてて『};』を削除したら今度は『/etc/bind/named.conf:22: when using 'view' statements, all zones must be in views』が出たりしましたが、原因は『view "internal"』ブロックを書き忘れていたことでした。
この項、続く。