Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
適用先 openSUSE Leap 15.6

19 ドメインネームシステム Edit source

概要

DNS (ドメインネームシステム; Domain Name System) は、ドメイン名やホスト名を IP アドレスに解決するために必要なシステムです。この仕組みにより、たとえば IP アドレス 192.168.2.100 とホスト名 jupiter を結びつけることができるようになります。お使いの環境で独自のネームサーバを構築する前に、まずは 13.3項 「名前解決」 に書かれている DNS の一般的な情報をお読みください。また、下記の設定例では、既定のネームサーバである bind を使用して説明しています。

19.1 DNS で使用される用語 Edit source

ゾーン

ドメイン名は複数のゾーンに分割することができます。たとえば example.com というドメイン名の場合、 com ドメイン内の example というセクション (ゾーン) であることになります。

DNS サーバ

DNS サーバとは、ドメインに対して名前と IP アドレスの情報を保持するサーバを意味します。 DNS サーバには、必要に応じて複数のゾーン (プライマリゾーン/セカンダリゾーン) が設定されるほか、ゾーンを持たないキャッシュ専用のセカンダリサーバもあります。

プライマリゾーン DNS サーバ

プライマリゾーンには、特定のドメイン内での全ホストについて、その最新情報が登録されています。

セカンダリゾーン DNS サーバ

セカンダリゾーンはプライマリゾーンのコピーを意味します。 DNS サーバはプライマリサーバから、セカンダリゾーンとして設定されたゾーンの転送を行います。プライマリゾーンは、その情報が有効である限り (有効期限が切れない範囲) において、信頼できる情報源であるものとされます。プライマリサーバと通信ができなくなり、その情報の有効期限が切れると、 DNS サーバはそのゾーンに対する応答を行わなくなります。

フォワーダ

フォワーダとは、お使いの DNS サーバがその問い合わせに応答できない場合に、その問い合わせの転送先となる DNS サーバを意味します。 1 つの設定内で複数の設定ソースを利用したい場合は、 netconfig を使用します (詳しくは man 8 netconfig をお読みください) 。

レコード

レコードとは名前や IP アドレスに関する情報を意味します。対応するレコードとその書式については、 BIND のドキュメンテーションに説明があります。下記にいくつかの特殊なレコードを示します:

NS レコード

NS レコードとは、指定したドメイン (ゾーン) を受け持つネームサーバを示すためのレコードです。

MX レコード

MX (メール交換; Mail eXchange) レコードとは、インターネットを介して電子メールを交換する際、そのドメイン宛のメールを受信するメールサーバを示すためのレコードです。

SOA レコード

SOA (権威開始; Start Of Authority) レコードとは、ゾーンファイル内で最初に作成すべきレコードです。 SOA レコードは、複数のコンピュータ間でデータを同期する際に使用します。

19.2 インストール Edit source

DNS サーバをインストールするには、 YaST を起動して ソフトウエア › ソフトウエア管理 を選択します。その後 表示 › パターン を選択して DHCP および DNS サーバ を選択します。あとは 了解 を押して必要なパッケージをインストールします。

上記以外にも、下記のコマンドラインを入力してもかまいません:

> sudo zypper in -t pattern dhcp_dns_server

19.3 YaST での設定 Edit source

ローカルネットワーク内で DNS サーバを設定したい場合は、 YaST の DNS モジュールをお使いください。初めてこのモジュールを起動した場合はウイザードが表示され、サーバの管理に関わるいくつかの決定を行うことになります。この初期設定を完了すると、基本的なサーバ設定が作成されます。 ACL やログ、 TSIG 鍵やその他のオプションなど、より高度な設定を行いたい場合は、熟練者モードをお使いください。

19.3.1 ウイザードによる設定 Edit source

