ライン

ポイント:*

ライン

 はじめに

pkgで入れるBIND9.9

 FreeBSD 9系まで、OSに取り込まれていたネームサーバBINDが、FreeBSD 10から除外されました。
去年の4月にportsで突っ込んだページを作りましたが、今回はpkgで導入して利用するためのメモを残します。

 導入

pkgを利用

 /usr/ports/dns/bind9*は種類がいくつかあるのですが、余計な機能を最初から外してできている方がいいので、portsでコンパイルする方針にしました。※その後は結局 pkg install bind99 で済ませました

# pkg install bind99

 これで完了です。起動スクリプト名は namedになります。
以下のように、デフォルトの指定が書かれていますので、/etc/rc.confに必要な記述を加えることにします。

named_enable=${named_enable:-"NO"}              # Run named, the DNS server (or NO).
named_program=${named_program:-"/usr/local/sbin/named"} # Path to named, if you want a different one.
named_conf=${named_conf:-"/usr/local/etc/namedb/named.conf"}    # Path to the configuration file
named_flags=${named_flags:-""}                  # Use this for flags OTHER than -u and -c
named_uid=${named_uid:-"bind"}                  # User to run named as
named_wait=${named_wait:-"NO"}                  # Wait for working name service before exiting
named_wait_host=${named_wait_host:-"localhost"} # Hostname to check if named_wait is enabled
named_auto_forward=${named_auto_forward:-"NO"}  # Set up forwarders from /etc/resolv.conf
named_auto_forward_only=${named_auto_forward_only:-"NO"}        # Do "forward only" instead of "forward first"
named_confdir="${named_conf%/*}"                # Not a configuration directive but makes rclint happy.

現状、こんなにしてあります。

# named(BIND9)
named_enable="YES"
named_flags="-4"
named_chroot_autoupdate="NO"
named_auto_forward="NO"         # Set up forwarders from /etc/resolv.conf
named_auto_forward_only="NO"    # Do "forward only" instead of "forward first"

 引き続き、設定です。これまでのゾーンファイルを持ち込みますが、若干修正が必要です。

 設定

 まず、今回よりOSに含まれていませんので、設定ファイルの位置が変わります。
/usr/local/etc/namedb 以下に設置されるように変わります。
named.conf.sampleをベースに修正していきます。

options {
        // Relative to the chroot directory, if any
        directory       "/usr/local/etc/namedb/working";

 小さなところでは、上記のように位置が変わることの関連で変更された部分です。
その他、ログの出力位置も通常のファイル位置になりました。

logging {
        channel default_log {
                 file "/var/log/named/named.log" versions 7 size 3m;
                 severity        dynamic;
                 print-time      yes;
                 print-category  yes;

上記は例ですが、/var/log/named というディレクトリを作成し、ここに書き出されるようにしています。
これは自分で作成してあげる必要があったので、

# cd /var/log
# mkdir named
# chown bind:bind named

のようにしました。

また、作成しているゾーンファイル関連の箇所では

zone    "example.com"     {
        type    slave;
        file    "/usr/local/etc/namedb/slave/example.com.bak";
        masters {
                (DNSのマスターのあるサーバのID);
        };
        notify yes;
        allow-query     { any; };
};

のように絶対パス記述に変わっています。(※上記はスレーブ側の記述例です)

 他で気になったのは、rndc.confでこれまでのものを持ち込みましたが、なにげにエラーが出たので rndc.conf.sampleがありましたので再作成をしました。

 後はサービスをあげるだけで、

# service named start

のように起動してきました。

#ps -ax | grep named
xxxxx  -  Ss     0:00.97 /usr/local/sbin/named -4 -u bind -c /usr/local/etc/namedb/named.conf

のように浮かんでいました。

 その他

追加した内容

新しいバージョンを使うようにしたら、ログにはこんな記述が結構ありました。

- edns-disabled: success resolving 'yousheng.9966.org/A' (in '9966.org'?)
 after reducing the advertised EDNS UDP packet size to 512 octets

 結構こんなのが多いです。つい最近の脆弱性対応の記述を加えるのは別の話としても、こんなのでログを汚されるのも面倒。
loggingの設定の間に、

        category edns-disabled {
                null;
        };

などを加えて、

# rndc reload

で反映をしました。

キャッシュされたものだけを削除

DNSに余計なキャッシュが残ってしまいそれだけを削除したい場合があると思います。

# rndc flushname (レコード)

これで消えます。マスターで作業というよりは、キャッシュサーバ上などで前のものが残っていて困る際にはこれを利用してまわります。

セカンダリのゾーンファイルがバイナリよりもテキストが良いと考える場合

これはどこかのページにも書いたので、復習ということで。

masterfile-format text;

これをoptionsのどこでも良いので、1行加えてあげれば良いです。
rndc reloadだけだと、以前のものは変わらないし、

# cd /usr/local/etc/namedb/slave
# rm *
# service named restart

として一括で変更しちゃいました。サービス影響なんて考慮していません…うちのサーバは特に…


【改訂履歴】作成:2015-01-21 更新:2015-03-08

【リンク】


Copyright © 1996,1997-2006,2007- by F.Kimura,