3 ネーム・サービスの構成
この章では、BINDを使用してDNSネーム・サーバーを設定する方法について説明します。
DNSおよびBINDについて
ドメイン・ネーム・システム(DNS)は、ドメイン名をIPアドレスにマップ(解決)するネットワークベースのサービスです。分離された小規模なネットワークの場合は、/etc/hostsファイルのエントリを使用してマッピングできますが、インターネットに接続しているほとんどのネットワークはDNSを使用します。
DNSは階層的な分散データベースで、階層の各レベルはピリオド(.
)で区切られています。次の完全修飾ドメイン名(FQDN)を考えてみます。
wiki.us.mydom.com.
FQDNの最後のピリオドで表されるルート・ドメインは、通常、DNS構成ファイル以外では省略されます。
wiki.us.mydom.com
この例では、最上位レベルのドメインがcom
で、mydom
はcom
のサブドメイン、us
はmydom
のサブドメイン、wiki
はホスト名です。これらの各ドメインは、管理の目的でゾーンにグループ化されています。DNSサーバー(つまり、ネーム・サーバー)には、ゾーン内のコンポーネント・ドメインの解決に必要な情報が格納されます。さらに、ゾーンのDNSサーバーには、各サブドメインの解決を行うDNSサーバーへのポインタが格納されます。
us.mydom.com
ドメイン外のクライアントが、そのローカル・ネーム・サーバーでFQDN (wiki.us.mydom.com
など)をオーソリタティブでないネーム・サーバーのIPアドレスに解決するようにリクエストした場合、ネーム・サーバーは、com
ドメインに対してオーソリタティブなネーム・サーバーのアドレスをルート・ネーム・サーバーに問い合せます。このネーム・サーバーを問い合せると、mydom.com
のネーム・サーバーのIPアドレスが返されます。次に、このネーム・サーバーを問い合せると、us.oracle.com
のネーム・サーバーのIPアドレスが返され、この最後のネーム・サーバーを問い合せると、FQDNのIPアドレスが返されます。このプロセスは再帰問合せと呼ばれ、ローカル・ネーム・サーバーは、リゾルバのかわりに、外部ネーム・サーバーから別のネーム・サーバーへの各参照を処理します。
反復問合せは、FQDNに対してオーソリタティブなネーム・サーバーをトレースするために各外部ネーム・サーバーからの参照を処理できるリゾルバに依存します。ほとんどのリゾルバは再帰問合せを使用するため、反復問合せのみをサポートするネーム・サーバーは使用できません。幸いにも、ほとんどの
Oracle Linuxでは、DNSのBerkeley Internet Name Domain (BIND)実装を提供しています。bind
パッケージには、DNSサーバー・デーモン(named
)、DNSで使用するツール(rndcなど)、および次に示すいくつかの構成ファイルが含まれます。
-
/etc/named.conf
-
named
の設定が含まれ、ドメインのゾーン・ファイルの場所と特性をリストします。通常、ゾーン・ファイルは/var/named
に格納されます。 -
/etc/named.rfc1912.zones
-
ローカル・ループバック名とアドレスを解決するための複数のゾーン・セクションが含まれます。
-
/var/named/named.ca
-
オーソリタティブなルートDNSサーバーのリストが含まれます。
ネーム・サーバーのタイプについて
BINDを使用して、次のような様々なタイプのネーム・サーバーを構成できます。
- マスター・ネーム・サーバー
-
1つ以上のドメインに対してオーソリタティブなプライマリ(マスター)・ネーム・サーバーは、そのゾーン・データを複数のデータベース・ファイル内に保持し、そのゾーン内に構成された任意のバックアップ(スレーブ)・ネーム・サーバーに、この情報を定期的に転送できます。組織では、1つのゾーンに対して2つのプライマリ・ネーム・サーバーを保持できます。1つは、パブリックにアクセスできるホストおよびサービスのゾーンについて制限付きで情報が用意されているファイアウォール外部のプライマリ・サーバーであり、もう1つは、内部のホストおよびサービスの詳細を保持するファイアウォール内部の非表示またはステルスのプライマリ・サーバーです。
- スレーブ・ネーム・サーバー
-
プライマリ・ネーム・サーバーのバックアップとして機能するバックアップ・ネーム・サーバーは、ゾーン・データのコピーを保持し、そのデータはプライマリ・サーバーのコピーから定期的にリフレッシュされます。
- スタブ・ネーム・サーバー
-
ゾーンのプライマリ・ネーム・サーバーは、子ゾーンのプライマリおよびバックアップのネーム・サーバーに関する情報を保持するスタブ・ネーム・サーバーとして構成することもできます。
- キャッシュ専用ネーム・サーバー
-
クライアントのかわりに問合せを実行し、結果をクライアントに返した後でレスポンスをキャッシュに保存します。ドメインに対してオーソリタティブではなく、記録する情報は、キャッシュした問合せの結果に限定されます。
- 転送ネーム・サーバー
-
すべての問合せを別のネーム・サーバーに転送し、結果をキャッシュします。これにより、ローカル処理、外部アクセスおよびネットワーク・トラフィックが減少します。
実際には、複雑な構成のネーム・サーバーは、これらの複数のタイプの組合せになります。
DNS構成ファイルについて
ドメインはゾーンにグループ化され、ゾーンはゾーン・ファイルを使用して構成されます。ゾーン・ファイルには、DNSデータベースのドメインに関する情報が保存されます。各ゾーン・ファイルには、ディレクティブとリソース・レコードが格納されます。オプションのディレクティブで、設定をゾーンに適用したり、特定のタスクを実行するネーム・サーバーを指定します。リソース・レコードで、ゾーン・パラメータを指定し、ゾーンのシステム(ホスト)に関する情報を定義します。
BIND構成ファイルの例は、/usr/share/doc/bind-version/sample/
を参照してください。
/etc/named.conf
named
のメイン構成ファイルは/etc/named.conf
で、named
の設定およびゾーンの最上位レベルの定義が格納されます。たとえば:
include "/etc/rndc.key"; controls { inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; } }; zone "us.mydom.com" { type master; file "master-data"; allow-update { key "rndc-key"; }; notify yes; }; zone "mydom.com" IN { type slave; file "sec/slave-data"; allow-update { key "rndc-key"; }; masters {10.1.32.1;}; }; zone "2.168.192.in-addr.arpa" IN { type master; file "reverse-192.168.2"; allow-update { key “rndc-key”; }; notify yes; };
include
文により外部ファイルの参照が可能になるため、キー・ハッシュなどの潜在的な機密データを、許可が制限された別のファイルに配置できます。
controls
文は、rndcコマンドをnamed
サーバーで使用するために必要なアクセス情報およびセキュリティ要件を定義します。
-
inet
-
rndcを実行してnamedを制御できるホストを指定します。この例では、rndcはローカル・ホスト(127.0.0.1)で実行する必要があります。
-
keys
-
使用できるキーの名前を指定します。例では、
/etc/rndc.key
に定義されているrndc-key
というキーの使用を指定しています。キーは、named
に基づいて様々なアクションを認証し、リモート・アクセスおよび管理を制御する主要な方法です。
zone
文は、様々なゾーンのサーバーのロールを定義します。
次のゾーン・オプションを使用できます。
-
type
-
このシステムがゾーン
us.mydom.com
のプライマリ・ネーム・サーバーで、mydom.com
のバックアップ・サーバーであることを示します。2.168.192.in-addr.arpa
は、IPアドレスをホスト名に解決するための逆引きゾーンです。逆引き名前解決のリソース・レコードについてを参照してください。 -
file
-
ゾーン・ファイルのパスを
/var/named
から相対的に指定します。us.mydom.com
のゾーン・ファイルは/var/named/master-data
に格納され、mydom.com
の転送されるゾーン・データは/var/named/sec/slave-data
にキャッシュされます。 -
allow-update
-
プライマリ・サーバーからバックアップへのゾーン転送を実行するには、プライマリ・ネーム・サーバーとバックアップ・ネーム・サーバーの両方に共有鍵が存在する必要があることを示します。次の例は、
/etc/rndc.key
のキーのレコードです。key "rndc-key" { algorithm hmac-md5; secret "XQX8NmM41+RfbbSdcqOejg=="; };
キー・ファイルは、rndc-confgen -aコマンドを使用して生成できます。
-
notify
-
ゾーン情報の更新時にバックアップ・ネーム・サーバーに通知するかどうかを指定します。
-
masters
-
バックアップ・ネーム・サーバーのプライマリ・ネーム・サーバーを指定します。
次の例はデフォルトの/etc/named.conf
ファイルからの抜粋で、このファイルはbind
パッケージとともにインストールされ、キャッシュ専用ネーム・サーバーを構成します。
options { listen-on port 53 { 127.0.0.1; }; 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"; allow-query { localnets; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
options
文は、グローバル・サーバー構成オプションを定義し、他の文に対するデフォルトを設定します。
-
listen-on
-
named
が問合せをリスニングするポートです。 -
directory
-
相対パス名が指定された場合のゾーン・ファイルのデフォルト・ディレクトリを指定します。
-
dump-file
-
クラッシュした場合に、
named
がそのキャッシュをダンプする場所を指定します。 -
statistics-file
-
rndc statsコマンドの出力ファイルを指定します。
-
memstatistics-file
-
named
のメモリー使用量統計の出力ファイルを指定します。 -
allow-query
-
サーバーを問い合せることができるIPアドレスを指定します。
localnets
は、ローカルにアタッチされたすべてのネットワークを指定します。 -
recursion
-
ネーム・サーバーが再帰問合せを実行するかどうかを指定します。
-
dnssec-enable
-
セキュアDNS (DNSSEC)を使用するかどうかを指定します。
-
dnssec-validation
-
DNSSEC対応ゾーンからの応答をネーム・サーバーが検証する必要があるかどうかを示します。
-
dnssec-lookaside
-
bindkeys-file
で定義された/etc/named.iscdlv.key
のキーを使用して、DNSSECルックアサイド検証(DLV)を有効にするかどうかを示します。
logging
セクションでは、/var/named/data/named.run
へのメッセージのロギングを有効にします。severity
パラメータはロギング・レベルを制御し、dynamic
の値は、rndc traceコマンドを使用してこのレベルを制御できることを意味します。
zone
セクションでは、ヒント・ゾーンを使用して、ルート・サーバーの初期セットを指定します。このゾーンでは、ルート・ドメイン(.
)のオーソリタティブ・サーバーのIPアドレスについて、named
が/var/named/named.ca
を参照する必要があることを指定します。
詳細は、named.conf(5)
マニュアル・ページ、および/usr/share/doc/bind-version/arm
のBINDドキュメントを参照してください。
ゾーン・ファイルのリソース・レコードについて
ゾーン・ファイルのリソース・レコードには次のフィールドが格納され、レコード・タイプによってはその一部はオプションです。
- 名前
-
ドメイン名またはIPアドレス。
- TTL (有効期間)
-
ネーム・サーバーが、より新しいレコードが使用可能かどうかをチェックせずにレコードをキャッシュする最大時間。
- クラス
-
インターネットの場合は常に
IN
です。 - タイプ
-
レコードのタイプ。たとえば:
A
(アドレス)-
ホストに相当するIPv4アドレス。
AAAA
(アドレス)-
ホストに相当するIPv6アドレス。
CNAME
(正規名)-
ホスト名に相当する別名。
MX
(メール交換)-
ドメインに対応する電子メールの宛先。
NS
(ネーム・サーバー)-
ドメインのオーソリタティブ・ネーム・サーバーの完全修飾ドメイン名。
PTR
(ポインタ)-
名前参照(逆引き名前解決)に対応するためのIPアドレスに相当するホスト名。
SOA
(オーソリティ開始)-
ゾーンに関するオーソリタティブ情報(プライマリ・ネーム・サーバー、ドメイン管理者の電子メール・アドレス、ドメインのシリアル番号など)。
SOA
レコードの後に続く、次のSOA
レコードまでのすべてのレコードは、定義するゾーンに関係します。
- データ
-
A
レコードのIPアドレスやCNAME
またはPTR
レコードのホスト名など、レコードに保存される情報。
次の例は、/var/named/master-data
などの典型的なゾーン・ファイルの内容を示しています。
$TTL 86400 ; 1 day @ IN SOA dns.us.mydom.com. root.us.mydom.com. ( 57 ; serial 28800 ; refresh (8 hours) 7200 ; retry (2 hours) 2419200 ; expire (4 weeks) 86400 ; minimum (1 day) ) IN NS dns.us.mydom.com. dns IN A 192.168.2.1 us.mydom.com IN A 192.168.2.1 svr01 IN A 192.168.2.2 www IN CNAME svr01 host01 IN A 192.168.2.101 host02 IN A 192.168.2.102 host03 IN A 192.168.2.103 ...
セミコロン(;
)の後ろは、行のコメントです。
$TTL
ディレクティブには、ゾーンの全リソース・レコードのデフォルトの有効期間値を定義します。各リソース・レコードには、グローバル設定をオーバーライドする独自の有効期間値を定義できます。
SOA
レコードは必須で、次の情報が含まれます。
-
us.mydom.com
-
ドメインの名前。
-
dns.us.mydom.com.
-
ネーム・サーバーの完全修飾ドメイン名で、ルート・ドメインの後のピリオド(
.
)も指定します。 -
root.us.mydom.com.
-
ドメイン管理者の電子メール・アドレス。
- serial
-
カウンタの増分時に、ゾーン・ファイルをリロードするように
named
に伝達します。 - refresh
-
プライマリ・ネーム・サーバーが、データベースをリフレッシュする必要があることをバックアップ・ネーム・サーバーに通知するまでの経過時間。
- retry
-
リフレッシュに失敗した場合に、バックアップ・ネーム・サーバーが再度リフレッシュを試みるまで待機する時間。
- expire
-
バックアップ・ネーム・サーバーのゾーン・レコードがすでにオーソリタティブでなくなり、問合せの応答を停止するまでに、バックアップ・ネーム・サーバーがリフレッシュを完了する必要がある最長経過時間。
- minimum
-
他のサーバーがこのゾーンから取得した情報をキャッシュする最小時間。
NS
レコードは、ドメインのオーソリタティブ・ネーム・サーバーを宣言します。
各A
レコードには、ドメインのホスト名に相当するIPアドレスを指定します。
CNAME
レコードは、svr01
の別名www
を作成します。
詳細は、/usr/share/doc/bind-version/arm
のBINDドキュメントを参照してください。
逆引き名前解決のリソース・レコードについて
正引き解決では、指定のドメイン名に対応するIPアドレスを返します。逆引き名前解決では、指定のIPアドレスに対応するドメイン名を返します。DNSでは、IPv4およびIPv6に対して特別なin-addr.arpa
およびip6.arpa
ドメインを使用することで逆引き名前解決を実装しています。
ゾーンのin-addr.arpa
またはip6.arpa
ドメインの特性は、通常、/etc/named.conf
で定義されます。たとえば:
zone "2.168.192.in-addr.arpa" IN { type master; file "reverse-192.168.2"; allow-update { key “rndc-key”; }; notify yes; };
ゾーンの名前は、in-addr.arpa
と、その前にあるドメインのIPアドレスのネットワーク部分(ドット付きの4つの部分が逆の順序で記述された)で構成されます。
ネットワークの接頭辞の長さが8の倍数でない場合は、かわりに使用する書式についてRFC 2317を参照してください。
in-addr.arpa
またはip6.arpa
ドメインのPTR
レコードには、IPアドレスのホスト部分に相当するホスト名を定義します。次の例は、/var/named/reverse-192.168.2
ゾーン・ファイルからの抜粋です。
$TTL 86400 ; @ IN SOA dns.us.mydom.com. root.us.mydom.com. ( 57 ; 28800 ; 7200 ; 2419200 ; 86400 ; ) IN NS dns.us.mydom.com. 1 IN PTR dns.us.mydom.com. 1 IN PTR us.mydom.com. 2 IN PTR svr01.us.mydom.com. 101 IN PTR host01.us.mydom.com. 102 IN PTR host02.us.mydom.com. 103 IN PTR host03.us.mydom.com. ...
詳細は、/usr/share/doc/bind-version/arm
のBINDドキュメントを参照してください。
ネーム・サーバーの構成
デフォルトでは、BINDのインストールにより、/etc/named.conf
で提供される構成設定と、そこに格納されたファイルを使用して、キャッシュ専用ネーム・サーバーを構成できます。この手順では、管理者がデフォルトの設定を使用するか、新規のnamed
構成およびゾーン・ファイルを構成すると仮定します。
ネーム・サーバーを構成するには:
-
bindパッケージをインストールします。
sudo yum install bind
-
システムで
NetworkManager
が有効になっている場合は、/etc/sysconfig/network-scripts/ifcfg-interface
ファイルを編集し、次のエントリを追加します。DNS1=127.0.0.1
この行を指定することで、ネットワーク・サービスの開始時に
NetworkManager
によって/etc/resolv.conf
に次のエントリが追加されます。nameserver 127.0.0.1
このエントリは、ローカル・ネーム・サーバーのリゾルバを指します。
NetworkManager
を無効にした場合は、/etc/resolv.conf
を編集してnameserver 127.0.0.1
エントリを挿入します。 -
必要な場合は、
named
構成およびゾーン・ファイルを変更します。 -
システム・ファイアウォールを構成して、ポート53への着信TCP接続、およびポート53での着信UDPデータグラムを可能にします。
sudo firewall-cmd --zone=zone --add-port=53/tcp --add-port=53/udp sudo firewall-cmd --permanent --zone=zone --add-port=53/tcp --add-port=53/udp
-
network
サービスを再起動し、named
サービスを再起動して、システムの再起動後にnamed
が開始するように構成します。sudo systemctl restart network sudo systemctl start named sudo systemctl enable named
名前サービスの管理
rndcコマンドを使用すると、ローカルで、またはリモート・マシンから(/etc/named.conf
ファイルのcontrols
セクションで許可されている場合)、named
サービスを管理できます。サービスへの不正なアクセスを防止するために、選択されたポート(デフォルトではポート953)でリスニングするようにrndcを構成して、namedとrndcの両方に同じキーへのアクセス権を付与する必要があります。適切なキーを生成するには、rndc-confgenコマンドを使用します。
# rndc-confgen -a wrote key file "/etc/rndc.key"
root
のみがファイルの読取りを実行できるようにするには:
# chmod o-rwx /etc/rndc.key
named
サービスのステータスをチェックするには:
# rndc status number of zones: 3 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/1000 tcp clients: 0/100 server is up and running
named
構成ファイルまたはゾーン・ファイルを変更した場合は、rndc reloadを使用して、ファイルをリロードするようにnamed
に指示します。
# rndc reload server reload successful
詳細は、named(8)
、rndc(8)
およびrndc-confgen(8)
の各マニュアル・ページを参照してください。
DNSルックアップの実行
DNSルックアップの実行には、hostユーティリティを使用することをお薦めします。引数を指定しないhostで、コマンドライン引数とオプションの要約が表示されます。たとえば、host01
のIPアドレスを参照します:
host host01
IPアドレスに相当するドメイン名の逆参照を実行します。
host 192.168.2.101
DNSに対してドメインに相当するIPアドレスを問い合せます。
host dns.us.mydoc.com
-vおよび-tのオプションを使用すると、特定のタイプのレコードに関する詳細な情報が表示されます。
host -v -t MX www.mydom.com
Trying "www.mydom.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49643 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.mydom.com. IN MX ;; ANSWER SECTION: www.mydom.com. 135 IN CNAME www.mydom.com.acme.net. www.mydom.com.acme.net. 1240 IN CNAME d4077.c.miscacme.net. ;; AUTHORITY SECTION: c.miscacme.net. 2000 IN SOA m0e.miscacme.net. hostmaster.misc.com. ... Received 163 bytes from 10.0.0.1#53 in 40 ms
-aオプション(-v -t ANYと同等)を使用すると、ゾーンで使用可能なすべてのレコードが表示されます。
host -a www.us.mydom.com
Trying "www.us.mydom.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40030 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.us.mydom.com. IN ANY ;; ANSWER SECTION: www.us.mydom.com. 263 IN CNAME www.us.mydom.acme.net. Received 72 bytes from 10.0.0.1#53 in 32 ms
詳細は、host(1)
マニュアル・ページを参照してください。