このウイザードは 3 つの手順 (ダイアログ) から構成されています。熟練者モードへの移行は、それが可能になった段階で表示されるようになっています。

  1. 初めて本モジュールを起動した場合は、 図19.1「DNS サーバのインストール: フォワーダの設定」 に示されている フォワーダの設定 ダイアログが表示されます。ここでは、 ローカル DNS の解決ポリシー で下記のいずれかを選択することができます:

    • フォワーダの合成を無効にする

    • 自動的に合成する

    • フォワーダの合成を有効にする

    • 独自設定: これを選択すると、 カスタムポリシー を指定することができるようになります。既定では (自動的に合成する が選択されるため) 、 カスタムポリシーauto に設定されますが、ここにはインターフェイス名のほか、 STATICSTATIC_FALLBACK のような特殊ポリシー名を指定することができます。

    ローカル DNS 解決器のフォワーダ では、どのサービスを使用するのかを選択します。 システムのネームサーバを使用する , このネームサーバ (bind) , ローカルの dnsmasq サーバ の中からいずれかを選択してください。

    これら全ての設定に関する詳細は、 man 8 netconfig をお読みください。

    DNS サーバのインストール: フォワーダの設定
    図 19.1: DNS サーバのインストール: フォワーダの設定

    フォワーダとは、お使いの DNS サーバがその問い合わせに応答できない場合に、その問い合わせの転送先となる DNS サーバを意味します。フォワーダの IP アドレスを入力して、 追加 を押してください。

  2. DNS ゾーン ダイアログではゾーンファイル (詳しくは 19.6項 「ゾーンファイル」 をお読みください) の管理を行います。新しいゾーンを作成するには、 名前 欄にゾーンの名前を入力します。なお、逆引きゾーンを作成する場合は、ゾーンの名前が .in-addr.arpa で終わらなければなりません。また、 種類 (プライマリ/セカンダリ/転送) も選択する必要があります。詳しくは 図19.2「DNS サーバのインストール: DNS ゾーン」 をお読みください。既存のゾーンを編集したい場合は、ゾーンを選択して 編集 を押します。ゾーンを削除したい場合は、ゾーンを選択して 削除 を押します。

    DNS サーバのインストール: DNS ゾーン
    図 19.2: DNS サーバのインストール: DNS ゾーン
  3. 最後のダイアログでは残りの設定を行います。 ファイアウオールでポートを開く を選択すると、ファイアウオールで DNS のポートを開くことができます。また、システムの起動時に DNS サーバを開始するかどうかを設定することもできる (オン または オフ) ほか、 LDAP サポートを有効化することもできます。詳しくは 図19.3「DNS サーバのインストール: ウイザードの完了」 をご覧ください。

    DNS サーバのインストール: ウイザードの完了
    図 19.3: DNS サーバのインストール: ウイザードの完了

19.3.2 熟練者向け設定 Edit source

モジュールを起動すると、 YaST は複数の設定オプションを表すウインドウを表示します。これらの設定を行うことで、 DNS サーバの基本的な機能を適用することができるようになります:

19.3.2.1 起動 Edit source

起動 では、 DNS サーバをシステムの起動時に開始するかどうかを選択することができます。 DNS サーバを今すぐに開始したい場合は、 今すぐ開始 を押してください。 DNS サーバを停止するには、 今すぐ停止 を押してください。現在の設定を保存するには、 設定保存後に再読み込みする を選択してください。 ファイアウオールで DNS のポートを開くには、 ファイアウオールでポートを開く を選択して、 ファイアウオールの詳細 で必要に応じて設定を変更してください。

LDAP サポートを有効にする を選択すると、ゾーンファイルが LDAP データベース内に保存されるようになります。 LDAP データベースに書き込まれたゾーンデータを修正した場合は、 DNS サーバの再起動や再読み込みでそれが反映されるようになります。

19.3.2.2 フォワーダ Edit source

ローカルの DNS サーバが特定の問い合わせに応答できない場合、その問い合わせを フォワーダ で設定したサーバに転送することができます。このフォワーダは、 フォワーダの一覧 内に手作業で追加して設定します。ダイアルアップ接続の場合など、固定では設定できない環境の場合は、 netconfig が設定を取り扱います。 netconfig について、詳しくは man 8 netconfig をお読みください。

19.3.2.3 基本オプション Edit source

このセクションでは基本的なサーバ設定を行います。 オプション で設定したい項目を一覧から選んで、右側に設定したい値を入力してください。入力が終わったら 追加 を押すと、設定を追加することができます。

19.3.2.4 ログ Edit source

