関連記事:サーバー | ||||
---|---|---|---|---|
BIND の使い方
具体的な BIND の使い方を紹介します。各設定の詳細は後述します。
BIND をインストール
BIND (named)の設定
以下の内容を追記します。
- listen-onDNS: サーバーの IP アドレスを設定
- allow-query:DNS リクエストを受け付ける IP レンジ
- zone "hogetech.info" IN:hogetech.info ゾーンファイルを指定
赤線箇所が編集箇所です。
options { listen-on port 53 { 192.0.2.1;localhost; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { 192.0.2.0/24;localhost; }; recursion yes; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.root.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; zone "hogetech.info" IN{ type master; file "hogetech.info.zones"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
$TTL 86400 @ IN SOA test.hogetech.info. postmaster.hogetech.info.( 1 ; Serial 7200 ; Refresh 900 ; Retry 1209600 ; Expire 86400 ) ; Minimum IN NS test.hogetech.info. test IN A 192.0.2.1 IN AAAA ::ffff:c000:201
zone hogetech.info/IN: loaded serial 1 zone localhost.localdomain/IN: loaded serial 0 zone localhost/IN: loaded serial 0 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 zone 0.in-addr.arpa/IN: loaded serial 0
上記のように表示されると構文エラーはありません。
「**** loaded serial *」以外のメッセージが表示された場合は構文エラーとなります。
BIND の動作確認
実際に BIND (127.0.0.1)に対して test.hogetech.info の名前解決をリクエストして、DNS サーバーとして正しく動作していることを確かめます。
;; ANSWER SECTION: test.hogetech.info. 86400 IN A 192.0.2.1 ;; AUTHORITY SECTION: hogetech.info. 86400 IN NS test.hogetech.info. ;; ADDITIONAL SECTION: test.hogetech.info. 86400 IN AAAA ::ffff:192.0.2.1
上記のように表示されると成功です。以降では今まで設定した内容を詳しく説明します。
BIND の設定の詳細
設定ファイル or ディレクトリ | ファイル or ディレクトリパス |
---|---|
主要設定ファイル | /etc/named.conf |
RFC 1912 ゾーン設定ファイル (localhost や 127.0.0.1 等の最小限の DNS レコードを設定) | /etc/named.rfc1912.zones |
DNSSEC ルート鍵 | /etc/named.root.key |
ゾーンディレクトリ(マスター) | /var/named |
ゾーンディレクトリ(セカンダリ) | /var/named/slaves |
データ用ディレクトリ | /var/named/data |
主要設定ファイル
ここでは主要設定ファイル /etc/named.conf について説明します。
named.conf の書式は以下のとおりです。
<ステートメント> [<パラメータ>] { <サブステートメント> };
よく利用するステートメントは、以下の4種類です。
ステートメント | 説明 |
---|---|
options ステートメント | named の基本的な設定 |
logging ステートメント | BIND のログ出力方法を設定 |
zone ステートメント | ゾーンデータベースの種類とゾーンファイルを設定 |
include ステートメント | 指定したファイルを追加の設定ファイルとして読み込む |
options ステートメント
options ステートメントには、以下のサブステートメントがあります。
サブステートメント | |
---|---|
listen-on | listen するポートと IP アドレス |
listen-on-v6 | listen するポートと IPv6 アドレス |
directory | マスターのゾーンディレクトリ |
dump-file | rndc コマンドの dumpdb 命令で、named がキャッシュしているデータのダンプ先 |
statics-file | rndc コマンドの stats 命令で、統計情報の出力先 |
memstatistics-file | named が終了時に、メモリの使用統計の出力先 |
allow-query | DNS サーバーに問い合わせ可能なクライアントの許可 |
recursing | 再帰的な問い合わせが可能か |
dnssec-enable | DNSSEC が有効か |
dnssec-validation | 問い合わせの結果を DNSSEC を使って検証するか |
managed-keys-directory | RFC5011 で定義された DNSSEC トラストアンカーの自動更新のためのファイルを指定 |
pid-file | PID 情報の出力先 |
session-keyfile | TSIG セッションキーの保存先 |
以下のような設定をする場合の設定例を示します。
logging ステートメント
logging ステートメントでよく利用するサブステートメントは以下のとおりです。
サブステートメント | 説明 |
---|---|
category | ログのカテゴリをどの channel に出力するか指定 |
channel | ログの書き出し場所を指定 |
category には主に以下の値があります。
category | 説明 |
---|---|
default | デフォルトのカテゴリ。channel を指定しなかった場合はこれ |
general | すべてのカテゴリを表す。 |
database | データベース操作を行ったときのログメッセージ |
security | 許可/不許可となったリクエストのログメッセージ |
config | 設定ファイルに処理を行った際のログメッセージ |
channel には主に以下の値があります。
channel | 説明 |
---|---|
file | ログの出力先 |
size | サイズ制限 |
severity | 重要度 |
version | バージョン |
以下のような設定をする場合の設定例を示します。
- category が security のログは default_security の channel を利用
- default_security の channel は /var/named/data/security.log に保存
logging { category "security" { "default_security"; }; channel default_security { file "data/security.log"; severity dynamic; }; };
zone ステートメント
zone ステートメントでよく利用するサブステートメントは以下のとおりです。
サブステートメント | 説明 |
---|---|
type | ゾーンデータベースの種類 ・hint (ルートドメインの情報が格納された場所) ・master (マスターサーバー) ・slave (スレーブサーバー) ・stub (スタブサーバー) ・foward (フォワーディングサーバー) |
file | ゾーンファイルのパス |
allow-update | 動的な情報更新を許可するか |
その他のサブステートメントは以下をご覧ください。
以下のような設定をする場合の設定例を示します。
- hogetech.info ゾーンを管理
- クラスは IN
- ゾーンデータベースはマスターサーバー
- マスターのゾーンファイルは /var/named/hogetech.info.zones にある
zone "hogetech.info" IN{ type master; file "hogetech.info.zones"; };
include ステートメント
include ステートメントはファイルのパスを指定することで追加の設定を読み込みます。
include "/etc/named.rfc1912.zones";
ゾーンファイル
ゾーンファイルには以下の2つを記載します。
項目 | 説明 |
---|---|
マスターファイルディレクティブ | リソースレコードの共通設定を記載 |
リソースレコードディレクティブ | ゾーン情報を持つリソースレコードを設定 |
リソースレコードの詳細については以下の記事をご覧ください。
マスターファイルディレクティブ
マスターファイルディレクティブには、以下の項目が設定可能です。
項目 | 説明 |
---|---|
$ORIGIN | ゾーンの基点名。 デフォルト値は主要設定ファイルにある zone ステートメントの引数 |
$INCLUDE | 追加のファイルを include |
$TTL | デフォルトの TTL を設定 |
すべてのリソースレコードで TTL を 86400 とする場合、マスターファイルディレクティブを以下のように設定します。
$TTL 86400
リソースレコードディレクティブ
リソースレコードディレクティブは、以下のフォーマットでリソースレコード記載します。
<owner> [period] <class> <type> <value>
以下のような設定をする場合のリソースレコードの設定例を示します。
- $ORIGIN は hogetech.info とします
- hogetech.info のプライマリーサーバーは hogetech.info
- hogetech.info のドメイン管理者のメールアドレスは postmaster@hogetech.info
- test.hogetech.info の A レコードは 192.0.2.1
- test.hogetech.info の AAAA レコードは ::ffff:c000:201
@ IN SOA test.hogetech.info. postmaster.hogetech.info.( 1 ; Serial 7200 ; Refresh 900 ; Retry 1209600 ; Expire 86400 ) ; Minimum IN NS test.hogetech.info. test IN A 192.0.2.1 IN AAAA ::ffff:c000:201
- 「@」 は 基点名「$ORIGIN」 を表します。
- 「@ IN SOA」は「hogetech.info IN SOA」を表します。
「test IN A 192.0.2.1」は「test.hogetech.info IN A 192.0.2.1」を表します - 「IN AAAA ::ffff:c000:201」は「test.hogetech.info IN AAAA ::ffff:c000:201」を表します
関連記事
関連記事:サーバー | ||||
---|---|---|---|---|