前回 に続いて、今回はゾーンファイルの設定です。
以下のシナリオでの設定例です。
- DNSはプライマリDNSサーバのみ立て、セカンダリは立てません。
- DNSサーバが管理するドメインは、test.example.com とします。
- 管理するホストはネットワークアドレス 10.0.2.0/24 上の、次のものとします。
- DNSサーバ(今回設定するサーバ)
IPアドレス:10.0.2.15、FQDN:ns.test.example.com - mailサーバ
IPアドレス10.0.2.10、FQDN:mail.test.example.com - その他
IPアドレス:10.0.2.16、FQDN:pc1.test.example.com
IPアドレス:10.0.2.17、FQDN:pc2.test.example.com
- DNSサーバ(今回設定するサーバ)
ゾーンファイルの設定
今回の設定例では、ゾーンファイルは /var/named/chroot/var/named/ 下に置きます。
正引きゾーンファイルの設定
ドメイン名に対する(IPv4の)IPアドレスを求めることを正引きと言います。
その設定の記述です。
/var/named/chroot/var/named/test.example.com.zone
$TTL 86400 @ IN SOA ns root ( 2015061903 ; Serial 10800 ; Refresh 3600 ; Retry 3600000 ; Default TTL 86400 ) ; Expire @ IN NS ns ns IN A 10.0.2.15 @ IN MX 10 mail mail IN A 10.0.2.10 pc1 IN A 10.0.2.16 pc2 IN A 10.0.2.17
$TTL 86400
このファイルの以降で記述される各レコードの生存期間を秒単位で指定します。
この時間が経過するまでは、DNS問い合わせに対する応答で、キャッシュされた各レコードの情報が使用されます。
つまり、ファイルの設定変更後、TTL時間が経過するまでは、変更が反映されない可能性があります。
@ IN SOA ns root
次の順番で記述します。
ゾーン名 IN SOA プライマリーDNSサーバ ゾーンの責任者のメールアドレス
ゾーン名に @ を記述すると、ゾーン名を示します。
ここでは、named.conf の「zone “test.example.com”」の記述により、test.example.com となります。
プライマリーDNSサーバは自分自身を指定しておきます。
ここでは ns と指定されていますが、後ほど説明します。
ゾーンの責任者のメールアドレスは、今回の例ではDNSサーバの root です。
2015061913 ; Serial
10800 ; Refresh
3600 ; Retry
3600000 ; Default TTL
86400 ) ; Expire
Serial
符号なし32bit値(0~4294967295)で指定します。
このファイルの内容を変更する度に、この値を増やします。
BINDはこの値が増えた際に、設定を反映させます。値が減少するように記述した場合は、反映されないので注意して下さい。
慣例的に、年月日と連番を YYYYMMDDnn のように指定します。
Refresh , Retry , Default TTL , Expire
これらは、セカンダリネームサーバで使用される情報です。
今回の例では、セカンダリネームサーバを立てないので、値については特に説明しません。
@ IN NS ns
ns IN A 10.0.2.15
NS で NSレコード(DNSサーバ名を示すレコード)であることを示します。
@ はゾーン名を示し、今回の例では test.example.com です。
test.example.comドメインのDNSサーバは ns であることを示しています。
ns は2行目により 10.0.2.15 のホストであることが示され、これは自分自身になります。
(先述のシナリオで、DNSサーバ(自分)は 10.0.2.15 としています)
@ IN MX 10 mail
MX で MXレコード(メールサーバを示すレコード)であることを示します。
ドメインのメールサーバを指定します。
ドメイン名 IN MX 優先度 メールサーバ名 の順で記述します。
ドメイン名の箇所の @ はゾーン名を示し、今回の例では test.example.com です。
今回の例では、ドメイン(メールアドレスの@より右側)が test.example.com のメールサーバは、ホスト mail であることを示しています。
なお、後述しますが、以降の行で、ホスト mail のIPアドレスを記述しています。
(先述のシナリオで、メールサーバは 10.0.2.10 としています)
10 の部分は優先度です。10刻みで指定し、少ないほど優先度が高くなります。
メールサーバが複数ある場合は、複数 MXレコードを記述できます。
クライアントからメールサーバの問い合わせがされた場合は、優先度の高いメールサーバの情報を回答します。
但し、メールサーバのレスポンスが無い場合は、次に優先度が高いメールサーバの情報が回答されます。
mail IN A 10.0.2.10
pc1 IN A 10.0.2.16
pc2 IN A 10.0.2.17
A で Aレコード(ホスト名に対する(IPv4の)IPアドレスを示すレコード)であることを示します。
ホスト名とIPアドレスを記述します。
今回の設定例では、ゾーン test.example.com なので、ここで記述したホストのドメイン名は、ホスト名.test.example.com になります。
逆引きゾーンファイルの設定
(IPv4の)IPアドレスからドメイン名を求めることを逆引きと言います。
その設定の記述です。
/var/named/chroot/var/named/test.example.com.rev
$TTL 86400 @ IN SOA ns root ( 2015061903 ; Serial 10800 ; Refresh 3600 ; Retry 3600000 ; Default TTL 86400 ) ; Expire @ IN NS ns.test.example.com. 10 IN PTR mail.test.example.com. 15 IN PTR ns.test.example.com. 16 IN PTR pc1.test.example.com. 17 IN PTR pc2.test.example.com.
$TTL 86400
このファイルの以降で記述される各レコードの生存期間を秒単位で指定します。
この時間が経過するまでは、DNS問い合わせに対する応答で、キャッシュされた各レコードの情報が使用されます。
つまり、ファイルの設定変更後、TTL時間が経過するまでは、変更が反映されない可能性があります。
@ IN SOA ns root
次の順番で記述します。
ゾーン名 IN SOA プライマリーDNSサーバ ゾーンの責任者のメールアドレス
ゾーン名に @ を記述すると、ゾーン名を示します。
ここでは、named.conf の「zone “2.0.10.in-addr.arpa”」の記述により、2.0.10.in-addr.arpa となります。
プライマリーDNSサーバは自分自身を指定しておきます。
ここでは ns と指定されていますが、後ほど説明します。
ゾーンの責任者のメールアドレスは、今回の例ではDNSサーバの root です。
2015106193 ; Serial
10800 ; Refresh
3600 ; Retry
3600000 ; Default TTL
86400 ) ; Expire
Serial
符号なし32bit値(0~4294967295)で指定します。
このファイルの内容を変更する度に、この値を増やします。
BINDはこの値が増えた際に、設定を反映させます。値が減少するように記述した場合は、反映されないので注意して下さい。
慣例的に、年月日と連番を YYYYMMDDnn のように指定します。
Refresh , Retry , Default TTL , Expire
これらは、セカンダリネームサーバで使用される情報です。
今回の例では、セカンダリネームサーバを立てないので、値については特に説明しません。
@ IN NS ns.test.example.com.
NS で NSレコード(DNSサーバ名を示すレコード)であることを示します。
@ はゾーン名を示し、今回の例では 2.0.10.in-addr.arpa です。
2.0.10.in-addr.arpa ゾーンのDNSサーバは ns.test.example.com. であることを示しています。
FQDNで示す場合は、このように末尾に.(ドット)を付加します。
末尾の .(ドット)が無いと、ゾーン名が補完され、ns.test.example.com.2.0.10.in-addr.arpa のようにされてしまいます。
なお、後述しますが、以降の行で、ns は 10.0.2.15 のホストであることが示され、これは自分自身になります。
(先述のシナリオで、DNSサーバ(自分)は 10.0.2.15 としています)
10 IN PTR mail.test.example.com.
15 IN PTR ns.test.example.com.
16 IN PTR pc1.test.example.com.
17 IN PTR pc2.test.example.com.
PTR で PTRレコード((IPv4の)IPアドレスに対するホスト名を示すレコード)であることを示します。
IPアドレスとホスト名を記述します。
ここでは 2.0.10.in-addr.arpa ゾーンの設定なので、IPアドレスは 10.0.2.X の Xに該当する値(第4オクテット)のみを記述します。
またホスト名はFQDNで示し、このように末尾に.(ドット)を付加します。
末尾に .(ドット)が無いと、ゾーン名が補完され、pc1.test.example.com.2.0.10.in-addr.arpa のようにされてしまいます。
今回の設定例では、ゾーン 2.0.10.in-addr.arpa なので、ここで記述したホストのIPアドレスは 10.0.2.X になります。
BIND の起動
まず起動前に設定ファイルのチェックを行います。
下記で紹介した「bind」の箇所に従ってチェックします。
各種サーバの設定ファイルの書式チェックの方法 パソコン鳥のブログ
次のコマンドでチェックします。
named-checkconf -t /var/named/chroot /etc/named.conf
何も出力がなければOKです。
named-checkzone test.example.com /var/named/chroot/var/named/test.example.com.zone
出力の最後に「OK」が出ることを確認します。
named-checkzone 2.0.10.in-addr.arpa /var/named/chroot/var/named/test.example.com.rev
出力の最後に「OK」が出ることを確認します。
チェック後、BIND を起動します。
CentOS6 /etc/init.d/named restart CentOS7 systemctl restart named-chroot
エラーになった場合は、SELinux が無効になっていないかも知れません。
前回の「インストール」の箇所を参照して下さい。
これでDNSサーバとして稼働開始です。
参考
DNSサーバー構築(BIND) – CentOSで自宅サーバー構築
What’s the difference between allow-query-cache and allow-recursion? | Internet Systems Consortium Knowledge Base
実用 BIND 9で作るDNSサーバ(2):すべての基礎、マスター・ゾーンサーバの設定 (1/3) – @IT
実用 BIND 9で作るDNSサーバ(13):次世代のセキュリティ拡張DNSSECをBIND 9で実現 (3/3) – @IT
省略形ゾーンファイル : お父さんのためのDNS講座
強いBIND DNSサーバを構築する 第五回 SOAレコードとゾーン転送 | ユーロテック情報システム販売株式会社
Chapter 6. BIND 9 Configuration Reference
BIND 9 Manual Pages (DNS, BIND Nameserver, DHCP, LDAP and Directory Services)
インターネット10分講座:DNSキャッシュ – JPNIC
RFC1315
BINDのロギング機能
コメント