DNS サーバでのログ記録を設定するには、 ログ を選択します。 ログの種類 では、 DNS サーバからのログの保存先を指定します。 システムログ を選択するとシステム全体のログファイルに、 ファイル を選択すると指定したファイルに保存することができます。後者の場合はファイル名のほか、メガバイト単位で最大ファイルサイズと、残しておくべき過去のログファイル数 (バージョン) を指定することができます。

さらに詳しいオプションが 追加ログ 内に用意されています。 すべての DNS への問い合わせ を選択すると、届いた全ての問い合わせをログに記録するようになりますので、ログファイルのサイズが大きくなることに注意してください。そのため、デバッグの目的がある場合を除いて、有効化することはお勧めできません。また、 DHCP サーバと DNS サーバの間でのゾーン更新時にログを記録したい場合は、 ゾーン更新をログに記録 を選択してください。また、プライマリサーバからセカンダリサーバへのゾーン転送をログに記録したい場合は、 ゾーン転送をログに記録 を選択してください。詳しくは 図19.4「DNS サーバ: ログ」 をお読みください。

DNS サーバ: ログ
図 19.4: DNS サーバ: ログ

19.3.2.5 ACL Edit source

このダイアログでは ACL (アクセス制御リスト; Access Control List) を定義して、アクセス制限を設定することができます。 名前 欄に他と重複しない名前を設定し、 欄に IP アドレス (ネットマスクは設定してもいなくてもかまいません) を指定することで、 ACL を定義することができます。値は下記のように記述します:

{ 192.168.1/24; }

設定ファイルの書式により、アドレスの末尾にはセミコロンを付けるほか、値を波括弧で括ってください。

19.3.2.6 TSIG 鍵 Edit source

TSIG (トランザクション署名; Transaction SIGnatures) の主な目的は、 DHCP サーバと DNS サーバとの間で機密を保持する通信を行うことにあります。詳しくは 19.8項 「トランザクションの暗号化」 で説明しています。

TSIG 鍵を生成するには、 鍵 ID の欄に他と重複しない名前を入力し、 ファイル名 の欄に保存先のファイル名を指定したあと、 生成 を押します。

以前に作成した鍵を使用したい場合は、 鍵 ID の欄には何も入力せず、 ファイル名 の欄で既存のファイルのファイル名を入力してください。入力が終わったら 追加 を押します。

19.3.2.7 DNS ゾーン (セカンダリゾーンの追加) Edit source

セカンダリゾーンを追加するには、 DNS ゾーン を選択して、 種類セカンダリ を選択します。その後ゾーンの名前を入力して 追加 を押します。

ゾーンエディタ サブダイアログ内の プライマリ DNS サーバの IP では、セカンダリサーバが情報を取得する際のプライマリサーバを指定します。また、サーバへのアクセスを制限したい場合は、表示された ACL の一覧から必要なものを選択します。

19.3.2.8 DNS ゾーン (プライマリゾーンの追加) Edit source

プライマリゾーンを追加するには、 DNS ゾーン を選択して 種類プライマリ を選択します。その後ゾーンの名前を入力して 追加 を押します。なお、プライマリゾーンを追加する場合は、逆引きゾーンも必要となります。たとえば example.com というゾーンを追加して、そこに 192.168.1.0/24 というサブネット内のホストを設定する場合、その IP アドレスを範囲内とする逆引きゾーンを追加する必要があります。この逆引きゾーンは、一般に 1.168.192.in-addr.arpa という名前であるべきものです。

19.3.2.9 DNS ゾーン (プライマリゾーンの編集) Edit source

プライマリゾーンを編集するには、 DNS ゾーン を選択して表の中からプライマリゾーンを選択し、 編集 を押します。ダイアログには下記のようなページが用意されています: 基本 (最初に表示されるページ) , NS レコード , MX レコード , SOA , レコード

図19.5「DNS サーバ: ゾーンエディタ (基本)」 に示されている基本設定ダイアログでは、動的な DNS 更新の可否とクライアントやセカンダリサーバに対するゾーン転送の設定を行うことができます。ゾーンを動的に更新できるようにするには、 動的な更新の許可 を選択したあと、対応する TSIG 鍵を選択する必要があります。鍵は更新処理の開始よりも前に定義しておかなければなりません。ゾーン転送を有効化するには、対応する ACL を選択します。 ACL はこの時点までに設定しておかなければなりません。

