DNS サーバーの構築 : サーバーのインストール
さて、今日からは心機一転(?)各種サーバーソフトウェアをインストールしていきたいと思います。まずは最も基本的なサービスとして DNS を提供する BIND をインストールします。DNS サーバーを立てておくと他のサーバーもより便利に使えます。また、外部のドメイン名解決をキャッシュするので、ネットワーク負荷も減りますよ(^^)v
なお、今回構築する DNS サーバーは LAN 内でのみ使用することを前提にしていて、インターネットへの公開は考えていません。マスター DNS サーバー1台のみの構成で、セキュリティーもさほど高くないのでご注意ください。
BIND のインストール
GentooLinux で使える DNS サーバーにはいくつかありますが、ここでは Internet Systems Consortium が開発する BIND を使用します。BIND は Portage で簡単にインストールできます。
emerge bind
/etc/bind/named.conf の作成
BIND の最も基本的な設定ファイルが "/etc/bind/named.conf" です。記述できる内容は多岐に渡っており、そのすべてを説明するのは困難です。よって、まず私が使用した "named.conf" の内容を示し、そこで使用している記述のみを説明しようと思います。詳細は BIND 9 Administrator Reference Manual などを参照してください。
以下が、今回私が使用した "/etc/bind/named.conf" です。
options { directory "/var/bind"; listen-on-v6 { none; }; allow-transfer { none; }; pid-file "/var/run/named/named.pid"; allow-query { 192.168.0.0/24; 127.0.0.1; }; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "pri/localhost.zone"; allow-update { none; }; notify no; }; zone "127.in-addr.arpa" IN { type master; file "pri/127.zone"; allow-update { none; }; notify no; }; zone "sourcewalker.com" IN { type master; file "pri/sourcewalker.com.zone"; allow-update { none; }; notify no; }; zone "0.168.192.in-addr.arpa" IN { type master; file "pri/0.168.192.zone"; allow-update { none; }; notify no; };
基本的な文法
"named.conf" は、C 言語に似た独特の文法で記述します。大まかに、以下の形式のステートメントが並んでいると考えられます。
<コマンド> [オプション...] [ { ブロック } ] ;
- コマンド
- 指示内容を表す文字列です。使用できるコマンドは場所ごとにあらかじめ決められています。
- オプション
- コマンドのパラメータです。どのようなパラメータが指定できるかは、コマンドによって異なります。
- ブロック
- コマンドによっては、さらに詳細なオプションを指定するためにブロックを指定する場合があります。ブロックの中身もやはり上記の形式のステートメントを複数並べることができます。
IP アドレスの指定方法
コマンドによっては、ブロック内にコマンドとして IP アドレスを指定できるものがあります。その際は以下の記述が使用できます。
- 単体のアドレスを指定
- 普通に IP アドレスを記述すれば、その IP アドレスが単体で指定されます。
- ネットワーク全体のアドレスを指定
- "192.168.0.0" のようにホスト部を 0 にしたアドレスを指定すると、そのネットワーク全体のアドレスが指定されたとみなします。
- サブネット全体を指定
- "192.168.0.0/24" のようにネットワーク部のビット数とともに指定すると、そのサブネット全体が指定されたとみなします。
さらに、以下のシンボルも使用できます。
any | すべてのアドレス |
none | まったく指定しない場合 |
localhost | 自ホストの指定 |
localnets | 自分自身を含むネットワーク上の全ホスト |
ゾーンの指定方法
ゾーンとは、ひとつのゾーンファイルで管理する範囲を言います。通常、ひとつのドメインは正引き(ホスト名から IP アドレスへのマッピング)と逆引き(IP アドレスからホスト名へのマッピング)の 2 つのゾーンで構成されます。
正引きゾーンの指定は、単にドメイン名を指定すれば OK です。今回の場合、私が取得しているドメイン名である "sourcewalker.com" を指定しています。
逆引きゾーンの指定はちょっと複雑です。その DNS サーバーで管理する IP アドレスのネットワーク部を逆の順番で記述し、最後に ".in-addr.arpa" を付加します。私の自宅 LAN はクラス C の 192.168.0.0 〜 192.168.0.255 を使用していますので、"0.168.192.in-addr.arpa" となります。
ルートに記述できるコマンド
ルートに記述できる主なコマンドには以下のものがあるようです。
コマンド | 内容 |
---|---|
acl | IP アドレスのリストを定義 |
controls | rndc コマンドで使用するコントロールチャンネルの宣言 |
include | 他のファイルの内容を挿入 |
logging | ログの記録方法の指定 |
options | グローバルオプションの指定 |
server | 個々のサーバーごとのオプションを定義 |
trusted-keys | DNSSEC で使用する鍵の定義 |
zone | 各ゾーンの情報 |
今回使用した options、zone のコマンドについて以下で説明していきます。
"options" ルートコマンド
"options" コマンドは BIND 全体の動作を制御するコマンドです。パラメータは特になく、ブロック内にさまざまなサブコマンドを並べることで動作を制御します。使用できるサブコマンドは多数ありますが、以下に今回使用したものを列挙します。
- directory
- "named.conf" 以外の設定ファイルが存在するパスを指定します。GentooLinux の場合、"/var/bind" を指定することになっています。
- listen-on-v6
- BIND が問い合わせに答えるネットワークポートを IPv6 のアドレスで指定します。今回は IPv6 は使用しないので、"none;" を指定しています。
- allow-transfer
- スレーブ DNS サーバーが存在する場合、転送を許可する IP アドレスを指定します。今回はマスターサーバーのみの構成なので、"none;" を指定しています。
- allow-query
- どのクライアントからの問い合わせに返答するかを指定します。
- pid-file
- サーバーの起動制御に使用するファイルを指定します。GentooLinux の場合、"/var/run/named/named.pid" を指定します。
"allow-query" の指定だけネットワーク構成にあわせて変更すれば、あとはこのままで動作するはずです。
"zone" ルートコマンド
"zone" ルートコマンドは、BIND で管理するゾーンを指定するコマンドです。以下のように指定します。
zone "<ゾーン名>" IN { サブコマンド... } ;
ゾーン名は、前述の書式で記述してください。ダブルクォーテーションで囲むのを忘れずに。今回は以下のサブコマンドを使用しています。
- type
- そのゾーンでどのような役割を果たすかを指定します。具体的な指定は後述。
- file
- そのゾーンのデータベースファイル(ゾーンファイル)を指定します。
- allow-update
- DynamicDNS の機能を有効にする場合に、更新要求を受け付ける IP アドレスを指定します。今回はこの機能は使わないので、"none;" を指定しています。
- notify
type コマンドのパラメータは以下のいずれかです。
hint | ルート DNS サーバーのヒント情報の指定 |
master | マスターサーバーとして動作 |
slave | スレーブサーバーとして動作 |
stub | よくわかりません(^^; |
forward | 他のサーバーに処理を委譲する |
ルートゾーン(".")は原則的に "type hint; file "named.ca"" を指定します。"localhost"、"127.in-addr.arpa" はローカルループバックアドレスに対するゾーンで、ゾーンファイルもあらかじめ用意されていますので、このままで動くはずです。その他のゾーンは、ネットワーク構成にあわせて変更してください。ゾーンファイルも新たに作成する必要があります。
文法チェック
"named.conf" ファイルを作成したら、文法チェックをしておきましょう。以下のコマンドを実行し、エラーが表示されなければ OK です。
named-checkconf /etc/bind/named.conf
以上で基本的な設定が終わりました。明日からはゾーンファイルの作り方を説明していきます。
詳しくはこちらの記事をどうぞ!
この記事にコメントする