HEARTBEATS

BIND 10 1.0.0ベータ版レビュー後編:BIND 10のインストール

   

BIND 10の開発プロジェクトは終了しました。(注記: 2014年9月)

後編ではBIND 10 1.0.0-betaを試してみたい方向けに、BIND 10のインストール方法を紹介します。BIND 10を動かすために必要なソフトウェアやライブラリを揃えるのが大変なので、本記事ではこれらのパッケージが揃っているUbuntu Server 12.04.1 LTSを使います。

本記事は後編です。

なお、この情報は2012年12月20日時点でのBIND 10 1.0.0-betaについて書いたものです。

BIND 10のインストール

ここでは、BIND 10のインストール方法について紹介します。

BIND 10が必要とするソフトウェアやライブラリには次のものがあります。

  • C++, make, pkg-config, 他、基本的な開発環境およびライブラリ
  • Boost 1.35以上, Botan 1.8以上, log4cplus 1.0.3以上
  • SQLite 3.3.9以上
  • Python 3.1以上, Python3用のsetproctitleモジュール

これらのものを手動でビルドしてインストールするのはかなり手間なので、パッケージシステムを利用して導入するとよいでしょう。BIND 10 Guideによると、すべてのパッケージが揃うのはFreeBSD ports, NetBSD pkgsrc, Debian testingとの記述があります。

OS毎のインストールに関する情報はSystem Specific Notesに掲載されているので参考にしてください。

ここでは、Ubuntu Server 12.04.1 LTS (64bit)にインストールしてみます。Ubuntu 12.04.1では依存するライブラリのパッケージはPython3用のsetproctitleモジュール以外はすべて用意されています。

Ubuntu 12.04 LTS (Precise Pangolin) Install Notesの記述を参考にしてインストールを進めていきます。

依存するソフトウェアやライブラリのインストール

まず、依存するライブラリやヘッダをインストールします。

$ sudo apt-get install build-essential autoconf libtool pkg-config 
$ sudo apt-get install zlib1g-dev libssl-dev libexpat1-dev libreadline6-dev
$ sudo apt-get install libboost-all-dev libbotan1.10-dev liblog4cplus-dev \
  libsqlite3-dev python3-dev

SQLite3のデータベースを直接操作したい場合にはsqlite3パッケージもインストールします。

$ sudo apt-get install sqlite3

Python3用のsetproctitleモジュールをインストールします。

$ sudo apt-get install python3-setuptools
$ sudo easy_install3 setproctitle

PGP署名の検証の準備

ダウンロードしたBIND 10のソースコードのtar ballのPGP署名の検証をするために、gpgを使えるようにしておきます。

gpgの鍵の生成時にリモートからsshでのアクセスのために十分なエントロピーを集められなくて鍵の生成ができないことがあります。十分なエントロピーを集められるローカル環境で鍵を生成してコピーするのがよいのです。しかし、そのようにできないときには、次のようにして、rng-toolsパッケージを導入して、rngdを動かし、/dev/urandomからエントロピーを取得することもできます。

$ sudo apt-get install rng-tools
$ sudo vim /etc/default/rng-tools
HRNGDEVICE=/dev/urandom
$ sudo /etc/init.d/rng-tools start
Starting Hardware RNG entropy gatherer daemon: rngd.
$ gpg --gen-key

以上でBIND 10をインストールする準備ができました。

BIND 10のインストール

BIND 10のソースコードをダウンロードします。

$ wget ftp://ftp.isc.org/isc/bind10/1.0.0-beta/bind10-1.0.0-beta.tar.gz
$ wget ftp://ftp.isc.org/isc/bind10/1.0.0-beta/bind10-1.0.0-beta.tar.gz.sha512.asc

https://www.isc.org/about/openpgp からPGPの公開鍵を取得し、ファイルに保存します。保存した公開鍵をインポートして、ダウンロードしたソースコードのパッケージのPGP署名を検証します。