基本 ダイアログでは、ゾーンの転送可否を設定します。表示された ACL を選択して、ゾーンのダウンロードを許可したい相手を選択してください。

DNS サーバ: ゾーンエディタ (基本)
図 19.5: DNS サーバ: ゾーンエディタ (基本)
ゾーンエディタ (NS レコード)

NS レコード ダイアログでは、指定したゾーンでのネームサーバを設定することができます。なお、この一覧内には自分自身も含めておく必要があることに注意してください。レコードを追加するには、 追加するネームサーバ の欄に名前を入力して 追加 を押します。詳しくは 図19.6「DNS サーバ: ゾーンエディタ (NS レコード)」 をご覧ください。

DNS サーバ: ゾーンエディタ (NS レコード)
図 19.6: DNS サーバ: ゾーンエディタ (NS レコード)
ゾーンエディタ (MX レコード)

既存の一覧内に現在のゾーンに対するメールサーバを追加するには、まず対応するテキストボックス内にアドレスと優先度を入力します。それぞれ入力が終わったら 追加 を押します。詳しくは 図19.7「DNS サーバ: ゾーンエディタ (MX レコード)」 をご覧ください。

DNS サーバ: ゾーンエディタ (MX レコード)
図 19.7: DNS サーバ: ゾーンエディタ (MX レコード)
ゾーンエディタ (SOA)

このページでは、 SOA (権威開始; Start Of Authority) レコードを作成します。個別のオプションに関する説明については、 例19.6「/var/lib/named/example.com.zone ファイル」 をお読みください。 ただし、 LDAP で管理されている動的ゾーンの場合は、 SOA レコードの変更には対応していません。

DNS サーバ: ゾーンエディタ (SOA)
図 19.8: DNS サーバ: ゾーンエディタ (SOA)
ゾーンエディタ (レコード)

このダイアログでは、名前解決を管理します。 レコードキー にはホスト名を入力して、種類を選択します。種類に A を選択した場合は、 レコードキー がホスト名、 が IP (IPv4) アドレスになります。同様に AAAA の場合は、 レコードキー がホスト名、 が IPv6 アドレスになります。 CNAME の場合は レコードキー の両方がホスト名となり、一方から他方への別名定義を作成することができます。 NSMX については、それぞれ NS レコードMX レコード のタブで提供されているものと同じです。なお、 PTR は逆引きゾーンで使用するものです。これは A レコードの逆を意味するもので、たとえば下記のようになります:

hostname.example.com. IN A 192.168.0.1
1.0.168.192.in-addr.arpa IN PTR hostname.example.com.
19.3.2.9.1 逆引きゾーンの追加 Edit source

逆引きゾーンを追加するには、下記の手順で行います:

  1. YaST › DNS サーバ › DNS ゾーン を選択します。

  2. まだ (逆引きではない) プライマリゾーンを作成していない場合は、プライマリゾーンを追加して 編集 を押します。

  3. レコード タブに移動し、 レコードキー をそれぞれ入力して 追加 を押します。作業が終わったら OK を押します。 YaST が NS サーバの設定についてエラーメッセージを表示した場合は、 NS レコード のタブでサーバを追加してください。

    プライマリゾーンに対するレコードの追加
    図 19.9: プライマリゾーンに対するレコードの追加
  4. DNS ゾーン ウインドウに戻ったら、逆引きのプライマリゾーンを追加します。

    逆引きゾーンの追加
    図 19.10: 逆引きゾーンの追加
  5. 逆引きゾーンを選択して 編集 し、 レコード タブに移動します。逆引きゾーンの場合、 PTR: 逆変換 というレコードの種類が表示されるはずです。それぞれ対応する レコードキー を入力して 追加 を押し、作業が終わったら OK を押して閉じます。

    逆引きレコードの追加
    図 19.11: 逆引きレコードの追加

    なお、必要であれば NS レコードも追加してください。

ヒント
ヒント: 逆引きゾーンの編集

