Linux(CentOS6.2)   BIND9.9.7-P2 ソースファイルによるインストール(バージョンアップ)方法
Linux(CentOS6.2)でのソースファイルによるBINDのバージョンアップする手順の一例を示す。
今回は、2015/7/28に公表されたBIND9の脆弱性に対応するため、BIND9.9.7-P2にバージョンアップしてみた。
ここでは、
・ 64bit環境
・ 新しいBINDを、既存のBINDとは同じディレクトリにインストール(上書きインストール)する
として説明する。
手順の流れ
1. BINDのダウンロードおよび検証
2. make , ar , gcc , opensslv.hのPATHの確認 インストール済みであれば省略
3. 共有ライブラリのPATHの設定
4. BINDのコンパイル 既存のBINDと同じディレクトリにインストール
5. make install前の動作確認 不要なら飛ばしても良い
6. BINDインストール、起動、動作確認
1.BINDのソースのダウンロードと検証
BINDを提供しているISCでは、ファイルの正当性確認のためにPGP署名を用意している。
検証のためには、ソースファイル以外にもISCのPGP公開鍵と署名ファイルが必要となる。
GnuPGによる検証方法の詳細は、GnuPGを使ったPGP署名の確認方法を参照。
[ 設定例 ]
# more /etc/redhat-release 今のOSはこれ。
CentOS release 6.2 (Final)
# date
2015年  8月  1日 土曜日 12:27:07 JST
$ su -
# gpg --list-keys rootユーザになって現在インポート済みの公開鍵を確認
/root/.gnupg/pubring.gpg ISCの公開鍵は入っているようだがすでに2015/1/31と期限切れのため、
------------------------ ISCの公開鍵のインポートも必要
pub   2048R/189CDBC5 2013-01-31 [満了: 2015-01-31]
uid                  Internet Systems Consortium, Inc. (Signing key, 2013) <codesign@isc.org> (そもそもpgpを入れてなければ、 yum install gnupg でインストール)
# exit
# cd /home/test1000/download/ ファイルのダウンロード先として適当なディレクトリを用意し、移動
$ ls 確認
PGPkey2013.key  bind-9.8.4-P1         bind-9.9.6-P1         bind-9.9.6-P1.tar.gz.asc 以前のものとかもある
bind-9.8.4-P1.tar.gz  bind-9.9.6-P1.tar.gz
# vi PGPkey2015.key ISCの公開鍵用のファイル(ファイル名は適用)をつくり、ここにISCのHPで公開されている
-----BEGIN PGP PUBLIC KEY BLOCK----- PGPkey2015の内容をコピー。
Version: GnuPG v1.4.11 (GNU/Linux)
PGPkey2015のURL
mQENBFR9szQBCADAwiKoEyFh32NHLc+c1vGgZ2lDKvXd7MoZZAOM2NUJkaDqt+Xy https://www.isc.org/downloads/software-support-policy/openpgp-key/
537ycGmZRqukpGUsa0fDeqjOq+l4paX3QnW1DEs8ypnWi5Zme4lYHysmNeG33ihe
SMeGRbnZi+9VTho3NGv3iM9gtRMDXTB5wi7OCu0XNypUtR2afP9F9EgRs4nJ5iMz
(省略)
ULyyX4kfu+mZj8AthxMpVDyaHil9WCX1uwGo+6rkiuAMvURbn05h5C92t2QUQJE1
rvBKpzLEBW8qQq5foo+8yHHWpzue4i4r2uEJ3+FLUsjtlU+3F+Pq
=dem0
-----END PGP PUBLIC KEY BLOCK-----
$ wget http://ftp.isc.org/isc/bind9/9.9.7-P2/bind-9.9.7-P2.tar.gz wgetで、BIND本体、署名ファイルの2つをダウンロード
$ wget http://ftp.isc.org/isc/bind9/9.9.7-P2/bind-9.9.7-P2.tar.gz.asc
$ ls
PGPkey2013.key  bind-9.8.4-P1.tar.gz  bind-9.9.6-P1.tar.gz.asc
PGPkey2015.key  bind-9.9.6-P1         bind-9.9.7-P2.tar.gz
bind-9.8.4-P1   bind-9.9.6-P1.tar.gz  bind-9.9.7-P2.tar.gz.asc
$ su -
# cd /home/test1000/download/
# gpg --import PGPkey2015.key ISCの公開鍵をインポート
gpg: 鍵911A4C02: 公開鍵“Internet Systems Consortium, Inc. (Signing key, 2015-2016) 
<codesign@isc.org>”を読み込みました
gpg:     処理数の合計: 1
gpg:           読込み: 1  (RSA: 1)
# gpg --list-keys インポートした公開鍵の確認(赤字のほう)
/root/.gnupg/pubring.gpg 鍵ID:911A4C02
------------------------
pub   2048R/189CDBC5 2013-01-31 [満了: 2015-01-31]
uid                  Internet Systems Consortium, Inc. (Signing key, 2013) <codesign@isc.org>
pub   2048R/911A4C02 2014-12-02 [満了: 2017-01-31]
uid                  Internet Systems Consortium, Inc. (Signing key, 2015-2016) <codesign@isc.org>
sub   2048R/1BD14881 2014-12-02 [満了: 2017-01-31]
# gpg --verify bind-9.9.7-P2.tar.gz.asc bind-9.9.7-P2.tar.gz 署名の確認
gpg: 2015年07月21日 02時14分12秒 JSTにRSA鍵ID 911A4C02で施された署名 鍵ID:911A4C02で署名されていることが確認できた
gpg: “Internet Systems Consortium, Inc. (Signing key, 2015-2016) <codesign@isc.org>”からの正しい署名 ただし、その公開鍵が本当にISCのものかは証明されていない
gpg: 警告: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。 自分の鍵を作成して、公開鍵を署名することによって左記の警告を出力させないこともできるが、
主鍵の指紋: ADBE 9446 286C 7949 05F1  E075 6FA6 EBC9 911A 4C02 その公開鍵を自分で勝手に信頼しただけであり、証明できたわけではない
2.make , ar , gcc , opensslv.hのPATHの確認
make(gmake)、ar、gcc、opensslv.hについては、./configure実行時に必要となる
CentOSのインストールに選択したパッケージによっては、これらがインストールされていないことがある
solarisと違ってCentOSではPATHは通っていると思うが、念のため確認をする
[ pathの確認 ]
$ which make 一般ユーザでmakeへのパスが通っていることを確認
/usr/bin/make 見つからなかったら、find とか  locate make とかで探してみる
$ ls -l /usr/bin/gmake gmakeはmakeのシンボリックリンク
lrwxrwxrwx. 1 root root 4 12月  6 21:07 2012 /usr/bin/gmake -> make
$ which ar 一般ユーザでarへのパスが通っていることを確認
/usr/bin/ar
$ which gcc 一般ユーザでgccへのパスが通っていることを確認
/usr/bin/gcc
# ls /usr/include/openssl/opensslv.h パスは通っていなくても、configureの中で/usr、/usr/local、/usr/local/ssl、/usr/pkg /usr/sfw
/usr/include/openssl/opensslv.h の各ディレクトリにあるinclude/openssl/opensslv.hを検索するようになっている
そのどれかのディレクトリにインストールされていれば問題ない
それ以外にインストールしているのであれば、--with-openssl で指定すればよい
3.共有ライブラリのPATHの設定
共有ライブラリのPATHを設定しなくても、多くの場合BINDのインストールは可能。
デフォルトの/libと/usr/lib以外にも、BINDのほうで/usr/local/ssl/libや/usr/sfw/libなども参照するようになっている。
CentOSでは、32bitオブジェクトと64bitオブジェクトが参照するライブラリパスとして、異なる環境変数が用意されている。
32bitオブジェクトが参照するライブラリパスの設定として、/etc/ld.so.conf、LD_LIBRARY_PATH、LD_RUN_PATHがあるが、/etc/ld.so.conf以外は設定されていない。
アプリケーションによるが、BINDではmake前に環境変数を参照している様子。
/libと/usr/lib以外の場所にある共有ライブラリを参照させたい場合は、LD_RUN_PATHを使用した方が良い。
  /etc/ld.so.conf    ・・・  システム全体が参照する
                     設定を変えるとシステム全体に影響する
  LD_LIBRARY_PATH  ・・・ コンパイル時に参照し、プログラム起動時にも参照する
                     そのため、コンパイルしたユーザと起動ユーザが参照するパスが異なっていたり、LD_LIBRARY_PATHの変更をすると影響を受ける
                     対応策として/etc/profileで全てのユーザが同じパスを見るようにする方法があるが、設定変更は全てのユーザに影響する
  LD_RUN_PATH     ・・・ コンパイル時に参照先パスとしてバイナリに埋め込む
                     そのため、LD_LIBRARY_PATHのような問題は起きない
