DNS (ドメインネームシステム; Domain Name System) は、ドメイン名やホスト名を IP アドレスに解決するために必要なシステムです。この仕組みにより、たとえば IP アドレス 192.168.2.100 とホスト名 jupiter
を結びつけることができるようになります。お使いの環境で独自のネームサーバを構築する前に、まずは 13.3項 「名前解決」 に書かれている DNS の一般的な情報をお読みください。また、下記の設定例では、既定のネームサーバである bind を使用して説明しています。
ドメイン名は複数のゾーンに分割することができます。たとえば example.com
というドメイン名の場合、 com
ドメイン内の example
というセクション (ゾーン) であることになります。
DNS サーバとは、ドメインに対して名前と IP アドレスの情報を保持するサーバを意味します。 DNS サーバには、必要に応じて複数のゾーン (プライマリゾーン/セカンダリゾーン) が設定されるほか、ゾーンを持たないキャッシュ専用のセカンダリサーバもあります。
プライマリゾーンには、特定のドメイン内での全ホストについて、その最新情報が登録されています。
セカンダリゾーンはプライマリゾーンのコピーを意味します。 DNS サーバはプライマリサーバから、セカンダリゾーンとして設定されたゾーンの転送を行います。プライマリゾーンは、その情報が有効である限り (有効期限が切れない範囲) において、信頼できる情報源であるものとされます。プライマリサーバと通信ができなくなり、その情報の有効期限が切れると、 DNS サーバはそのゾーンに対する応答を行わなくなります。
フォワーダとは、お使いの DNS サーバがその問い合わせに応答できない場合に、その問い合わせの転送先となる DNS サーバを意味します。 1 つの設定内で複数の設定ソースを利用したい場合は、 netconfig
を使用します (詳しくは man 8 netconfig
をお読みください) 。
レコードとは名前や IP アドレスに関する情報を意味します。対応するレコードとその書式については、 BIND のドキュメンテーションに説明があります。下記にいくつかの特殊なレコードを示します:
NS レコードとは、指定したドメイン (ゾーン) を受け持つネームサーバを示すためのレコードです。
MX (メール交換; Mail eXchange) レコードとは、インターネットを介して電子メールを交換する際、そのドメイン宛のメールを受信するメールサーバを示すためのレコードです。
SOA (権威開始; Start Of Authority) レコードとは、ゾーンファイル内で最初に作成すべきレコードです。 SOA レコードは、複数のコンピュータ間でデータを同期する際に使用します。
DNS サーバをインストールするには、 YaST を起動して
› を選択します。その後 › を選択して を選択します。あとは を押して必要なパッケージをインストールします。上記以外にも、下記のコマンドラインを入力してもかまいません:
>
sudo
zypper in -t pattern dhcp_dns_server
ローカルネットワーク内で DNS サーバを設定したい場合は、 YaST の DNS モジュールをお使いください。初めてこのモジュールを起動した場合はウイザードが表示され、サーバの管理に関わるいくつかの決定を行うことになります。この初期設定を完了すると、基本的なサーバ設定が作成されます。 ACL やログ、 TSIG 鍵やその他のオプションなど、より高度な設定を行いたい場合は、熟練者モードをお使いください。
このウイザードは 3 つの手順 (ダイアログ) から構成されています。熟練者モードへの移行は、それが可能になった段階で表示されるようになっています。
初めて本モジュールを起動した場合は、 図19.1「DNS サーバのインストール: フォワーダの設定」 に示されている ダイアログが表示されます。ここでは、 で下記のいずれかを選択することができます:
auto
に設定されますが、ここにはインターフェイス名のほか、 STATIC
や STATIC_FALLBACK
のような特殊ポリシー名を指定することができます。
では、どのサービスを使用するのかを選択します。 , , の中からいずれかを選択してください。
これら全ての設定に関する詳細は、 man 8 netconfig
をお読みください。
フォワーダとは、お使いの DNS サーバがその問い合わせに応答できない場合に、その問い合わせの転送先となる DNS サーバを意味します。フォワーダの IP アドレスを入力して、
を押してください。19.6項 「ゾーンファイル」 をお読みください) の管理を行います。新しいゾーンを作成するには、 欄にゾーンの名前を入力します。なお、逆引きゾーンを作成する場合は、ゾーンの名前が .in-addr.arpa
で終わらなければなりません。また、 (プライマリ/セカンダリ/転送) も選択する必要があります。詳しくは 図19.2「DNS サーバのインストール: DNS ゾーン」 をお読みください。既存のゾーンを編集したい場合は、ゾーンを選択して を押します。ゾーンを削除したい場合は、ゾーンを選択して を押します。
最後のダイアログでは残りの設定を行います。 図19.3「DNS サーバのインストール: ウイザードの完了」 をご覧ください。
を選択すると、ファイアウオールで DNS のポートを開くことができます。また、システムの起動時に DNS サーバを開始するかどうかを設定することもできる ( または ) ほか、 LDAP サポートを有効化することもできます。詳しくはモジュールを起動すると、 YaST は複数の設定オプションを表すウインドウを表示します。これらの設定を行うことで、 DNS サーバの基本的な機能を適用することができるようになります:
では、 DNS サーバをシステムの起動時に開始するかどうかを選択することができます。 DNS サーバを今すぐに開始したい場合は、 を押してください。 DNS サーバを停止するには、 を押してください。現在の設定を保存するには、 を選択してください。 ファイアウオールで DNS のポートを開くには、 を選択して、 で必要に応じて設定を変更してください。
を選択すると、ゾーンファイルが LDAP データベース内に保存されるようになります。 LDAP データベースに書き込まれたゾーンデータを修正した場合は、 DNS サーバの再起動や再読み込みでそれが反映されるようになります。
ローカルの DNS サーバが特定の問い合わせに応答できない場合、その問い合わせを man 8 netconfig
をお読みください。
このセクションでは基本的なサーバ設定を行います。
で設定したい項目を一覧から選んで、右側に設定したい値を入力してください。入力が終わったら を押すと、設定を追加することができます。DNS サーバでのログ記録を設定するには、
を選択します。 では、 DNS サーバからのログの保存先を指定します。 を選択するとシステム全体のログファイルに、 を選択すると指定したファイルに保存することができます。後者の場合はファイル名のほか、メガバイト単位で最大ファイルサイズと、残しておくべき過去のログファイル数 (バージョン) を指定することができます。さらに詳しいオプションが 図19.4「DNS サーバ: ログ」 をお読みください。
内に用意されています。 を選択すると、届いた全ての問い合わせをログに記録するようになりますので、ログファイルのサイズが大きくなることに注意してください。そのため、デバッグの目的がある場合を除いて、有効化することはお勧めできません。また、 DHCP サーバと DNS サーバの間でのゾーン更新時にログを記録したい場合は、 を選択してください。また、プライマリサーバからセカンダリサーバへのゾーン転送をログに記録したい場合は、 を選択してください。詳しくはこのダイアログでは ACL (アクセス制御リスト; Access Control List) を定義して、アクセス制限を設定することができます。
欄に他と重複しない名前を設定し、 欄に IP アドレス (ネットマスクは設定してもいなくてもかまいません) を指定することで、 ACL を定義することができます。値は下記のように記述します:{ 192.168.1/24; }
設定ファイルの書式により、アドレスの末尾にはセミコロンを付けるほか、値を波括弧で括ってください。
TSIG (トランザクション署名; Transaction SIGnatures) の主な目的は、 DHCP サーバと DNS サーバとの間で機密を保持する通信を行うことにあります。詳しくは 19.8項 「トランザクションの暗号化」 で説明しています。
TSIG 鍵を生成するには、
の欄に他と重複しない名前を入力し、 の欄に保存先のファイル名を指定したあと、 を押します。以前に作成した鍵を使用したい場合は、
の欄には何も入力せず、 の欄で既存のファイルのファイル名を入力してください。入力が終わったら を押します。セカンダリゾーンを追加するには、
を選択して、 で を選択します。その後ゾーンの名前を入力して を押します。サブダイアログ内の では、セカンダリサーバが情報を取得する際のプライマリサーバを指定します。また、サーバへのアクセスを制限したい場合は、表示された ACL の一覧から必要なものを選択します。
プライマリゾーンを追加するには、 example.com
というゾーンを追加して、そこに 192.168.1.0/24
というサブネット内のホストを設定する場合、その IP アドレスを範囲内とする逆引きゾーンを追加する必要があります。この逆引きゾーンは、一般に 1.168.192.in-addr.arpa
という名前であるべきものです。
プライマリゾーンを編集するには、
を選択して表の中からプライマリゾーンを選択し、 を押します。ダイアログには下記のようなページが用意されています: (最初に表示されるページ) , , , ,図19.5「DNS サーバ: ゾーンエディタ (基本)」 に示されている基本設定ダイアログでは、動的な DNS 更新の可否とクライアントやセカンダリサーバに対するゾーン転送の設定を行うことができます。ゾーンを動的に更新できるようにするには、 を選択したあと、対応する TSIG 鍵を選択する必要があります。鍵は更新処理の開始よりも前に定義しておかなければなりません。ゾーン転送を有効化するには、対応する ACL を選択します。 ACL はこの時点までに設定しておかなければなりません。
ダイアログでは、ゾーンの転送可否を設定します。表示された ACL を選択して、ゾーンのダウンロードを許可したい相手を選択してください。
図19.6「DNS サーバ: ゾーンエディタ (NS レコード)」 をご覧ください。
ダイアログでは、指定したゾーンでのネームサーバを設定することができます。なお、この一覧内には自分自身も含めておく必要があることに注意してください。レコードを追加するには、 の欄に名前を入力して を押します。詳しくは既存の一覧内に現在のゾーンに対するメールサーバを追加するには、まず対応するテキストボックス内にアドレスと優先度を入力します。それぞれ入力が終わったら 図19.7「DNS サーバ: ゾーンエディタ (MX レコード)」 をご覧ください。
を押します。詳しくはこのページでは、 SOA (権威開始; Start Of Authority) レコードを作成します。個別のオプションに関する説明については、 例19.6「/var/lib/named/example.com.zone ファイル」 をお読みください。 ただし、 LDAP で管理されている動的ゾーンの場合は、 SOA レコードの変更には対応していません。
このダイアログでは、名前解決を管理します。 A
レコードの逆を意味するもので、たとえば下記のようになります:
hostname.example.com. IN A 192.168.0.1 1.0.168.192.in-addr.arpa IN PTR hostname.example.com.
逆引きゾーンを追加するには、下記の手順で行います:
› › を選択します。
まだ (逆引きではない) プライマリゾーンを作成していない場合は、プライマリゾーンを追加して
を押します。タブに移動し、 と をそれぞれ入力して を押します。作業が終わったら を押します。 YaST が NS サーバの設定についてエラーメッセージを表示した場合は、 のタブでサーバを追加してください。
ウインドウに戻ったら、逆引きのプライマリゾーンを追加します。
逆引きゾーンを選択して
し、 タブに移動します。逆引きゾーンの場合、 というレコードの種類が表示されるはずです。それぞれ対応する と を入力して を押し、作業が終わったら を押して閉じます。なお、必要であれば NS レコードも追加してください。
正引きのゾーンを追加したら、メインメニューに戻って逆引きゾーンを選択して、編集を行ってください。この中の
タブ内には、 というチェックボックスがありますので、このチェックを入れてから対応する正引きゾーンを選択すると、自動的にレコードを生成することができるようになります。これを設定しておくことで、正引きゾーンで何らかの変更を行うと、それにあわせて逆引きゾーンが更新されるようになります。openSUSE® Leap システムでは、ネームサーバ BIND ( Berkeley Internet Name Domain ) を事前に設定した状態でインストールすることができます。これにより、インストールを行うだけで起動できるようになっています。インターネットに接続されている環境であれば、 /var/run/netconfig/resolv.conf
内に設定するネームサーバのアドレスに、 localhost
を表す 127.0.0.1
を指定することで、プロバイダから提供される DNS 情報を利用することなく、名前が解決できるようになります。これは、 BIND にルートネームサーバの情報が含まれていることによるもので、それなりに遅い処理にはなりますが、いちおう解決することができます。通常はプロバイダのネームサーバを /etc/named.conf
内の forwarders
に指定することで、効率的で素早く、かつ安全な解決を行います。このような構成で構築したネームサーバは、 キャッシュのみの ネームサーバと呼ばれます。ここから独自のゾーンを設定すれば、通常の DNS サーバと同じ構成になります。簡単な設定例については、 /usr/share/doc/packages/bind/config
をお読みください。
インターネットやネットワークの接続方法によっては、現在の状況に合わせてネームサーバの情報を修正する必要がある場合があります。これを行いたい場合は、 /etc/sysconfig/network/config
内の NETCONFIG_DNS_POLICY
の値を、 auto
に設定してください。
ただし、公式にドメインを取得した場合を除いて、一般的なドメインに対するネームサーバを設定すべきではありません。また、ドメインを取得している場合でも、プロバイダ側に管理を委託しているような場合も、独自にそのドメインに対するサーバを構築することはお勧めできません。なぜなら、 BIND でそれらのドメインを設定してしまうと、ドメイン宛の問い合わせを転送しなくなってしまうためです。逆に、たとえばプロバイダ内に設置している Web サーバが存在するような場合、独自に構築したドメインにはアクセスできません。
ネームサーバを開始するには、 root
で systemctl start named
のコマンドを実行します。実行した後は、 systemctl status named
コマンドで named (ネームサーバのプロセス名) の状態を確認することができます。ローカルでネームサーバの動作を確認するには、 host
や dig
のコマンドを使用します。たとえば localhost
のホストを問い合わせると、 127.0.0.1
という応答が返るはずです。応答がない場合や、正しい応答になっていない場合は、 /var/run/netconfig/resolv.conf
内のネームサーバが正しく設定されていないか、もしくはファイルそのものが存在していないものと思われます。たとえば host
127.0.0.1
のように実行してもエラーが返される場合は、何らかの問題があるものと考えられます。エラーメッセージを表示するには、 systemctl status named
を実行して、まずはサーバそのものが動作しているかどうかを確認してください。ネームサーバが動作していない場合や、正しくない応答を返しているような場合は、 journalctl -e
の出力結果をお読みください。
プロバイダのネームサーバ (もしくは既にネットワーク内で動作しているネームサーバ) をフォワーダとして使用するには、 IP アドレスまたはホスト名を forwarders
内の options
セクションに設定してください。なお、 例19.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
やゾーンファイルを編集した後は、 BIND に対して再読み込みを指示するため、 systemctl reload named
を実行してください。再読み込みは、ネームサーバを一旦停止して起動し直すことでも対応することができます (systemctl restart named
) 。また、サーバを停止したい場合は、 systemctl stop named
を実行してください。
BIND ネームサーバ自身に対する全ての設定は、 /etc/named.conf
内に保存されます。自身が処理すべきドメインのゾーンデータ (ホスト名や IP アドレスなどの情報) については、 /var/lib/named
ディレクトリ内の個別のファイル内に保存されます。これらの詳細は後述します。
大きく分けると、 /etc/named.conf
には 2 種類の領域があります。 1 つ目の領域は一般的な設定を記述する options
セクション、もう 1 つは各ドメインに対する zone
項目です。 logging
セクションと acl
(アクセス制御リスト) セクションは任意で設定します。コメント行は #
記号もしくは //
を行頭に入力します。最小限の設定の /etc/named.conf
は、 例19.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
を指定します。
ネームサーバが DNS の問い合わせを直接解決できない場合、その問い合わせを転送する先のネームサーバ (多くはプロバイダのネームサーバ) を指定します。 IP_アドレス はたとえば、 192.168.1.116
のように指定します。
ルートネームサーバを利用して解決しようとする前に、フォワーダを利用して DNS の問い合わせを解決するようにします。 forward first
ではなく forward only
を指定すると、ルートネームサーバを使用せずにフォワーダのみを使用するようになります。これは特にファイアウオールを利用するような場合に便利です。
BIND に対してネットワークインターフェイスを指定するほか、クライアントからの問い合わせを受け付けるポートを指定します。 53
は既定のポートであるため、 port 53
を明示的に指定する必要はありません。また、 127.0.0.1
を指定して、ローカルホストからのアクセスについては必ず受け付けるようにしてください。この設定を全く行わない場合は、全てのインターフェイスを利用して問い合わせを受け付けるようになります。
BIND に対して IPv6 のクライアントからの問い合わせを受け付けるように指定しています。 any
(任意のアドレス) 以外には none
(全てのアドレスを拒否) を指定することもできます。 IPv6 については、ワイルドカードアドレスを指定することもできます。
この項目は、ファイアウオールが外部宛の DNS リクエストをブロックしているような場合に必要となります。この設定により、 BIND はポート 53 からリクエストを送信するようになり、 1024 以上のポートを使用しなくなります。
BIND に対して、 IPv6 の問い合わせで使用するポートを指定しています。
どのクライアントから DNS のリクエストを受け付けるのかを指定します。 NET には 192.168.2.0/24
のように、アドレス情報を指定してください。 /24
はネットマスクの省略表記で、この例の場合は 255.255.255.0
を意味します。
どのホストからのゾーン転送要求を受け入れるのかを指定します。 ! *
の例では、全てのホストからの要求を拒否します。この項目を指定しない場合、ゾーン転送は全てのホストから実施できるようになります。
上記の項目を設定しない場合、 BIND はシステムのジャーナルに対して、 1 時間おきに統計情報を出力するようになります。 0 を指定すると、この統計情報を省略することができます。 0 以外の値を指定する場合は、分単位で指定します。
このオプションは、 BIND がキャッシュを清掃する時間間隔を指定します。この清掃が行われると、システムのジャーナルに対しても出力が行われます。時間は分単位で指定します。既定値は 60 分です。
BIND では新しいネットワークインターフェイスや存在しなくなったインターフェイスを、定期的に検索します。この値を 0
にすると、 BIND は新しいインターフェイスを使用しなくなり、起動時に検出されたインターフェイスのみを使用するようになります。それ以外の場合は分単位で指定してください。既定値は 60 分です。
no
を指定すると、ゾーンデータに修正が発生したような場合や、ネームサーバが再起動されたような場合に、他のネームサーバに通知を送信しなくなります。
利用可能なオプションの一覧については、 man 5 named.conf
のマニュアルページをお読みください。
BIND では、ログ記録を行う種類と方法、場所をそれぞれ設定することができます。通常は既定値のままでかまいません。なお、 例19.3「ログ記録を無効化するための設定」 には一切のログ記録を無効化するための最も簡単な設定が示されています。
logging { category default { null; }; };
zone "example.com" in { type master; file "example.com.zone"; notify no; };
例19.4「example.com に対するゾーン項目」 に示されているとおり、まず zone
の後ろには、管理対象のドメイン名を指定 ( example.com
) し、それに続いて in
と波括弧を記述します。 セカンダリゾーン を定義するには、 type
を secondary
にして primary
でプライマリサーバを指定してください (詳しくは 例19.5「example.net に対するゾーン項目」 をご覧ください) 。
zone "example.net" in { type secondary; file "secondary/example.net.zone"; masters { 10.0.0.1; }; };
それぞれの項目の意味は下記の通りです:
primary
を指定することで、 BIND は指定したゾーンをローカルのネームサーバ内で処理するようになります。なお、ゾーンファイルは正しい形式で作成している必要があります。
このゾーンは、あらかじめ他のネームサーバから情報を転送して提供するものであることを示しています。この宣言を行った場合、 primary_servers
もあわせて指定しなければなりません。
ゾーン .
に対して設定されている hint
とは、ルートネームサーバを設定する際に使用するものです。このゾーンの設定は、変更したりせずそのままにしておいてください。
example.com.zone
および file 「secondary/example.net.zone」 ;この項目は、指定したドメインに対するゾーンデータが、どこに配置されているのかを示すものです。セカンダリゾーンの場合は、ゾーンデータをプライマリサーバから取得するため、 file で指定したファイルが存在している必要はありません。ただし、セカンダリゾーンの場合は secondary
ディレクトリ内に配置して区別するようにしてください。
この項目はセカンダリゾーンの場合にのみ指定すべき項目です。ネームサーバのゾーンデータを、どこから取得するのかを指定します。
この項目は外部からの書き込みアクセスを制御するもので、どのクライアントから DNS の項目を修正できるのかを指定します。セキュリティ上の理由から、必要な場合を除いて許可すべきではないものです。この項目を指定しない場合、全ての修正が拒否されます。なお、上記の ! *
のように指定しても同じ意味になり、全てのクライアントからの修正を拒否します。
ゾーンファイルに対しては、 2 種類のものが必要となります。 1 つはホスト名に IP アドレスを割り当てるもので、もう 1 つはその逆に IP アドレスにホスト名を割り当てるものです。
ゾーンファイル内では、 "."
は特別な意味を持ちます。たとえばホスト名の末尾がドットで終わっていない場合、ゾーンのドメイン名が後ろに付いているものと見なされます。完全修飾ドメイン名の場合は、必ずドット (.
) で終わらなければなりません。ドットで終わらないと、さらにドメイン名が付与されてしまいます。また、 "." を誤った位置に配置したり、記述すべき箇所に記述しなかったりすると、ネームサーバの設定エラーを引き起こします。
まずは example.com.zone
というゾーンファイルについて説明を行います。このゾーンファイルは example.com
というドメインに対するゾーンファイルです。 例19.6「/var/lib/named/example.com.zone ファイル」 に例を示しています。
$TTL 2D 1 example.com. IN SOA dns root.example.com. ( 2 2003072441 ; シリアル番号 3 1D ; 更新間隔 4 2H ; 再試行間隔 5 1W ; 有効期限 6 2D ) ; ネガティブキャッシュ 7 IN NS dns 8 IN MX 10 mail dns 9 gate IN A 192.168.5.1 10 IN A 10.0.0.1 dns IN A 192.168.1.116 mail IN A 192.168.3.108 jupiter IN A 192.168.2.100 venus IN A 192.168.2.101 saturn IN A 192.168.2.102 mercury IN A 192.168.2.103 ntp IN CNAME dns 11 dns6 IN A6 0 2002:c0a8:174::
| |
この行が SOA (権威開始; Start Of Authority) 制御レコードの開始位置です:
| |
| |
| |
| |
| |
SOA レコードの最後の項目は | |
| |
MX レコードは、このドメイン ( | |
この行以降が実際のアドレスレコードで、 1 つ以上の IP アドレスをホスト名に割り当てています。それぞれのホスト名には 注記: IPv6 の書式についてIPv6 アドレスを指定する場合は、 IPv4 とは異なる書式で指定します。 IPv6 アドレスは IPv4 アドレスよりも長いものの、中間部分にゼロが入ることが多いため、その部分を省略して表記するためです。 IPv6 アドレスのうち、 「0」 が連続する部分については、コロンを 2 つ付けて省略します。 pluto AAAA 2345:00C1:CA11::1234:5678:9ABC:DEF0 pluto AAAA 2345:00D2:DA11::1234:5678:9ABC:DEF0 | |
|
疑似ドメインである in-addr.arpa
は、 IP アドレスからホスト名への逆変換を行う際に使用するドメインです。このドメインの前にアドレスを逆順で記述してドメイン名とします。たとえば 192.168
のアドレスに対する逆引きドメインは 168.192.in-addr.arpa
になります。詳しくは 例19.7「逆引き参照」 をご覧ください。
$TTL 2D 1 168.192.in-addr.arpa. IN SOA dns.example.com. root.example.com. ( 2 2003072441 ; シリアル番号 1D ; 更新間隔 2H ; 再試行間隔 1W ; 有効期限 2D ) ; ネガティブキャッシュ TTL IN NS dns.example.com. 3 1.5 IN PTR gate.example.com. 4 100.3 IN PTR www.example.com. 253.2 IN PTR cups.example.com.
$TTL は、このファイル内の全ての項目に対して適用される、既定の有効期間 (Time-to-Live) を設定します。 | |
この行は このレコード内の各項目に対する詳細は、 例19.6「/var/lib/named/example.com.zone ファイル」 をお読みください。 | |
この行では、このゾーンに対するネームサーバを指定しています。前述の通り、ホスト名は完全修飾ドメイン名で記述しなければならず、かつ | |
この行以降は IP アドレスと対応するホスト名を記述しています。 IP アドレスについては末尾だけを逆順で記述し、 |
なお、 BIND のバージョンが異なっていても、ゾーンの転送は問題なく実施することができます。
動的な更新 とは、プライマリサーバ内のゾーンファイルの項目を、動的に追加したり変更したり削除したりする機能を意味します。この仕組みは RFC 2136 に規定されていて、各ゾーンの項目内に allow-update
や update-policy
のルールを指定することで、有効化することができます。ただし、動的に更新するゾーンについては、手作業でゾーンファイルを編集すべきではありません。
DNS サーバに対して更新要求を送信するには、 nsupdate
コマンドを使用します。このコマンドの正確な書式については、 nsupdate のマニュアルページ (man
8 nsupdate
をご覧ください。なお、セキュリティ上の理由から、 19.8項 「トランザクションの暗号化」 で説明している TSIG 鍵の使用をお勧めします。
トランザクションの暗号化は、共有機密鍵をベースにしたトランザクション署名 (TSIG) を利用して行います (そのため、 TSIG 鍵とも呼ばれます) 。本章では、このような鍵を生成し、使用する方法について説明しています。
トランザクションの暗号化は、サーバ間での通信のほか、ゾーンデータの動的な更新を行う場合に必要となります。鍵に依存したアクセス制御を設定することで、 IP アドレスだけに依存するよりもずっと機密を保持できるようになります。
TSIG 鍵を生成するには、下記のコマンドを実行します (詳しくは man
tsig-keygen
をお読みください):
>
sudo
tsig-keygen -a hmac-md5 host1-host2 > host1-host2.key
上記を実行すると host1-host2.key
というファイルが作成され、下記のような内容が書き込まれます:
key "host1-host2" { | algorithm hmac-md5; secret "oHpBLgtcZso6wxnRTWdJMA=="; };
このファイルは通常、機密の保持される方法 (例: scp) で対向のホストに転送します。また、 host1
と host2
との間で機密が保持できるようにするため、鍵は両方のサーバの /etc/named.conf
内に含めなければなりません。
key host1-host2 { algorithm hmac-md5; secret "ejIkuCyyGJwwuN3xAteKgg=="; };
/etc/named.conf
のアクセス権について/etc/named.conf
に対するアクセス権 (パーミッション) が正しく制限されていることを確認してください。このファイルの既定のアクセス権は 0640
で、所有者は root
、グループは named
になっているはずです。また、 /etc/named.conf
から別のファイルを参照するように指定することで、異なるアクセス権のファイルを取り込むこともできます。別のファイルを参照するには、下記のように指定します:
include "ファイル名"
ファイル名
の欄には、絶対パスで参照すべきファイルを指定します。
サーバ host1
に対して、 host2
(この例では、アドレス 10.1.2.3
) 向けの鍵を使用するようにするには、サーバ側の /etc/named.conf
内に下記のルールを含めなければなりません:
server 10.1.2.3 { keys { host1-host2. ;}; };
host2
側の設定についても、同様の項目を含めなければなりません。
あとは TSIG 鍵を、 IP アドレスやアドレスの範囲を指定している任意の ACL (アクセス制御リスト (Access Control List) 、ファイルのアクセス権 (パーミッション) と混同しないでください) に設定して、許可を付与します。たとえば下記のようになります:
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
パッケージ内の /usr/share/doc/packages/bind/arm
ディレクトリに含まれる、 BIND Administrator Reference Manual (BIND 管理者向けリファレンスマニュアル) をお読みください。また、マニュアルや BIND のマニュアルページから参照されている、各種の RFC についてもお読みになることをお勧めします。また、 openSUSE Leap での最新情報については、 /usr/share/doc/packages/bind/README.SUSE
をお読みください。