正引きのゾーンを追加したら、メインメニューに戻って逆引きゾーンを選択して、編集を行ってください。この中の 基本 タブ内には、 以下のものから自動的にレコードを生成 というチェックボックスがありますので、このチェックを入れてから対応する正引きゾーンを選択すると、自動的にレコードを生成することができるようになります。これを設定しておくことで、正引きゾーンで何らかの変更を行うと、それにあわせて逆引きゾーンが更新されるようになります。

19.4 BIND ネームサーバの起動 Edit source

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 サーバが存在するような場合、独自に構築したドメインにはアクセスできません。

ネームサーバを開始するには、 rootsystemctl start named のコマンドを実行します。実行した後は、 systemctl status named コマンドで named (ネームサーバのプロセス名) の状態を確認することができます。ローカルでネームサーバの動作を確認するには、 hostdig のコマンドを使用します。たとえば 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 内でのフォワーダオプション」 で設定しているアドレスは、あくまでも例として示しているものです。必要に応じて修正してください。

例 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 の項目は localhost0.0.127.in-addr.arpa の後に続く項目です。また、 . 内の type hint は、必ず設定しておくべき項目です。これらについては変更することなく、そのまま残しておいてください。また、各項目の末尾には ; を付けるとともに、必要な箇所に波括弧を入力してください。 /etc/named.conf やゾーンファイルを編集した後は、 BIND に対して再読み込みを指示するため、 systemctl reload named を実行してください。再読み込みは、ネームサーバを一旦停止して起動し直すことでも対応することができます (systemctl restart named) 。また、サーバを停止したい場合は、 systemctl stop named を実行してください。

19.5 /etc/named.conf 設定ファイル Edit source

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」 のようになります。

例 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";
};

19.5.1 主要な設定オプション Edit source

directory " ディレクトリ ";

BIND がゾーンデータを含むファイルを検索するディレクトリを指定します。通常は /var/lib/named を指定します。

forwarders { IP_アドレス ; };

ネームサーバが DNS の問い合わせを直接解決できない場合、その問い合わせを転送する先のネームサーバ (多くはプロバイダのネームサーバ) を指定します。 IP_アドレス はたとえば、 192.168.1.116 のように指定します。

forward first;

ルートネームサーバを利用して解決しようとする前に、フォワーダを利用して DNS の問い合わせを解決するようにします。 forward first ではなく forward only を指定すると、ルートネームサーバを使用せずにフォワーダのみを使用するようになります。これは特にファイアウオールを利用するような場合に便利です。

listen-on port 53 { 127.0.0.1; IP_アドレス ; };

BIND に対してネットワークインターフェイスを指定するほか、クライアントからの問い合わせを受け付けるポートを指定します。 53 は既定のポートであるため、 port 53 を明示的に指定する必要はありません。また、 127.0.0.1 を指定して、ローカルホストからのアクセスについては必ず受け付けるようにしてください。この設定を全く行わない場合は、全てのインターフェイスを利用して問い合わせを受け付けるようになります。

listen-on-v6 port 53 {any; };

BIND に対して IPv6 のクライアントからの問い合わせを受け付けるように指定しています。 any (任意のアドレス) 以外には none (全てのアドレスを拒否) を指定することもできます。 IPv6 については、ワイルドカードアドレスを指定することもできます。

query-source address * port 53;

この項目は、ファイアウオールが外部宛の DNS リクエストをブロックしているような場合に必要となります。この設定により、 BIND はポート 53 からリクエストを送信するようになり、 1024 以上のポートを使用しなくなります。

query-source-v6 address * port 53;

BIND に対して、 IPv6 の問い合わせで使用するポートを指定しています。

allow-query { 127.0.0.1; NET ; };

どのクライアントから DNS のリクエストを受け付けるのかを指定します。 NET には 192.168.2.0/24 のように、アドレス情報を指定してください。 /24 はネットマスクの省略表記で、この例の場合は 255.255.255.0 を意味します。

allow-transfer ! *;;

どのホストからのゾーン転送要求を受け入れるのかを指定します。 ! * の例では、全てのホストからの要求を拒否します。この項目を指定しない場合、ゾーン転送は全てのホストから実施できるようになります。

statistics-interval 0;

上記の項目を設定しない場合、 BIND はシステムのジャーナルに対して、 1 時間おきに統計情報を出力するようになります。 0 を指定すると、この統計情報を省略することができます。 0 以外の値を指定する場合は、分単位で指定します。