[ 設定例 ]
$ LD_RUN_PATH=/usr/local/ssl/lib LD_RUN_PATHの設定
$ export LD_RUN_PATH ※ PATHの設定は必要な場合のみ実施
4.BINDのコンパイル
makeまでは一般ユーザで行う。
また、makeで作成された実行ファイルの確認やnamed.confが使用できることを確認する。
[ 設定例 ]
$ pwd bindのソースを落としたディレクトリに移動
/home/test1000/download
$ ls
PGPkey2013.key  bind-9.8.4-P1.tar.gz  bind-9.9.6-P1.tar.gz.asc
PGPkey2015.key  bind-9.9.6-P1         bind-9.9.7-P2.tar.gz
bind-9.8.4-P1   bind-9.9.6-P1.tar.gz  bind-9.9.7-P2.tar.gz.asc
$ tar xvzf bind-9.9.7-P2.tar.gz 解凍と展開
$ ls
PGPkey2013.key  bind-9.8.4-P1.tar.gz  bind-9.9.6-P1.tar.gz.asc  bind-9.9.7-P2.tar.gz.asc
PGPkey2015.key  bind-9.9.6-P1         bind-9.9.7-P2
bind-9.8.4-P1   bind-9.9.6-P1.tar.gz  bind-9.9.7-P2.tar.gz
$ cd bind-9.9.7-P2 移動
$ ps -ef | grep named ./configureに指定するオプションは現在のbindと合わせる場合、
named     1830     1  0 12:06 ?        00:00:00 /usr/sbin/named -u named -t /var/named/chroot 先に現在のbindのオプションを確認する
まずはpsでnamedのフルパス確認
$ /usr/sbin/named -V -V(大文字) を指定して確認
BIND 9.9.6-P1 (Extended Support Version) <id:3612d8fb> built by make with '--prefix=/usr' ' ※ 間違ったオプションを指定していてもbindは(見た感じ)普通に動くことがあるので、
--exec-prefix=/usr' '--localstatedir=/var' '--sysconfdir=/etc' '--disable-openssl-version-check' '    ./configure --helpでオプションの文字が間違っていないか確認しておく
--enable-ipv6' '--enable-threads' '--enable-chroot'
compiled by GCC 4.4.6 20110731 (Red Hat 4.4.6-3)
using OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
using libxml2 version: 2.7.6
$ /usr/sbin/named -v 普通先に確認しているだろうが、ついでに -v(小文字)で現在のbindのバージョンを確認
BIND 9.9.6-P1 (Extended Support Version)
$ more ../bind-9.9.6-P1/config.log 前回バージョンアップした際の./configureは、named -Vだけではなくても
(省略) config.logでも確認は可能。
  $ ./configure --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-openssl-ve