$ gpg --import pgpkey2012.txt 
$ gpg --sign-key codesign@isc.org
$ gpg --verify bind10-1.0.0-beta.tar.gz.sha512.asc bind10-1.0.0-beta.tar.gz
gpg: 2012年12月20日 21時26分05秒 JSTにRSA鍵ID C96B350Aで施された署名
gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   1  信用: 0-, 0q, 0n, 0m, 0f, 1u
gpg: 深さ: 1  有効性:   1  署名:   0  信用: 1-, 0q, 0n, 0m, 0f, 0u
gpg: 次回の信用データベース検査は、2013-02-01です
gpg: "Internet Systems Consortium, Inc. (Signing key, 2012) (http://www.isc.org/) <codesign@isc.org>"からの正しい署名

ソースコードのパッケージを展開してビルドします。

$ tar xzf bind10-1.0.0-beta.tar.gz
$ cd bind10-1.0.0-beta
$ ./configure --prefix=/usr/local
$ make

インストールします。ldconfigを実行するのを忘れずに。

$ sudo make install
$ sudo /sbin/ldconfig

BIND 10を実行するためのユーザbindとグループbindを作成し、設定ファイル用のディレクトリ(下記例では /usr/local/etc/bind10)とデータ用のディレクトリディレクトリ(下記例では/usr/local/var/bind10)に権限を付けます。

$ sudo addgroup --system bind 
$ sudo adduser --system --home /usr/local/var/bind10 --no-create-home \
  --disabled-password --ingroup bind bind 
$ sudo chown -R bind:bind /usr/local/etc/bind10
$ sudo chmod -R g+w /usr/local/etc/bind10
$ sudo chown -R bind:bind /usr/local/var/bind10
$ sudo chmod -R g+w /usr/local/var/bind10

まず、直接BIND 10を実行してみます。

$ sudo /usr/local/sbin/bind10 --user=bind
2012-12-21 11:46:01.486 INFO  [b10-cfgmgr.cfgmgr/22377] CFGMGR_CONFIG_FILE Configuration manager starting with configuration file: /usr/local/var/bind10/b10-config.db
2012-12-21 11:46:02.421 INFO  [b10-boss.boss/22374] BIND10_STARTING starting BIND10: bind10 20110223 (BIND 10 1.0.0-beta)
2012-12-21 11:46:02.422 INFO  [b10-boss.boss/22374] BIND10_CONFIGURATOR_START bind10 component configurator is starting up
2012-12-21 11:46:02.424 INFO  [b10-boss.boss/22374] BIND10_COMPONENT_START component Socket creator is starting
2012-12-21 11:46:02.425 INFO  [b10-boss.boss/22374] BIND10_SOCKCREATOR_INIT initializing socket creator parser
2012-12-21 11:46:02.425 INFO  [b10-boss.boss/22374] BIND10_SETGID setting GID to 113
2012-12-21 11:46:02.425 INFO  [b10-boss.boss/22374] BIND10_SETUID setting UID to 106
2012-12-21 11:46:02.425 INFO  [b10-boss.boss/22374] BIND10_COMPONENT_START component msgq is starting
2012-12-21 11:46:02.425 INFO  [b10-boss.boss/22374] BIND10_STARTING_PROCESS starting process b10-msgq
2012-12-21 11:46:02.425 INFO  [b10-boss.boss/22374] BIND10_COMPONENT_START component cfgmgr is starting
2012-12-21 11:46:02.425 INFO  [b10-boss.boss/22374] BIND10_STARTING_PROCESS starting process b10-cfgmgr
2012-12-21 11:46:02.425 INFO  [b10-boss.boss/22374] BIND10_STARTING_CC starting configuration/command session
2012-12-21 11:46:02.430 INFO  [b10-boss.boss/22374] BIND10_READING_BOSS_CONFIGURATION reading boss configuration
2012-12-21 11:46:02.432 INFO  [b10-boss.boss/22374] BIND10_CONFIGURATOR_RECONFIGURE reconfiguring running components
2012-12-21 11:46:02.434 INFO  [b10-boss.boss/22374] BIND10_COMPONENT_START component b10-stats is starting
2012-12-21 11:46:02.435 INFO  [b10-boss.boss/22374] BIND10_STARTING_PROCESS starting process b10-stats
2012-12-21 11:46:02.438 INFO  [b10-boss.boss/22374] BIND10_COMPONENT_START component b10-cmdctl is starting
2012-12-21 11:46:02.440 INFO  [b10-boss.boss/22374] BIND10_STARTING_PROCESS starting process b10-cmdctl
2012-12-21 11:46:02.448 INFO  [b10-boss.boss/22374] BIND10_STARTUP_COMPLETE BIND 10 started
2012-12-21 11:46:02.616 INFO  [b10-stats.stats/22378] STATS_STARTING starting