cleaning-interval 720;

このオプションは、 BIND がキャッシュを清掃する時間間隔を指定します。この清掃が行われると、システムのジャーナルに対しても出力が行われます。時間は分単位で指定します。既定値は 60 分です。

interface-interval 0;

BIND では新しいネットワークインターフェイスや存在しなくなったインターフェイスを、定期的に検索します。この値を 0 にすると、 BIND は新しいインターフェイスを使用しなくなり、起動時に検出されたインターフェイスのみを使用するようになります。それ以外の場合は分単位で指定してください。既定値は 60 分です。

notify no;

no を指定すると、ゾーンデータに修正が発生したような場合や、ネームサーバが再起動されたような場合に、他のネームサーバに通知を送信しなくなります。

利用可能なオプションの一覧については、 man 5 named.conf のマニュアルページをお読みください。

19.5.2 ログ Edit source

BIND では、ログ記録を行う種類と方法、場所をそれぞれ設定することができます。通常は既定値のままでかまいません。なお、 例19.3「ログ記録を無効化するための設定」 には一切のログ記録を無効化するための最も簡単な設定が示されています。

例 19.3: ログ記録を無効化するための設定
logging {
        category default { null; };
};

19.5.3 ゾーンの項目 Edit source

例 19.4: example.com に対するゾーン項目
zone "example.com" in {
      type master;
      file "example.com.zone";
      notify no;
};

例19.4「example.com に対するゾーン項目」 に示されているとおり、まず zone の後ろには、管理対象のドメイン名を指定 ( example.com ) し、それに続いて in と波括弧を記述します。 セカンダリゾーン を定義するには、 typesecondary にして primary でプライマリサーバを指定してください (詳しくは 例19.5「example.net に対するゾーン項目」 をご覧ください) 。

例 19.5: example.net に対するゾーン項目
zone "example.net" in {
      type secondary;
      file "secondary/example.net.zone";
      
      masters { 10.0.0.1; }; 
};

それぞれの項目の意味は下記の通りです:

type primary;

primary を指定することで、 BIND は指定したゾーンをローカルのネームサーバ内で処理するようになります。なお、ゾーンファイルは正しい形式で作成している必要があります。

type secondary;

このゾーンは、あらかじめ他のネームサーバから情報を転送して提供するものであることを示しています。この宣言を行った場合、 primary_servers もあわせて指定しなければなりません。

type hint;

ゾーン . に対して設定されている hint とは、ルートネームサーバを設定する際に使用するものです。このゾーンの設定は、変更したりせずそのままにしておいてください。

file example.com.zone および file secondary/example.net.zone ;

この項目は、指定したドメインに対するゾーンデータが、どこに配置されているのかを示すものです。セカンダリゾーンの場合は、ゾーンデータをプライマリサーバから取得するため、 file で指定したファイルが存在している必要はありません。ただし、セカンダリゾーンの場合は secondary ディレクトリ内に配置して区別するようにしてください。

primary_servers { SERVER_IP_ADDRESS ; };

この項目はセカンダリゾーンの場合にのみ指定すべき項目です。ネームサーバのゾーンデータを、どこから取得するのかを指定します。

allow-update {! *; };

この項目は外部からの書き込みアクセスを制御するもので、どのクライアントから DNS の項目を修正できるのかを指定します。セキュリティ上の理由から、必要な場合を除いて許可すべきではないものです。この項目を指定しない場合、全ての修正が拒否されます。なお、上記の ! * のように指定しても同じ意味になり、全てのクライアントからの修正を拒否します。

19.6 ゾーンファイル Edit source

ゾーンファイルに対しては、 2 種類のものが必要となります。 1 つはホスト名に IP アドレスを割り当てるもので、もう 1 つはその逆に IP アドレスにホスト名を割り当てるものです。

ヒント
ヒント: ゾーンファイル内でのドット (ピリオド) の使用について

