DNSサーバ BINDの設定(2)

ALL
スポンサーリンク

前回 に続いて、今回はゾーンファイルの設定です。

以下のシナリオでの設定例です。

  • 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

ゾーンファイルの設定

今回の設定例では、ゾーンファイルは /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のロギング機能

コメント