起動時のメッセージが表示されます。エラーが出たり、起動が中断したりしていなければインストールは成功です。成功が確認できたら、Ctrl+Cで割り込みをかけて停止させます。

Ubuntu 12.04ではinitデーモンにUpstartを使っているので、UpstartにBIND 10のサービスを登録します。そのために、まず、次の内容の/etc/init/bind10.confファイルを作成します。

# bind10 - BIND 10 boss process
description "BIND 10 boss process" 

start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec /usr/local/sbin/bind10 --user=bind

bind10サービスを起動させます。ps axfコマンドを実行してサービスが起動しているのを確認してください。

$ sudo start bind10 
bind10 start/running, process 22386
$ ps axf | grep -E '(b|bind)10' 
22386 ?        Ss     0:00 /usr/local/sbin/bind10
22387 ?        S      0:00  \_ b10-sockcreator
22388 ?        S      0:00  \_ b10-msgq
22389 ?        S      0:00  \_ b10-cfgmgr
22390 ?        S      0:00  \_ b10-stats
22391 ?        Sl     0:00  \_ b10-cmdctl

以上でBIND 10のインストールは完了です。

なお、初期状態では権威サーバb10-authもフルサービスリゾルバb10-resolverも起動していないので設定を行う必要があります。

各コンポーネントの起動設定

デフォルトでは起動しないコンポーネントを起動させる設定について簡単に紹介します。具体的な設定方法やbindctlコマンドの使い方については後編で説明します。

後述するbindctlによる設定のほとんどはBIND 10 Guideからの引用です。

b10-stats-httpd - 統計レポートのためのHTTPサーバ

有効にする場合にはbindctlコマンドで次のようにします。

> config add Boss/components b10-stats-httpd
> config set Boss/components/b10-stats-httpd/kind dispensable
> config commit

デフォルトのポート番号は8000番であるため、次のようにしてデータを取得できます。

$ wget -O bind10-stats.xml http://127.0.0.1:8000/bind10/statistics/xml

b10-auth - 権威サーバ

権威サーバとして動かすにはbindctlコマンドで"execute init_authoritative_server"を実行します。なお、b10-authだけでなはく、b10-xfrinとb10xfroutとb10-zonemgrも有効になります。

> execute init_authoritative_server
adding Authoritative server component
adding Xfrin component
adding Xfrout component
adding Zone Manager component
Components added. Please enter "config commit" to
finalize initial setup and run the components.
> config commit

詳細な設定については後編で説明します。

b10-ddns - ダイナミック アップデート サービス

有効にする場合にはbindctlコマンドで次のようにします。

> config add Boss/components b10-ddns
> config set Boss/components/b10-ddns/address DDNS
> config set Boss/components/b10-ddns/kind dispensable
> config commit

デフォルトではアップデートリクエストは拒否されるため、実際に使うにはさらにアクセス制御の設定が必要です。

b10-resolver - フルサービスリゾルバ

有効にする場合にはbindctlコマンドで次のようにします。

> config add Boss/components b10-resolver
> config set Boss/components/b10-resolver/special resolver
> config set Boss/components/b10-resolver/kind needed
> config set Boss/components/b10-resolver/priority 10
> config commit

デフォルトではループバック インターフェイス アドレスの"127.0.0.1"と"::1"のみでリッスンして、アクセス制御も"127.0.0.1"と"::1"からのアクセスのみを許可しています。ホスト自体のリゾルバとして使う場合にはそのまま使えます。しかし、他のホストに対するフルサービスリゾルバとしてサービスを提供するときには、設定を変更する必要があります。

以上でインストールについての説明が終わりました。

参考情報

株式会社ハートビーツの技術情報やイベント情報などをお届けする公式ブログです。



ハートビーツをフォロー

  • Twitter:HEARTBEATS
  • Facebook:HEARTBEATS
  • HATENA:HEARTBEATS
  • RSS:HEARTBEATS

殿堂入り記事