ゾーンファイル内では、 "." は特別な意味を持ちます。たとえばホスト名の末尾がドットで終わっていない場合、ゾーンのドメイン名が後ろに付いているものと見なされます。完全修飾ドメイン名の場合は、必ずドット (.) で終わらなければなりません。ドットで終わらないと、さらにドメイン名が付与されてしまいます。また、 "." を誤った位置に配置したり、記述すべき箇所に記述しなかったりすると、ネームサーバの設定エラーを引き起こします。

まずは example.com.zone というゾーンファイルについて説明を行います。このゾーンファイルは example.com というドメインに対するゾーンファイルです。 例19.6「/var/lib/named/example.com.zone ファイル」 に例を示しています。

例 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::

1

$TTL は、このファイル内の全ての項目に対して適用される、既定の有効期間 (Time-to-Live) を設定します。この例では、各項目は 2 日間有効となっています ( 2 D ) 。

2

この行が SOA (権威開始; Start Of Authority) 制御レコードの開始位置です:

  • まずは対象のドメイン (example.com) を最初に指定します。ここではドメイン名を再度追加されてしまうことのないよう、 "." で終わらせる必要があります。また、 1 文字で @ を指定することもできますが、この場合は /etc/named.conf から対応する項目を抽出する意味になります。

  • IN SOA の後ろには、このゾーンを担当するプライマリネームサーバの名前を指定します。この項目は "." で終わっていませんので、 dnsdns.example.com に展開されます。

  • ネームサーバの管理を行っている管理者の電子メールアドレスを指定します。ただし、 @ はゾーンファイル内では特別な意味を持ちますので、代わりに "." を使用します。たとえば root@example.com の場合は、 root.example.com. となります。また、ドメイン名を再度追加されてしまうことのないよう、末尾には "." を付けなければなりません。

  • その後の ( から ) までが SOA レコードとなります。

3

シリアル番号 は 10 桁の番号を指定しています。この数値は、ゾーンファイルが変更されるたびに変えなければなりません。この数値はセカンダリネームサーバに対して変更を通知するためのもので、一般的には YYYYMMDDNN の書式で指定します ( YYYY = 年, MM = 月, DD = 日, NN = 順序番号) 。なお、 NN は 1 日の間に複数回の変更を行った場合に使用します。

4

更新間隔 は、セカンダリネームサーバがゾーンの シリアル番号 を確認する時間間隔を指定します。この例では 1 日になっています。

5

再試行間隔 はセカンダリネームサーバで何らかのエラーが発生した場合に、プライマリネームサーバにアクセスする時間間隔を指定します。この例では 2 時間になっています。

6

有効期限 は、セカンダリサーバからプライマリサーバにアクセスすることができなくなった場合に、キャッシュ済みのデータを廃棄するまでの時間を指定します。この例では 1 週間になっています。

7

SOA レコードの最後の項目は ネガティブキャッシュ TTL で、他のコンピュータからの問い合わせで、解決することのできなかった DNS の問い合わせをキャッシュしておく時間を指定します。

8

IN NS の行は、このドメインに対するネームサーバを指定するための項目です。 dns"." で終わっていないため、 dns.example.com に展開されます。また、この行は複数のサーバ (プライマリ、セカンダリなど) を指定する目的で、複数指定することもできます。この場合は IN NS の行を複数記述してください。また、 /etc/named.confnotifyno を指定していない場合、ゾーンの更新が発生すると、ここに記述している全てのネームサーバに対して通知が行われます。

9

MX レコードは、このドメイン (example.com) に対するメールを受け取って処理したり、転送したりするためのメールサーバを指定します。この例では mail.example.com がメールサーバに指定されています。ホスト名の前に設定されている数値は優先順位を表す値で、複数の MX レコードが存在した場合、その中で最も小さい優先順位の値のメールサーバを優先して使用します。もしもそのサーバ宛のメール配送が失敗した場合は、次に小さい優先順位のメールサーバを使用します。

10

この行以降が実際のアドレスレコードで、 1 つ以上の IP アドレスをホスト名に割り当てています。それぞれのホスト名には "." が含まれていないため、それぞれに対して example.com が設定されます。なお、 gate には 2 つの IP アドレスが割り当てられていますが、これは 2 枚のネットワークカードが接続されていることによるものです。 ホストに対して割り当てるアドレスが従来のもの (IPv4) であった場合、レコードは A レコードになります。 IPv6 アドレスを指定する場合は、 AAAA レコードになります。