rsion-check --enable-ipv6 --enable-threads --enable-chroot
$ ./configure --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-openssl-ve ./configute実行(実際には1行)
rsion-check --enable-ipv6 --enable-threads --enable-chroot オプションについては後述
最後にmake cleanも実行される
$ make mak 実行
$ ldd ./bin/named/named リンクされている共有ライブラリの確認
        linux-vdso.so.1 =>  (0x00007fff911ff000)
        libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00000032c5400000)
        libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003a3b000000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00000032b8c00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00000032b9000000)
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00000032c2800000)
        libz.so.1 => /lib64/libz.so.1 (0x00000032b9400000)
        libm.so.6 => /lib64/libm.so.6 (0x00000032b8800000)
        libc.so.6 => /lib64/libc.so.6 (0x00000032b8400000)
        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00000032c3800000)
        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00000032c4400000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00000032c2c00000)
        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00000032c3000000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00000032c3c00000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00000032ba400000)
        /lib64/ld-linux-x86-64.so.2 (0x00000032b8000000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00000032ba000000)
$ ldd ./bin/named/named 共有ライブラリが正常にリックされていなかった場合の例(昔の実例)
        linux-gate.so.1 =>  (0x00958000) ./configureのオプションが間違っていたりPATHが通っていない場合、ライブラリが
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x005fb000) 見つからなかったり不足していることがある。
        libc.so.6 => /lib/libc.so.6 (0x00110000) 左記の例は、./configureのオプションで--enable-threads を
        libdl.so.2 => /lib/libdl.so.2 (0x009ac000) 左記の例は、./configureのオプションで--enable-threads を--enable-thread とした場合
        libz.so.1 => /usr/lib/libz.so.1 (0x009d9000) の状態を示す。
        /lib/ld-linux.so.2 (0x00807000) あるべきはずの、libpthread.so.0が見当たらない。
