目次
概要
DNS (ドメインネームシステム) はドメイン名やホスト名を IP アドレスに変換するのに
必要なサービスです。この方法により、たとえば 192.168.2.100 は jupiter
というホスト名と対応づけることができます。独自のネームサーバを設定する前に、
13.3項 「名前解決」 に示されている DNS に関する一般情報を
お読みください。また、下記の設定例では BIND を利用しています。
ドメインの名前領域は、ゾーンと呼ばれる部分に分割されています。たとえば
example.com
というドメインでは、
com
と呼ばれるドメイン内の
example
という部分 (ゾーン) を示していることになります。
DNS サーバは、それぞれのドメインに対して、その名前と IP アドレスの情報を 保持しているサーバです。マスターゾーンとしてプライマリ DNS サーバを、 スレーブゾーンとしてセカンダリ DNS サーバを持つことができるほか、 ゾーンを持たないキャッシュ専用のスレーブサーバを持つこともできます。
マスターゾーンには、お使いのネットワークに関する全ての情報が含まれていて、 ドメインに対する全ホストに関する最新情報が保存されています。
スレーブゾーンはマスターゾーンのコピーです。スレーブゾーンの DNS サーバは、 マスターサーバからゾーン転送処理を通してゾーンデータを取得します。 スレーブゾーンの DNS サーバは、そのゾーンデータが有効である限り (有効期限が 切れない限り) 、そのゾーンに対して権威のある (authoritative な) 応答を 返却します。スレーブはそのゾーンデータの最新情報が得られない場合、 そのゾーンに対する応答を停止します。
フォワーダとは、お使いの DNS サーバが応答のできない場合に問い合わせを
転送する先のことを言います。 1 つの設定で複数の設定ソースを指定するには、
netconfig
を使用します (詳しくは
man 8 netconfig をお読みください) 。
レコードとは名前や IP アドレスに関する情報のことを言います。それぞれ対応 しているレコードとその文法については、 BIND のドキュメンテーションに 書かれています。また、下記のような特殊なレコードがあります:
NS レコードとは、指定したドメイン名を担当するネームサーバのマシンが どこにあるのかを知らせるためのものです。
MX (メールエクスチェンジ) レコードとは、インターネットを介して直接 メールをやりとりする場合に使用する、通信相手のマシンを教えるための ものです。
SOA (権威の開始) レコードとは、ゾーンファイルの最初のレコードです。 SOA レコードは、 DNS を通じて複数のコンピュータ間でデータを同期する 場合に利用します。
DNS サーバをインストールするには、 YaST を起動して
+ を選択します。 そこからさらに + を選択し、 を選択してください。あとはインストール処理を完了するため、 個別のパッケージのインストールについて確認を行なってください。YaST DNS モジュールを利用することで、お使いのローカルネットワークに対する DNS サーバの設定を行なうことができます。最初にモジュールを起動したときには ウイザードが起動し、サーバを起動するにあたっていくつか決めておかなければならない 基本設定について質問が行なわれます。この初期設定作業はサーバの基本的な設定を 行なうもので、アクセス制御 (ACL) やログ記録、 TSIG 鍵のオプションなど、 高度な設定作業については、熟練者モードをご利用ください。
ウイザードは 3 段階の手順 (ダイアログ) から構成されています。それぞれダイアログ 内の適切な箇所から、熟練者モードに入ることができます。
最初にモジュールを起動したときには、 図15.1「DNS サーバのインストール: フォワーダの設定」 に示されている の画面が開きます。 では、どのデバイスから フォワーダにアクセスするかを設定できるほか、 から独自の一覧を設定することもできます。 netconfig について詳しくは、 man 8 netconfig で表示されるマニュアルページを お読みください。
フォワーダとは、お使いの DNS サーバが問い合わせを送信する先のことで、自分 自身では解決できない問い合わせの場合に利用します。フォワーダの IP アドレスを 入力してから
を押してください。
次の 15.6項 「ゾーンファイル」 にあるとおり複数のパーツから構成され、
ゾーンファイルの管理について設定を行ないます。新しいゾーンを作成するには、
に名前を入力してください。逆引きゾーンを追加
する場合、名前は .in-addr.arpa
で終わらなければなりません。
最後に (マスター、スレーブ、転送のいずれか) を選択して
ください。詳しくは 図15.2「DNS サーバのインストール: DNS ゾーン」 をお読み
ください。既存のゾーンについてその他の設定を変更するには、設定済み DNS
ゾーンから選択して、 ボタンを押してください。
ゾーンを削除するには同じくゾーンを選択してから
ボタンを押してください。
最後のダイアログでは、 図15.3「DNS サーバのインストール: ウイザードの完了」 をご覧ください。
を選択することでファイアウオール内の DNS ポートを開くように設定することが できます。また、 DNS サーバをシステム起動時に開始するかどうか ( または ) を選択することもできます。またそれ以外にも、 LDAP に対応するよう設定することもできます。詳しくはモジュールを起動したあと、 YaST では複数の設定オプションを含んだウインドウを 表示します。これらを設定することで、 DNS サーバに対して基本的な機能を設定 することができます:
では、 DNS サーバをシステム起動時に開始するか、もしくは 手動で起動するかを選択することができます。 DNS サーバを今すぐに起動 したい場合は、 を押してください。 また、 DNS サーバを停止したい場合は、 を押してください。現在の設定を保存する場合は、 を押してください。 また、 を押すことで、 ファイアウオールで DNS ポートを開くことができるほか、 でファイアウオール設定を変更する こともできます。
それ以外にも
を選択すると、 ゾーンファイルは LDAP データベースで管理されるようになります。 LDAP データベース 内のゾーンデータに対する変更は、 DNS サーバが再起動されたり設定を読み込み なおしたりしたタイミングで読み直されます。お使いの DNS サーバが要求に応答できない場合、 man 8 netconfig で表示される マニュアルページをお読みください。
で設定した転送先に対して要求を転送します。 に手動で追加してください。ダイアルアップ接続のなどのようにフォワーダが随時 変わるような場合は、 が設定を扱います。 netconfig について、詳しくはこのセクションでは、サーバに対する基本的な設定を行ないます。
メニュー内から設定したい項目を選び、必要な 値を設定してください。 ボタンを押すと新しい項目を 追加することができます。
DNS サーバのログ機能について、何を採取するのか、どのように採取するのかを
/var/log/messages
のようなシステム全体のログに対して
記録を行なうには を、個別のファイルに保存する
には を選択します。後者の場合はログファイル名と
メガバイト単位での最大サイズ、および保存する過去ログの最大数をそれぞれ指定して
ください。
さらなるオプション設定は、 それぞれの 問い合わせに対し、ログ記録を行なうように なります。ログファイルは非常に大きいものになるため、デバッグ目的以外の使用は 適切とは言えません。また、 DHCP サーバや DNS サーバの間でのゾーン更新 トラフィックを記録するには、 を 選択してください。また、マスターサーバからスレーブサーバに対して行なわれた ゾーン転送トラフィックを記録するには、 を選択してください。詳しくは 図15.4「DNS サーバ: ログ」 を ご覧ください。
から利用できます。 を選択すると、このダイアログでは、 ACL (アクセス制御リスト) を設定し、アクセスに対する制限 を設定することができます。それぞれ固有の
を設定した あとは、 IP アドレス (ネットマスク付き、または単独) の欄に下記の形式で入力します:{ 192.168.1/24; }
設定ファイルの書式仕様により、アドレスはセミコロン (;) で終わり、かつ 中括弧でくくる必要があります。
TSIG (トランザクション署名) の主な目的は、 DHCP や DNS サーバ間での通信に ついて、機密を保持することにあります。詳しい説明は 15.8項 「機密を保持する通信」 で行なっています。
TSIG 鍵を生成するには、
の欄に固有の名前を入力し、 保存先のファイル名 ( ) を指定します。最後に を押すと鍵が生成されます。以前に作成した鍵を使用するには、
の項目に何も記入 しない状態で、鍵ファイルが保存されている場所を で指定します。最後に を押すと追加することができます。スレーブゾーンを追加するには、
を選んでから ゾーン種類として を選択し、ゾーンの名前を入力 してから を押します。のサブダイアログでは、 を指定し、どのサーバからデータを取得するのかを 設定してください。また、サーバに対するアクセスを制限するには、 ACL の一覧から それぞれ選択してください。
マスターゾーンを追加するには、 192.168.1.0/24
というサブネット内にあるホスト
を示す example.com
というドメインを追加する
場合は、それらの IP アドレス範囲をカバーする逆引きゾーンを追加する必要が
あります。たとえば 1.168.192.in-addr.arpa
のように
設定します。
マスターゾーンを編集するには、
を選んでから 一覧内のマスターゾーンのいずれかを選択し、 を押します。 表示されるダイアログにはいくつかのページが含まれます: (最初に表示されるページ), , , , があります。図15.5「DNS サーバ: ゾーンエディタ (基本)」 で示されている基本ダイアログでは、 動的 DNS とクライアントに対するゾーン転送のアクセスオプション、および スレーブのネームサーバを設定することができます。ゾーンに対して動的な更新を 許可するには、 を選択して関連する TSIG 鍵を選んでください。この鍵は更新動作が始まる前までに設定しておかなければ なりません。ゾーン転送を許可するには、必要な ACL を選んでください。 この段階までに ACL を設定しておかなければなりません。
ダイアログでは、ゾーン転送を有効にするかどうかを 指定します。また、どのホストからゾーンをダウンロードできるかを ACL で指定します。
図15.6「DNS サーバ: ゾーンエディタ (NS レコード)」 をご覧ください。
ダイアログでは、指定したゾーンに対する 代替のネームサーバを設定することができます。一覧内にはご自身が管理される ネームサーバだけが含まれていることをご確認ください。レコードを追加するには、 の欄にアドレスを入力し、 を押します。詳しくは現在のゾーンに対してメールサーバを一覧に追加するには、まずそれぞれ適切な アドレスと値を入力します。入力を行なったら 図15.7「DNS サーバ: ゾーンエディタ (MX レコード)」 をご覧ください。
を押します。詳しくはこのページでは、 SOA (権威の開始) レコードを作成することができます。 各オプションについての説明は、 例15.6「/var/lib/named/example.com.zone ファイル」 を お読みください。
このダイアログでは、名前解決の管理を行ないます。 A
レコードの逆を意味するもので、たとえば下記のように
なります:
hostname.example.com. IN A 192.168.0.1 1.0.168.192.in-addr.arpa IN PTR hostname.example.com.
逆引きゾーンの編集 | |
---|---|
正引きゾーンを追加したあと、メインメニューに戻ってから編集したい逆引きゾーン を選択して タブを表示すると、 チェックボックスを 利用することができるようになります。このチェックボックスを選択して ゾーンを選択すると、自動的に逆引きゾーンを生成することができます。 この方法を利用すると、正引きゾーンを書き換えるだけで自動的に逆引きゾーンにも 反映されるようになります。 |
openSUSE® システムでは、ネームサーバ BIND (Berkeley
Internet Name Domain) が事前構築される形で提供されていて、
インストールを行なうだけですぐに動作するようになっています。そのため、
インターネット接続を利用できる環境であれば、ネームサーバを設定したあと、
ネームサーバのアドレスに 127.0.0.1
(つまり localhost
) を
指定すれば、プロバイダから DNS サーバの情報を得ることなく名前解決ができる
ことを示しています。この場合、 BIND はルートネームサーバから名前解決を
行なおうとするため、著しく動作が遅くなってしまいます。通常の運用であれば
/etc/named.conf
内の forwarders
設定に対してプロバイダのネームサーバを設定して効率を高めますが、
このような方法で名前解決を行なう場合、そのネームサーバはそのゾーンに対し、純粋な
キャッシュのみの ネームサーバとして動作することになります。
設定例はドキュメンテーション
/usr/share/doc/packages/bind/config
をお読みください。
ネームサーバ情報の自動取得 | |
---|---|
インターネット接続やネットワーク接続の種類によっては、ネームサーバの情報を
自動的に現在の状況に合わせることができます。これを行なうには、
|
ただし、責任ある団体でドメインが割り当てられない限りは、公式なドメインを設定 してはなりません。独自のドメインをお持ちの場合で、それがプロバイダ側の管理下 にあるものであっても使用しないほうがお勧めです。使用してしまうと、 BIND は 要求を転送してしまうためです。たとえばプロバイダ内の Web サーバなどから、 このドメインにアクセスできなくなってしまいます。
ネームサーバを開始するには、 root
ユーザから rcnamed start
コマンドを実行します。右側に緑色で 「done」 と表示されれば
named (ネームサーバのプロセス) は正しく起動したことを示します。起動後は
host プログラムや dig プログラムを
利用してローカルシステムからネームサーバの動作テストを行なうことができます。
既定のサーバに対して localhost
を問い合わせ、 127.0.0.1
が
返却されれば成功です。応答が返されなかったり、正しいアドレスになっていなかった
りした場合は、 /etc/resolv.conf
に正しいネームサーバの
アドレスが書かれていないか、もしくは全く設定されていないことが考えられます。
まずは最初のテストとして host 127.0.0.1
と入力してみてください。このコマンドは設定にかかわらず常に成功すべきもので
あるため、これがエラーになるようであれば、まず
rcnamed status
を実行してサーバが
実際に動作しているかどうかを確認してください。ネームサーバが起動してなかったり、
期待通りの動作をしていなかったりした場合は、
/var/log/messages
ファイルから原因を調査してください。
プロバイダが提供するネームサーバで転送機能が提供されている場合は (もしくは
お使いのネットワークで転送機能の利用できるネームサーバが動作している場合は) 、
options
セクション内の
forwarders
に、それらの IP アドレスを入力して
ください。 例15.1「named.conf 内の転送設定」 に例を示します。
お使いの環境でそれぞれアドレス設定を変えてお使いください。
例15.1 named.conf 内の転送設定¶
options { directory "/var/lib/named"; forwarders { 10.11.12.13; 10.11.12.14; }; listen-on { 127.0.0.1; 192.168.1.116; }; allow-query { 127/8; 192.168/16 }; notify no; };
options
項目は
localhost
や
0.0.127.in-addr.arpa
のゾーン項目の後に続く
項目です。 「.」 に対する type hint
の項目も存在すべき項目です。それぞれのファイルをわざわざ編集する必要はなく、
そのままの形で動作するはずです。また、各項目の行末に 「;」
が付けられていることと、適切な箇所に中括弧が入っていることもあわせて
ご確認ください。設定ファイル /etc/named.conf
やゾーンファイルを編集したら、
rcnamed reload
コマンドで
BIND に対して設定を読み直すように指示してください。サーバを再起動すること
でも同じことを行なうことができます。再起動を行なうには
rcnamed restart
コマンドを
入力してください。また、サーバを停止するには、
rcnamed stop
と入力します。
BIND ネームサーバに対する全ての設定は、 /etc/named.conf
ファイル内に保存されます。ただし、応答を返すべきドメインに対するゾーンデータ (ホスト名や
IP アドレスなど) については、 /var/lib/named
ディレクトリ内にある個別のファイルに保存します。ゾーンファイルについての詳細は
後述します。
/etc/named.conf
ファイルは大きく分けて 2 つの領域に
分かれています。 1 つは options
セクションで
一般的な設定を行ない、もう 1 つは zone
セクションで
ドメインごとの設定を行ないます。 logging
セクションや acl
(アクセス制御リスト) のセクションは
必要に応じて指定します。コメント行は #
から書き始めるか、
もしくは //
から書き始めます。
/etc/named.conf
の最小限の設定は、
例15.2「/etc/named.conf の基本設定」 に示しているとおりです。
例15.2 /etc/named.conf の基本設定¶
options { directory "/var/lib/named"; forwarders { 10.0.0.1; }; notify no; }; zone "localhost" in { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0.zone"; }; zone "." in { type hint; file "root.hint"; };
ファイル名
";
BIND がゾーンデータを見つける際に利用するディレクトリを指定します。
通常、この値は /var/lib/named
に設定します。
IP アドレス
; };
自分自身で直接解決できない場合に、 DNS の要求を転送する先になる
ネームサーバ (一般にプロバイダ提供のネームサーバ) を指定します。
IP アドレス
の欄には、
192.168.1.116
のように設定してください。
DNS 要求に対して、ルートネームサーバ経由での解決を行なう前に転送を
試すように指示します。 forward first
の代わりに forward only
と設定すると、
全ての要求をルートネームサーバに送信せず、転送するようになります。
ファイアウオールの設定を行なう場合に意味のある項目です。
ip-address
; };
BIND に対して、どのインターフェイスとポートでアクセスを待ち受けるのか
を指定します。 port 53
については既定のポートである
ため、明示的に指定する必要はありません。また、
127.0.0.1
と指定すると、ローカルホストからの要求だけを
許可するようになります。この項目を設定しない場合は、既定で全ての
インターフェイスを待ち受けます。
BIND に対して、 IPv6 クライアントからの要求を処理するように指定します。
any
以外には none
しか指定
できません。 IPv6 に関しては、全アドレスからのアクセスを受け付ける
ことになります。
このオプションは、ファイアウオールによって外向きの DNS 要求がブロック されてしまう場合に必要な設定です。上記の設定では、 BIND の要求をポート 53 から行ない、 1024 以上のポートを使用しないように指定しています。
IPv6 での問い合わせ時に使用するポートを設定します。
ネットワーク
; };
DNS の要求を受け付けるネットワークを指定します。
ネットワーク
は実際のアドレス (たとえば
192.168.2.0/24
) に置き換えてください。なお、
/24
とはネットマスクの省略表現です (この場合、
255.255.255.0
を意味します) 。
どのホストに対してゾーン転送を許可するかを制御します。この例では
! *
を指定しているため、ゾーン転送を完全に拒否
するようになります。この項目を設定しないと、ゾーン転送に対する制限が
行なわれず、どのホストからでも行なうことができるようになります。
この項目を設定しないと、 BIND は複数の行から構成される統計情報を 1 時間
おきに /var/log/messages
に出力します。
0 を指定するとこれらの統計情報を省略することができます。それ以外の値であれば、
分単位で出力間隔を指定することになります。
このオプションでは、 BIND がその内蔵キャッシュを消去する時間間隔を指定します。
この時間間隔で /var/log/messages
に対して情報が出力
されます。時間は分単位で指定します。既定値は 60 分です。
BIND では定期的にネットワークインターフェイスの追加や削除を検索します。
この値を 0
にすると、ネットワークインターフェイスの
検出作業を行なわなくなり、起動時に検出したインターフェイスに対してのみ
要求を受け付けるようになります。 0
以外の設定を
行なうと、それは分単位での設定になります。既定値は 60 分です。
no
を設定すると、ゾーンデータの変更やネームサーバの
再起動が発生するごとに発生していた、ネームサーバ宛の通知を行なわなくなります。
利用可能なオプションの一覧については、 man 5 named.conf で表示されるマニュアルページをお読みください。
BIND では、何をどのように、どこでログを採取するのかを広範囲に設定することが できます。通常は既定の設定のままで問題ありません。 例15.3「ログ出力を無効化する場合の設定」 では、このようなログを完全に省略するために 最も簡単な方法を提示しています。
例15.4 example.com のゾーン項目¶
zone "example.com" in { type master; file "example.com.zone"; notify no; };
まず、 zone
の後に管理したいドメインの名前を指定
し (上記の例では example.com
) 、
さらに in
を指定します。あとは関連するオプションを
記述するための中括弧を記述し、 例15.4「example.com のゾーン項目」 のような
構成になります。 スレーブゾーン を定義する場合は
type
に対して slave
を指定し、
このゾーンを管理するネームサーバ (別のサーバ) を master
で指定します。たとえば 例15.5「example.net のゾーン項目」 のようになります。
例15.5 example.net のゾーン項目¶
zone "example.net" in { type slave; file "slave/example.net.zone"; masters { 10.0.0.1; }; };
ゾーンのオプションには下記のようなものがあります:
master
を指定すると、 BIND に対してこのゾーンを
このネームサーバで管理するようになります。また、ゾーンファイルは正しい
書式で作成されているものと解釈します。
このゾーンは、他のネームサーバから情報を転送することで成立させるゾーン
です。 masters
の設定とともに使用しなければ
なりません。
hint
タイプが設定された .
ゾーン
は、ルートネームサーバを設定するために使用します。このゾーンの定義は
そのまま残しておいてください。
example.com.zone
または file
「slave/example.net.zone」;
この設定では、そのゾーンに対するゾーンデータがどのファイルに保存されている
ものなのかを指定します。スレーブゾーンの場合は、このファイルは他のネーム
サーバから転送してくることになるため、存在している必要はありません。
マスターゾーンの場合とスレーブゾーンの場合の違いは、
slave
というディレクトリを使用しているかどうかの
違いです。
サーバの IP アドレス
; };この項目は、スレーブゾーンでのみ必要な設定です。ゾーンファイルを どのネームサーバから転送するのかを指定します。
このオプションでは、外部からの書き込みアクセス (DNS の項目をクライアント側に
作成する機能を与えるもの) を制御します。通常はセキュリティ上の理由から使用
することはありません。この項目を設定しないと、ゾーンの更新は全く行なうことが
できなくなります。上記の設定は何も指定しない場合と同じ意味で、
! *
で全てに対する拒否を行なっています。
ゾーンファイルについては、 2 種類のものが必要です。 1 つはホスト名に対して IP アドレスを割り当てるもの、もう 1 つはその逆で、 IP アドレスに対する ホスト名を割り当てるものです。
ゾーンファイル内でのドット (ピリオド、終止符) の使用 | |
---|---|
ゾーンファイル内では |
最初に考慮しなければならないことはゾーンのファイル名で、たとえば
example.com
というドメインに対しては、
example.com.zone
のような名前を設定します。
たとえば 例15.6「/var/lib/named/example.com.zone ファイル」 のようになります。
例15.6 /var/lib/named/example.com.zone ファイル¶
1. $TTL 2D 2. example.com. IN SOA dns root.example.com. ( 3. 2003072441 ; serial 4. 1D ; refresh 5. 2H ; retry 6. 1W ; expiry 7. 2D ) ; minimum 8. 9. IN NS dns 10. IN MX 10 mail 11. 12. gate IN A 192.168.5.1 13. IN A 10.0.0.1 14. dns IN A 192.168.1.116 15. mail IN A 192.168.3.108 16. jupiter IN A 192.168.2.100 17. venus IN A 192.168.2.101 18. saturn IN A 192.168.2.102 19. mercury IN A 192.168.2.103 20. ntp IN CNAME dns 21. dns6 IN A6 0 2002:c0a8:174::
$TTL
では、このファイル内の全ての項目に対して適用する、
既定の生存時間 (Time To Live) を設定します。この例では、項目は 2 日間
有効であり続けます (2 D
) 。
この行から SOA (権威の開始) の制御レコードが始まります:
まずは管理対象のドメイン名を記述します (example.com
) 。
このドメイン名は必ず "."
で終わるものとしてください。
そうでないとドメイン名の後ろに再度ドメイン名が付加されてしまいます。
なお、ここには @
を入れることもできます。これは
関連する /etc/named.conf
の項目からドメイン名を
自動的に取り出す場合に使用します。
IN SOA
に続いて、このゾーンに対するマスターの
ネームサーバ名を指定します。ここでは dns
と指定していますが、
これは "."
で終わっていないため、自動的に
dns.example.com
の形に展開されます。
ネームサーバ名に続いて、このドメインの担当者のメールアドレスを指定します。
なお、ゾーンファイルで @
記号は特別な意味を持つもの
であるため、この記号の代わりに "."
で指定してください。
たとえば root@example.com
というメール
アドレスであれば、 root.example.com.
と指定します。なお、この指定も "."
で終わらせてください。
そうでないとドメイン名がさらに付加されてしまいます。
(
から )
までの間は SOA
レコードの詳細情報を指定するための括りです。
ここでは シリアル番号
を指定します。シリアル番号は
任意に付与することのできる番号で、このファイルの更新が行なわれるごとに数字を
増やさなければならない項目です。このシリアル番号は、他のネームサーバ
(スレーブサーバなど) に対して変更の通知を行なう際に必要となります。ここでは
10 桁の数値で年月日と追加の数字を設定しています (YYYYMMDDNN の形式) が、
これは慣習的にこのようにしているものです。
ここでは 更新間隔
を指定します。更新間隔は他のネーム
サーバ (スレーブサーバなど) に対して、 シリアル番号
を検証する間隔を指定します。この場合、 1 日間隔の意味になります。
ここでは 再試行間隔
を指定します。再試行間隔は他の
ネームサーバ (スレーブサーバなど) からのアクセスが失敗したときに、プライマリ
ネームサーバ (マスターサーバ) に再接続する間隔を指定します。ここでは 2 時間に
設定されています。
ここでは 有効期限
を指定します。有効期限は他の
ネームサーバ (スレーブサーバ) からプライマリネームサーバ (マスターサーバ) への
アクセスが回復しない場合に、他のネームサーバがキャッシュデータを捨てるまでの
時間間隔を指定します。ここでは 1 週間に設定されています。
ここが SOA レコードの最後の部分で、 ネガティブキャッシュの
生存時間
を指定します。これは、このドメインに対する問い合わせに
対し、該当レコードが存在しない旨の応答を受けつけたときに、キャッシュする時間
間隔を指定します。
IN NS
では、このドメインに対して管理責任を持つ
ネームサーバを指定します。 dns
は
"."
で終わっていないため、 dns.example.com
に展開されます。この行は、プライマリ (マスター) ネームサーバとセカンダリ
(スレーブ) ネームサーバのように、複数個を指定することもできます。
/etc/named.conf
内で notify
に対し no
と設定されていない場合は、ここで指定した全ての
ネームサーバに対してゾーンデータの更新を通知します。
MX レコードには、そのドメイン (この例では
example.com
) に対するメールを受け付け、必要に応じて処理や転送
を行なうメールサーバを指定します。この例では、
mail.example.com
がそのメールサーバ
であることを示しています。ホスト名の前につく数字は優先順位で、複数の MX
レコードが存在する場合、まずは最も小さい値を持つメールサーバに対して配送が
試みられ、それが失敗した場合は次に小さい値を持つメールサーバに対して配送を
行なおうとします。
これらの行で、複数のホスト名と IP アドレスの対応を記述しています。ここに記述
された名前には "."
が付けられておらず、ドメイン名が記述
されていないため、それら全てに対して
example.com
が付加されます。
なお、ホスト gate
には 2 つのアドレスが割り当てられて
いますが、これはこのマシンに 2 枚のネットワークカードが接続されているためです。
ホストのアドレスが従来のもの (IPv4) である場合は、このレコードは
A
レコードになります。ホストのアドレスが IPv6 アドレスで
ある場合には、 AAAA
レコードを指定します。
IPv6 での文法 | |
---|---|
IPv6 レコードは IPv4 とは異なる文法で記述されます。 IPv6 では断片的な アドレス表記を行なうことができるため、アドレスの途中に 「0」 が続く場合は、その箇所に 2 つのコロン (:) を記述してください。 pluto AAAA 2345:00C1:CA11::1234:5678:9ABC:DEF0 pluto AAAA 2345:00D2:DA11::1234:5678:9ABC:DEF0 |
dns
ホストの別名として、 ntp
を提供するための記述です (CNAME
とは、
canonical name (公式に認められた名前) の
意味です) 。
疑似ドメイン in-addr.arpa
は、 IP アドレスからホスト名に
逆引きする際に利用します。アドレスのネットワーク部を逆順で表記したものを付加して
ドメイン名とします。たとえば 192.168
のアドレスに対する逆引き疑似ドメインは、 168.192.in-addr.arpa
になります。 例15.7「逆引き」 をご覧ください。
例15.7 逆引き¶
1. $TTL 2D 2. 168.192.in-addr.arpa. IN SOA dns.example.com. root.example.com. ( 3. 2003072441 ; serial 4. 1D ; refresh 5. 2H ; retry 6. 1W ; expiry 7. 2D ) ; minimum 8. 9. IN NS dns.example.com. 10. 11. 1.5 IN PTR gate.example.com. 12. 100.3 IN PTR www.example.com. 13. 253.2 IN PTR cups.example.com.
$TTL では、このゾーンの全てに適用される標準 TTL (生存時間) を指定します。
このゾーンファイルでは、 192.168
に対する逆引きゾーンを設定しています。そのための擬似的なゾーン (ドメイン) は
168.192.in-addr.arpa
で、このドメインは実際に
存在するものではありません。そのため、全てのホスト名は完全修飾の (つまりドメイン名
を付けた) 形であり、かつ "."
で終わるもの) で指定しなければ
なりません。それ以外の項目については example.com
の例と同じです。
example.com
での例と同じですので、そちらを
お読みください。
この行では、このゾーンに対して管理責任を持つネームサーバを指定しています。
ここで指定する名前は通常のドメインのものとは異なり、ドメイン指定を含んだ
完全修飾の形で、 "."
で終わらなければなりません。
これらは、それぞれの IP アドレスに対するホスト名を指定するポインタレコード
です。これらはいずれも "."
で終わっておらず、行頭には
IP アドレスの末尾部分しか書かれていないため、ゾーンが自動的に付加されます。
実際の IP アドレスに変換する場合は、 .in-addr.arpa
を取り除いて "."
ごとに逆から読んでください。
動的な更新 とは、マスターサーバ上のゾーンファイル内の
項目を追加したり変更したり、削除したりする操作のことを指します。この仕組みは
RFC 2136 で規定されています。動的な更新は、任意指定の
allow-update
や update-policy
の設定を行なうことで、ゾーンごとに個別の設定を行なうことができます。
動的に更新されるゾーンの場合、そのゾーンファイルは手作業で編集すべきではありません。
サーバに対して更新すべき項目を送信するには、 nsupdate
コマンドを使用します。このコマンドに対する正確な文法については、 nsupdate の
マニュアルページ (man 8 nsupdate
)
をお読みください。なおセキュリティ上の理由により、 15.8項 「機密を保持する通信」
で書かれているとおり、このような更新には TSIG 鍵を使用すべきものです。
機密を保持して通信するには、共有の機密鍵 (TSIG 鍵とも呼ばれます) をベースにした、 トランザクション署名 (TSIG) を利用して行ないます。この章では、このような鍵を どのようにして生成するのかと、その使い方について述べています。
機密を保持する通信は、異なるサーバ間の通信やゾーンデータの動的な更新を行なう 場合に必要となります。また、鍵をベースにしたアクセス制御を利用すると、単純に IP アドレスに依存した制御よりもより安全になります。
TSIG 鍵を生成するには、下記のコマンドを実行します (詳しくは
man dnssec-keygen
をお読みください):
dnssec-keygen -a hmac-md5 -b 128 -n HOST host1-host2
このコマンドを実行すると、下記のような 2 つのファイルが生成されます:
Khost1-host2.+157+34265.private Khost1-host2.+157+34265.key
鍵それ自身 (ejIkuCyyGJwwuN3xAteKgg==
のような文字列) が
両方のファイル内に存在するはずです。通信時にこの鍵を使用するには、あらかじめ
2 つめのファイル (Khost1-host2.+157+34265.key
) を
リモートホスト側に安全な方法で (たとえば scp) 転送しておかなければなりません。
リモートのサーバでは host1
と host2
の間で機密通信を行なうため、 /etc/named.conf
ファイル内で
鍵を設定しなければなりません:
key host1-host2 { algorithm hmac-md5; secret "ejIkuCyyGJwwuN3xAteKgg=="; };
/etc/named.conf のファイルパーミッション | |
---|---|
include "filename"
ここで |
host1
のサーバに対して host2
(アドレス 10.1.2.3
) と通信する際、鍵を使用するように
設定するには、サーバ側の /etc/named.conf
に
下記のルールを追加しなければなりません:
server 10.1.2.3 { keys { host1-host2. ;}; };
/etc/named.conf
側の設定ファイルにも、似たような
設定を行なわなければなりません。
通信の機密性を保持するには、 IP アドレスやアドレス範囲に対して設定した任意の ACL (アクセス制御リスト。ファイルシステムのアクセス制御リストと混同しないで ください) に TSIG 鍵を追加することもできます。たとえば下記のように設定します:
allow-update { key host1-host2. ;};
これらの詳細については、 BIND Administrator Reference Manual
内の update-policy
で説明しています。
DNSSEC または DNS セキュリティは、 RFC 2535 で規定されています。 DNSSEC 向けのツールについては、 BIND マニュアル内で説明されています。
機密を保持すべきと考えるゾーンには、それに結びつけられた 1 つ以上のゾーン鍵が
存在しなければなりません。このゾーン鍵は、ホスト鍵と同様に
dnssec-keygen で作成することができます。これらの鍵を生成
する際は、 DSA 暗号化アルゴリズムが使用されます。関連するゾーンファイルから
$INCLUDE
ルールを利用して、公開鍵を登録してください。
dnssec-signzone コマンドを利用すると、生成した鍵
(keyset-
ファイル) のセットを作成することができます。
これを親ゾーンに対して機密を保持した通信で送信し、署名を実施してください。
あとは生成されたファイルを /etc/named.conf
内の
各ゾーンに登録してください。
さらなる情報や説明については、 bind-doc
パッケージに含まれる BIND Administrator Reference Manual
をお読みください。このパッケージは /usr/share/doc/packages/bind/
内にファイルをインストールします。また、マニュアルや BIND に含まれている
マニュアルページから参照されている各 RFC についても、それぞれお読みください。
また、 /usr/share/doc/packages/bind/README.SuSE
には、 openSUSE での BIND について、最新情報を提供しています。