注記
注記: 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

11

ntpdns の別名として使用する設定です。 (CNAMEcanonical name (正式名称) の略です) 。

疑似ドメインである in-addr.arpa は、 IP アドレスからホスト名への逆変換を行う際に使用するドメインです。このドメインの前にアドレスを逆順で記述してドメイン名とします。たとえば 192.168 のアドレスに対する逆引きドメインは 168.192.in-addr.arpa になります。詳しくは 例19.7「逆引き参照」 をご覧ください。

例 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.

1

$TTL は、このファイル内の全ての項目に対して適用される、既定の有効期間 (Time-to-Live) を設定します。

2

この行は 192.168 のネットワークに対する逆引き参照を定義しています。そのため、ゾーン名 (ドメイン名) は 168.192.in-addr.arpa になります。そのため、逆引きゾーンでホスト名を記述する際は、必ず完全修飾ドメイン名でなければならず、かつ "." で終わらなければなりません。残りの項目については、上記の example.com に対する例と同じです。

このレコード内の各項目に対する詳細は、 例19.6「/var/lib/named/example.com.zone ファイル」 をお読みください。

3

この行では、このゾーンに対するネームサーバを指定しています。前述の通り、ホスト名は完全修飾ドメイン名で記述しなければならず、かつ "." で終わらなければなりません。

4

この行以降は IP アドレスと対応するホスト名を記述しています。 IP アドレスについては末尾だけを逆順で記述し、 "." を最後に付けていません。これにより、自動的にゾーン名が末尾に追加されることになり、 .in-addr.arpa で終わる名前になるようになっています。

なお、 BIND のバージョンが異なっていても、ゾーンの転送は問題なく実施することができます。

19.7 ゾーンデータの動的な更新 Edit source

動的な更新 とは、プライマリサーバ内のゾーンファイルの項目を、動的に追加したり変更したり削除したりする機能を意味します。この仕組みは RFC 2136 に規定されていて、各ゾーンの項目内に allow-updateupdate-policy のルールを指定することで、有効化することができます。ただし、動的に更新するゾーンについては、手作業でゾーンファイルを編集すべきではありません。

DNS サーバに対して更新要求を送信するには、 nsupdate コマンドを使用します。このコマンドの正確な書式については、 nsupdate のマニュアルページ (man   8 nsupdate をご覧ください。なお、セキュリティ上の理由から、 19.8項 「トランザクションの暗号化」 で説明している TSIG 鍵の使用をお勧めします。

19.8 トランザクションの暗号化 Edit source

トランザクションの暗号化は、共有機密鍵をベースにしたトランザクション署名 (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) で対向のホストに転送します。また、 host1host2 との間で機密が保持できるようにするため、鍵は両方のサーバの /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 をお読みください。

19.9 DNS セキュリティ Edit source

DNSSEC や DNS セキュリティは、 RFC 2535 に規定されています。 DNSSEC 向けのツールは、 BIND マニュアルに説明があります。

機密を保持すべきゾーンに対しては、 1 つまたは複数のゾーン鍵を結びつけて使用します。これらはホスト鍵を作成する際に使用した dnssec-keygen で生成することができます。現時点では、 DSA 暗号化アルゴリズムを使用してこれらの鍵を生成します。対応するゾーン内の $INCLUDE ルールで、対応するゾーン内に公開鍵を結びつけます。

dnssec-signzone コマンドを使用すると、生成鍵のセット ( keyset- ファイル) を作成することができます。これらを機密を保持する方法で親ゾーンに渡して、署名をしてもらってください。署名の結果は /etc/named.conf 内の各ゾーンで取り込むように設定します。

19.10 さらなる情報 Edit source

より詳しい情報については、 bind-doc パッケージ内の /usr/share/doc/packages/bind/arm ディレクトリに含まれる、 BIND Administrator Reference Manual (BIND 管理者向けリファレンスマニュアル) をお読みください。また、マニュアルや BIND のマニュアルページから参照されている、各種の RFC についてもお読みになることをお勧めします。また、 openSUSE Leap での最新情報については、 /usr/share/doc/packages/bind/README.SUSE をお読みください。

このページを印刷