$ ./bin/named/named -V makeによって作成された実行ファイルの確認をする。
BIND 9.9.7-P2 (Extended Support Version) <id:304c9a9f> built by make with '--prefix=/usr' ' まずは、 -V(大文字)で./confugureで指定したオプションであっているか確認
--exec-prefix=/usr' '--localstatedir=/var' '--sysconfdir=/etc' '--disable-openssl-version-check' '
--enable-ipv6' '--enable-threads' '--enable-chroot'
compiled by GCC 4.4.6 20110731 (Red Hat 4.4.6-3)
compiled with OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
linked to OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
compiled with libxml2 version: 2.7.6
linked to libxml2 version: 20706
$ ./bin/named/named -v つづいて -v(小文字)で実行ファイルのバージョン確認
BIND 9.9.7-P2 (Extended Support Version)
$ su - 実行ファイルでのnamed.confの文法チェックもしておく
chroot環境(一般ユーザではアクセス不可)のため、いったんrootユーザになって
# cd /home/test1000/download/bind-9.9.7-P2/ named-checkconfを実施する
何も表示されなければ、問題なし。
# ./bin/check/named-checkconf /var/named/chroot/etc/named.conf
named-checkconfのエラー例
# ./bin/check/named-checkconf /var/named/chroot/etc/named.conf named.confで設定が誤っている場合は、named-chekconfを実施すると、
/var/named/chroot/etc/named.conf:39: boolean expected near 'ye' エラー内容が表示される
 (左記だと、39行目の yeという文字近くがおかしいという意味で、 yesのsをわざと消したから)
# vi /var/named/chroot/etc/named.conf 今回は、DNSSECの無効化、ゾーン転送で取得したゾーンファイルを引き続きテキスト形式
で保存したいと考えているので、named.confを編集。
options {
        dnssec-enable no;
        dnssec-validation no;
        masterfile-format text;
};
# ./bin/check/named-checkconf /var/named/chroot/etc/named.conf 再度実行ファイルで named.confの文法をチェック。
# named-checkconf /var/named/chroot/etc/named.conf 現在のnamedでも文法的に問題ないことを確認。
エラーが出た場合は、作業の切り戻しの際、named.confも元に戻す必要がある。
5.make install前の動作確認
make install前に作成した実行ファイルが正常に動作するかどうかを確認するため、一度現在のnamedを停止し、新しいnamedで起動してみる。
『そんなことすると2度手間だし、2回もnamedを再起動するとDNSサーバの負荷が心配だからやらなくても良い』、という考えであれば、ここの5の作業は不要。
[ 設定例 ]
# ps -ef | grep named 既存のnamedサービスのプロセス確認
named     1830     1  0 12:06 ?        00:00:00 /usr/sbin/named -u named -t /var/named/chroot
# ls -l /var/named/chroot/var/named/local/example.com.db 現在、example.comのセカンダリをしているので、その情報を確認。
-rw-r--r-- 1 named named 416  8月  1 14:14 2015 /var/named/chroot/var/named/local/example.com.db
# file /var/named/chroot/var/named/local/example.com.db テキスト形式
/var/named/chroot/var/named/local/example.com.db: ASCII text
# grep serial /var/named/chroot/var/named/local/example.com.db 今のシリアル番号の確認
                                2015080101 ; serial
