今回は正引き用設定ファイルの編集方法について見ていきます。
前回作成したnamed.conf内で定義したゾーンごとに、正引き用設定ファイルを作成します。正引き用設定ファイルでは、ホスト名とIPアドレスの対応づけを定義します。
まずは作成済みの正引き用設定ファイルを見てみましょう。正引き用設定ファイルはnamed.confのopionsステートメント「directory」で指定したディレクトリに、正引き用zoneステートメントの「file」で指定したファイル名で作成します。
# vi /var/named/webtest01.com $TTL 86400 @ IN SOA ns.webtest01.com. root.webtest01.com.( 2015123105 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns.webtest01.com. IN MX 10 mail.webtest01.com. localhost IN A 127.0.0.1 ns IN A 172.16.0.10 pc01 IN A 172.16.0.1 pc02 IN A 172.16.0.2 router IN A 172.16.0.254
正引き用設定ファイルに登録するエントリーには、ディレクティブと資源(リソース)レコードの2種類があります。
ディレクティブ
ディレクティブは、ネーム サーバーの制御情報、およびゾーンごとのオプションを記述します。行頭がドル記号($)で始まり、その後にディレクティブの名前が続きます。
$ORIGIN
修飾指定のないレコードに付加するドメイン名を指定します。通常、$ORIGINディレクティブは省略されます。省略した場合は、zoneステートメントで指定したドメイン名(この例では「webtest01.com.」)が、$ORIGINディレクティブ値として適用されます。また、$ORIGINディレクティブに設定した値そのものを名前として利用する場合、「@」で置き換えることができます。
$TTL
$TTLディレクティブでは、当該ゾーンの各レコードの寿命(Time To Live)の値を秒単位で指定します。ここで設定した値が資源レコードの有効期間として応答メッセージ中に含まれ、応答メッセージを受信したサーバーはTTLで定められた期間、得られた情報をキャッシュします。そのため、プライマリDNSサーバー側で何らかの変更を行なった場合、すぐには反映されず、最大$TTLディレクティブで指定した時間、他のDNSサーバーに更新が反映されない可能性があります。
資源(リソース)レコード
ホスト名とIPアドレスを対応づけるための定義を記述します。
SOA、NS、Aなどの「レコード」と呼ばれる単位で記述していきます。レコードには以下のような種類があります。
レコード | 意味 |
---|---|
SOA | ドメイン自体に関する情報 |
NS | DNSサーバーの情報 |
A | 正引きの情報 |
MX | メールサーバーの情報 |
CNAME | ホストの別名 |
PTR | 逆引きの情報 |
SOAレコード
SOAは「Start Of Authority」の略です。直訳のとおり、権威のあるゾーンの定義を開始することを意味します。ゾーン(ドメイン)定義を宣言するレコードと考えればわかりやすいでしょう。
SOAレコードはルートゾーン用の正引き用設定ファイル(named.ca)以外のファイルで必要であり、1つのファイル中で有効なSOAレコードは1つのみとなります。SOAレコードは、ディレクティブの直後かつ資源レコードの先頭に記述します。
@ IN SOA ns.webtest01.com. root.webtest01.com.( 2015123105 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum
複数行にわたっていますが上記がSOAレコードの記述になります。まずはSOAレコードから見ていきます。
項目 | 設定値 | 内容 |
---|---|---|
名前 | @ | $ORIGINディレクティブに設定した値を示す。$ORIGINディレクティブを省略した場合は、zoneステートメントで指定したドメイン名(この例では「webtest01.com.」)となる。「@」の代わり に、ゾーン名をそのまま書くことも可能。 |
クラス | IN | インターネットであることを表す「IN」を指定。 |
レコードの種類 | SOA | 本レコードがSOAレコードであることを示す。 |
MNAME | ns.webtest01.com. | 本ゾーンのプライマリーDNSサーバーをFQDNで指定。(末尾の「.」は必須) |
RNAME | root.webtest01.com. | 本ゾーンの管理者メールアドレスをFQDNで指定。 |
Serial | 2015123105 | ゾーン情報のシリアル番号(バージョン)を指定。ゾーン情報を更新する場合はこの値を加算する。 |
Refresh | 28800 | セカンダリDNSサーバー(スレーブ)がゾーン情報の更新の有無(「SERIAL」の増加)をチェックする周期を秒単位で示す数値を指定。 |
Retry | 14400 | Refreshでゾーン情報の更新ができなかった場合の再試行周期を秒単位で指定。Retryで指定された時間後に再度リフレッシュを試みる。 |
Expire | 3600000 | 何らかの理由でゾーン情報のリフレッシュができない状態が続いた場合、セカンダリDNSサーバーが持っているデータをどれだけの時間利用してもよいかを秒単位で指定。 |
Minimum | 14400 | 各資源レコードのデフォルトのTTL(Time To Live=有効期間)を秒数で指定。 |
「Minimum」でTTL(有効期間)を指定していますが、前述の$TTLディレクティブで指定してした設定と内容がかぶっているように見えます。ただ実際は、両者が意味する内容は異なります。
TTLは、DNS問い合わせに成功したものをキャッシュ(ポジティブキャッシュ)する時間とDNS問い合わせを受けたがドメインが存在しない等の理由で失敗した結果をキャッシュ(ネガティブキャッシュ)する時間の2つのタイプに分かれます。
ポジティブキャッシュとネガティブキャッシュそれぞれの性質を考えると、同じTTLの値を使用するのはあまり都合よくありません。
そこで、BIND 8.2以降ではSOAレコードにあるTTL(Minimum)の値をネガティブキャッシュ用とし、新たに$TTLディレクティブを設けて各資源レコードのデフォルトTTLの値を指定するようにされました。また、各資源レコード内でもTTLを定義することが可能で、$TTLディレクティブの値を上書きすることができます。これにより、例えば、変更を予定しているホストに関しては、個別にTTL値を短くするなどの対応を取ることができます。
NSレコード
NSレコードには、自身が管理しているゾーンのDNSサーバーのFQDNを記述します。DNSサーバーが複数ある場合は、その数だけNSレコードが必要になります。
IN NS ns.webtest01.com.
NSレコードは必ず記述する必要があります。本レコードでは行頭の「名前」を省略しています。この場合、直前のレコードに利用したものを指定したことになります。つまりここではSOAレコードで指定した「@」が指定されます。
MXレコード
MXレコードには、メールサーバーのアドレスと優先順位を記述します。
IN MX 10 mail.webtest01.com.
優先順位は数値が低いほど高く、優先順位の高いメールサーバーが停止したときに、低いサーバーをバックアップ用として利用します。上記サンプルでは1台分のみ定義し、優先順位を10としています。
Aレコード
Aレコードには、正引き(ホスト名からIPアドレスを取得する)のための情報を記述します。
localhost IN A 127.0.0.1 ns IN A 172.16.0.10 pc01 IN A 172.16.0.1 pc02 IN A 172.16.0.2 router IN A 172.16.0.254
AレコードでこのDNSサーバーが管理しているドメインのホスト名とIPアドレスの対応を記述しています。ドメイン名は省略しても構いません。
これで例えば、ホスト名「pc01.webtest01.com.」に対する名前解決を要求されたときIPアドレス「172.16.0.1」が返されるようになります。
以上で正引き用設定ファイルの編集は完了です。次回は逆引き用設定ファイルの編集方法について見ていきます。