|
Linux(CentOS5.5) BIND9 ソースファイルによるバージョンアップ方法 |
|
|
|
|
|
|
|
|
Linux(CentOS5.5)でのソースファイルによるBINDのバージョンアップ手順の一例を示す |
|
|
|
|
|
|
|
|
ここでは、 |
|
・ 32bit環境 |
|
・ 新しいBINDを、既存のBINDとは同じディレクトリにインストール(上書きインストール)する |
|
として説明する |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
手順の流れ |
|
1. BINDのダウンロードおよび検証 |
|
|
|
|
2. make , ar , gcc , opensslv.hのPATHの確認 |
設定済みであれば省略 |
|
|
3. 共有ライブラリのPATHの設定 |
設定済みであれば省略 |
|
|
4. BINDのインストール |
既存のBINDと同じディレクトリにインストール |
|
|
5. BINDの起動と動作確認 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.BINDのソースのダウンロードと検証 |
|
BINDを提供しているISCでは、ファイルの正当性確認のためにPGP署名を用意している |
|
検証のためには、ソースファイル以外にもISCのPGP公開鍵と署名ファイルが必要となる |
|
GnuPGによる検証方法の詳細は、GnuPGを使ったPGP署名の確認方法を参照 |
|
|
|
|
|
|
|
|
[ 設定例 ] |
|
$ cd /tmp |
適当なディレクトリへ移動 |
|
|
|
|
|
|
|
|
|
$ wget http://ftp.isc.org/isc/bind9/9.7.3-P3/bind-9.7.3-P3.tar.gz |
wgetで、BIND本体、ISCの公開鍵、署名ファイルの3つをダウンロード |
|
|
$ wget http://149.20.64.42/files/pgpkey2009.txt |
|
|
|
|
$ wget http://ftp.isc.org/isc/bind9/9.7.3-P3/bind-9.7.3-P3.tar.gz.asc |
|
|
|
|
|
|
|
|
|
|
|
$ ls |
確認 |
|
|
bind-9.7.3-P3.tar.gz pgpkey2009.txt bind-9.7.3-P3.tar.gz.asc |
|
|
|
|
|
|
|
|
|
|
|
$ yum list installed | grep gnupg |
GnuGPパッケージがインストールされているか確認 |
|
|
gnupg.i386 1.4.5-14.el5_5.1 installed |
(なければ、 yum install gnupg でインストール) |
|
|
|
|
|
|
|
|
|
$ su - |
|
|
|
|
|
|
|
|
|
|
|
# gpg --import pgpkey2009.txt |
ISCの公開鍵のインポート |
|
|
|
|
|
|
|
|
|
# gpg --list-keys |
インポートした公開鍵の確認 |
|
|
//.gnupg/pubring.gpg |
少なくとも、http://www.isc.org/about/openpgpで公開しているISCのPGP公開鍵の鍵IDと |
|
|
-------------------- |
同じことを確認する |
|
|
pub 2048R/0B7BAE00 2009-05-19 [満了: 2012-05-18] |
0B7BAE00 = 鍵ID |
|
|
uid Internet Systems Consortium, Inc. (Signing key, 2009) |
|
|
|
|
sub 2048R/321216F8 2009-05-19 [満了: 2012-05-18] |
|
|
|
|
|
|
|
|
|
|
|
# gpg --verify bind-9.7.3-P3.tar.gz.asc bind-9.7.3-P3.tar.gz |
署名の確認 (署名の確認だけであれば、自分の鍵の作成や公開鍵に対する署名は不要) |
|
|
gpg: 2011年06月28日 07時19分21秒 JSTにRSA鍵ID 0B7BAE00で施された署名 |
鍵ID:0B7BAE00で署名されていることが確認できた |
|
|
gpg: “Internet Systems Consortium, Inc. (Signing key, 2009) ” |
ただし、その公開鍵が本当にISCのものかは証明されていない |
|
|
からの正しい署名 |
↓ |
|
|
gpg: 警告: この鍵は信用できる署名で証明されていません! |
自分の鍵を作成して、公開鍵を署名することによって左記の警告を出力させないこともできるが、 |
|
|
gpg: この署名が所有者のものかどうかの検証手段がありません。 |
その公開鍵を自分で勝手に信頼しただけであり、証明できたわけではない |
|
|
主鍵の指紋: FA76 7A86 A371 E359 22F6 A5C8 D811 B53F 0B7B AE00 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
$ ls -l /usr/bin/gmake |
gmakeはmakeのシンボリックリンク |
|
|
lrwxrwxrwx 1 root root 4 4月 12 2011 /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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.BINDのインストール |
|
makeまでは一般ユーザで行う |
|
makeからmake installまで一気に行っても良いが、ここでは、make installする前に起動確認をすることにしている |
|
大幅なバージョンアップをする場合、新たな設定が必要になってくることが多いので注意する |
|
|
|
|
|
|
|
|
[ 設定例 ] |
|
$ tar xvzf bind-9.7.3-P3.tar.gz |
解凍と展開 |
|
|
|
|
|
|
|
|
|
$ cd bind-9.7.3-P3 |
移動 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ ./configure --prefix=/usr --exec_prefix=/usr --localstatedir=/var --sysconfdir=/etc ¥ |
./configure 実行 |
|
|
--disable-openssl-version-check --enable-ipv6 --enable-threads --enable-chroot |
オプションについては後述 |
|
|
|
|
|
|
最後にmake cleanも実行される |
|
|
|
|
|
|
|
|
|
$ make |
mak 実行 |
|
|
|
|
|
|
|
|
|
$ 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) |
ある |
|
|
libdl.so.2 => /lib/libdl.so.2 (0x009ac000) |
左記の例は、./configureのオプションで--enable-threads を |
|
|
libz.so.1 => /usr/lib/libz.so.1 (0x009d9000) |
--enable-thread とした場合の状態を示す |
|
|
/lib/ld-linux.so.2 (0x00807000) |
あるべきはずの、libpthread.so.0が見当たらない |
|
|
|
|
|
|
|
|
|
$ su - |
rootユーザに変更 |
|
|
|
|
|
|
|
|
|
# ps -ef | grep named |
既存のnamedサービスのプロセス確認 |
|
|
named 15026 1 0 09:38 ? 00:00:00 /usr/sbin/named -u named -t /var/named/chroot |
|
|
|
|
|
|
|
|
|
|
# service named stop |
起動中のBINDをいったん停止 |
|
|
named を停止中: [ OK ] |
|
|
|
|
|
|
|
|
|
|
# ps -ef | grep named |
|
|
|
|
|
|
|
|
|
|
# cd /tmp/bind-9.7.3-P3 |
|
|
|
|
|
|
|
|
|
|
# ./bin/named/named -u named -t /var/named/chroot |
新しいBINDで起動し、問題がないかを確認する |
|
|
|
|
|
|
|
|
|
# ps -ef | grep named |
|
|
|
named 20995 1 0 14:28 ? 00:00:00 ./bin/named/named -u named -t /var/named/chroot |
プロセスの確認 |
|
|
|
|
|
|
|
|
|
# tail -30 /var/log/messages |
ログにエラーが出ていないこと |
|
|
# tail -30 /var/named/chroot/var/log/named/named.info |
|
|
|
|
|
|
|
|
|
|
# ./bin/rndc/rndc status |
新しいrndcコマンドが利用できること |
|
|
version: 9.7.3-P3 (Not available.) |
|
|
|
CPUs found: 1 |
|
|
|
worker threads: 1 |
|
|
|
number of zones: 5 |
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
# ./bin/dig/dig +noall +answer +comments @localhost www.yahoo.co.jp a |
新しいdigコマンドで問い合わせができてること |
|
|
;; Got answer: |
|
|
|
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21833 |
|
|
|
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0 |
|
|
|
|
|
|
|
|
|
|
;; ANSWER SECTION: |
|
|
|
www.yahoo.co.jp. 878 IN CNAME www.ya.gl.yahoo.co.jp. |
|
|
|
www.ya.gl.yahoo.co.jp. 60 IN A 124.83.203.233 |
|
|
|
|
|
|
|
|
|
|
# service named stop |
特に動作に問題がなければサービスを停止 |
|
|
named を停止中: [ OK ] |
|
|
|
|
|
|
|
|
|
|
# make install |
make install 実行 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5.BINDの起動と動作確認 |
|
|
|
|
|
|
|
|
[ 設定例 ] |
|
# service named start |
serviceコマンドで起動 |
|
|
named を起動中: [ OK ] |
|
|
|
|
|
|
|
|
|
|
# ps -ef | grep named |
プロセス確認 |
|
|
named 18656 1 1 15:20 ? 00:00:00 /usr/sbin/named -u named -t /var/named/chroot |
namedユーザでchroot環境で動作していること |
|
|
|
|
|
|
|
|
|
# tail -30 /var/log/messages |
ログにエラーが出ていないこと |
|
|
# tail -30 /var/named/chroot/var/log/named/named.info |
|
|
|
|
|
|
|
|
|
|
# rndc status |
rndcコマンドが利用できること |
|
|
version: 9.7.3-P3 (Not available.) |
|
|
|
CPUs found: 1 |
|
|
|
worker threads: 1 |
|
|
|
number of zones: 5 |
|
|
|
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 +noall +answer +comments @localhost www.yahoo.co.jp a |
digコマンドで問い合わせができてること |
|
|
;; Got answer: |
|
|
|
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56580 |
|
|
|
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0 |
|
|
|
|
|
|
|
|
|
|
;; ANSWER SECTION: |
|
|
|
www.yahoo.co.jp. 877 IN CNAME www.ya.gl.yahoo.co.jp. |
|
|
|
www.ya.gl.yahoo.co.jp. 37 IN A 124.83.187.140 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
■ ./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を使用しない |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|