# pwd
/home/test1000/download/bind-9.9.7-P2 現在はbind9.9.7-P2の実行ファイルがあるディレクトリ
# service named stop 現在のnamedを停止
named を停止中: .                                          [  OK  ]
# ./bin/named/named -u named -t /var/named/chroot すぐさま、新しいnamedを起動
# ps -ef | grep named
named    22459     1  0 14:18 ?        00:00:00 ./bin/named/named -u named -t /var/named/chroot
# tail -600 /var/log/messages ログの確認。
01-Aug-2015 14:18:03.215 general: info: received control channel command 'stop'
Aug  1 14:18:08 vm-centos62 named[22459]: built with '--prefix=/usr' '--exec-prefix=/usr' '--localstatedir=/var' '
--sysconfdir=/etc' '--disable-openssl-version-check' '--enable-ipv6' '--enable-threads' '--enable-chroot'
Aug  1 14:18:08 vm-centos62 named[22459]: loading configuration from '/etc/named.conf'
# tail -600 /var/named/chroot/var/log/named/named.info named.confでnamedに関するログの設定をしているのであれば、
そちらでもログを確認する。
# ./bin/rndc/rndc status 実行ファイルのrndc statusを実施
version: 9.9.7-P2 (BIND11) <id:304c9a9f> versionが9.9.7-P2であることを確認
CPUs found: 2 ( ) 内は、named.conf内で、 versionオプションで指定した文字が入る。
worker threads: 2 もしここに現在のバージョンが入っている場合は表示させないようにすること!
UDP listeners per interface: 2
number of zones: 105
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is ON
recursive clients: 0/2900/3000
tcp clients: 0/100
server is up and running
問い合わせの確認
# dig @localhost example.co.jp ns 正引きドメインや逆引きドメインを管理しているDNSであれば、
# dig @localhost -x 192.168.24.133 それらのドメインを自分自身に問い合わせて、 flagにaa がついた回答があることを確認する
# dig @localhost www.example.co.jp aaaa
# dig @localhost www.google.co.jp キャッシュサーバであれば、適当なドメイン(今回はwww.google.co.jp)を問い合わせて、
# dig @localhost -x 173.194.126.175 正引き、逆引きができることを確認。
# dig @localhost www.google.co.jp aaaa
# dig @localhost -x 2404:6800:4004:807::1018
# dig @192.168.24.138 example.com axfr セカンダリDNSであれば、digでプライマリDNSにaxfrで問い合わせて
ゾーン転送ができるか確認
(digによる動作確認なので、namedとは別問題だが…)
可能であれば、プライマリDNSで適当なゾーンのシリアル番号を上げて、
すぐにゾーン転送されるかを確認する。
今回はexample.comのプライマリDNS側でシリアル番号を上げてみた。
# ls -l /var/named/chroot/var/named/local/example.com.db ファイルが更新されていることを確認
-rw-r--r-- 1 named named 416  8月  1 14:41 2015 /var/named/chroot/var/named/local/example.com.db
# file /var/named/chroot/var/named/local/example.com.db テキスト形式のままであることを確認
/var/named/chroot/var/named/local/example.com.db: ASCII text
# grep serial /var/named/chroot/var/named/local/example.com.db シリアル番号が上がっていることを確認
                                2015080102 ; serial
# dig +noall +ans +multi @localhost example.com soa digコマンドでもシリアル番号が上がっていることを確認
example.com.            1000 IN SOA dns1.example.com. root.example.com. (
                                2015080102 ; serial
                                120        ; refresh (2 minutes)
                                60         ; retry (1 minute)
                                180        ; expire (3 minutes)
                                180        ; minimum (3 minutes)
                                )
# vi /var/named/chroot/var/named/local/example.co.jp.db プライマリDNSであれば、適当なゾーンのシリアル番号を上げて、
すぐにセカンダリにゾーン転送されるかを確認する。
                                2015080101 ; serial 今回はexample.co.jpのシリアル番号を上げてみた。
# ./bin/rndc/rndc reload 実行ファイルのrndcで reloadができることを確認
server reload successful
# dig +noall +ans +multi @192.168.24.138 example.co.jp soa セカンダリDNSに対してdigで問い合わせ
example.co.jp.          1000 IN SOA dns1.example.co.jp. root.example.co.jp. ( シリアル番号が上がっていることを確認
                                2015080101 ; serial
                                120        ; refresh (2 minutes)
                                60         ; retry (1 minute)
                                180        ; expire (3 minutes)
                                180        ; minimum (3 minutes)
                                )
6.BINDインストール、起動、動作確認
[ 設定例 ]
# pwd
/home/test1000/download/bind-9.9.7-P2
# ps -ef | grep named 現在のプロセス確認
named    22459     1  0 14:18 ?        00:00:00 ./bin/named/named -u named -t /var/named/chroot
# make install make install 実行
# kill -9 22459 現在起動中のnamedを停止
ここでは5の続きのため、killコマンドで停止させている
# ps -ef | grep named 停止したことを確認
# service named start serviceコマンドでnamedを起動
named を起動中:                                            [  OK  ] もし、5を飛ばしているのであれば、 service named restart となる。
# ps -ef | grep named namedプロセスが起動したことを確認
named    30091     1  0 15:11 ?        00:00:00 /usr/sbin/named -u named -t /var/named/chroot
以下、正常性の確認(ほぼ5と同じなので、詳細は5を参照)
# tail -600 /var/log/messages ログの確認
# tail -600 /var/named/chroot/var/log/named/named.info
# rndc status バージョン確認
# dig @localhost example.co.jp ns 権威DNSサーバとしての問い合わせ確認
# dig @localhost -x 192.168.24.133
# dig @localhost www.example.co.jp aaaa
# dig @localhost www.google.co.jp キャッシュDNSサーバとしての問い合わせ確認
# dig @localhost -x 173.194.126.175
# dig @localhost www.google.co.jp aaaa
# dig @localhost -x 2404:6800:4004:807::1018
# dig @192.168.24.138 example.com axfr digによるゾーン転送確認
# ls -l /var/named/chroot/var/named/local/example.com.db セカンダリDNSとしてのゾーン転送確認
# file /var/named/chroot/var/named/local/example.com.db   プライマリDNSサーバ側でシリアル番号を上げてみて、正常に反映されているかを確認
# grep serial /var/named/chroot/var/named/local/example.com.db
# dig +noall +ans +multi @localhost example.com soa
# tail /var/named/chroot/var/log/named/named.info
# vi /var/named/chroot/var/named/local/example.co.jp.db プライマリDNSサーバとしてのゾーン転送確認
# rndc reload  ゾーンのシリアル番号を上げてみて、セカンダリDNSに正常に反映されているかを確認
# dig +noall +ans +multi @192.168.24.138 example.co.jp soa  
# tail /var/named/chroot/var/log/named/named.info
■  ./configureのオプションについて
./configureで指定できる各種オプションは、 ./configure --help で確認できる(ただし、全てではない様子)
また、READMEファイルにオプションの説明がある
[ 主なオプションの説明 ]
--prefix=PREFIX 省略時は、/usr/local
--exec-prefix=EPREFIX 省略時は、prefixの値
--sysconfdir=DIR named.confが保存されるディレクトリ  省略時は、PREFIX/etc
--localstatedir=DIR zoneなどのファイルが保存されるディレクトリ 省略時は、PREFIX/var
--enable-openssl-version-check OpenSSLのバージョンをチェックする 省略時はチェックする
--disable-openssl-version-check OpenSSLのバージョンをチェックしない
--enable-threads マルチスレッディングを有効にする
シングルCPUでもこのオプションをつけても特に問題はない
--enable-ipv6 IPv6を有効にする  デフォルトは、IPv6を自動検出
--disable-ipv6 IPv6を無効にする
--disable-chroot chrootを無効にする  デフォルトは、chroot有効
--with-openssl=PATH 使用するOpenSSLのパスを指定
--with-openssl=yes OpenSSLを使用する  省略時はyes  DNSSECを使用する場合はOpenSSL必須
--with-openssl=no OpenSSLを使用しない