1.5.2. BIND プライマリーサーバーでフォワードゾーンを設定する
ドメイン名を IP アドレスやその他の情報にマッピングできるように、BIND プライマリーサーバーに正引きゾーンを設定します。たとえば、example.com ドメインの責任者であれば、BIND で正引きゾーンを設定して、www.example.com などの名前を解決することができます。
前提条件
-
サーバーに
bindパッケージをインストールした。 - サーバーをキャッシュネームサーバーとして動作するように設定した。
-
namedまたはnamed-chrootサービスが実行されている。
手順
/etc/named.confファイルにゾーン定義を追加します。zone "example.com" { type master; file "example.com.zone"; allow-query { any; }; allow-transfer { none; }; };これらの設定により、次が定義されます。
-
このサーバーは、
example.comゾーンのプライマリーサーバー (type master) です。 -
/var/named/example.com.zoneファイルはゾーンファイルです。この例のように相対パスを設定すると、このパスは、optionsステートメントのdirectoryに設定したディレクトリーからの相対パスになります。 - どのホストもこのゾーンにクエリーを実行できます。ただし、IP アドレス範囲や BIND アクセス制御リスト (ACL) のニックネームを指定することで、アクセスを制限することができます。
- どのホストもゾーンを転送できません。ゾーン転送を許可するのは、セカンダリーサーバーをセットアップする際に限られ、セカンダリーサーバーの IP アドレスに対してのみ許可します。
-
このサーバーは、
/etc/named.confファイルの構文を確認します。# named-checkconfコマンドが出力を表示しない場合は、構文に間違いがありません。
たとえば、次の内容で
/var/named/example.com.zoneファイルを作成します。$TTL 8h @ IN SOA ns1.example.com. hostmaster.example.com. ( 2022070601 ; serial number 1d ; refresh period 3h ; retry period 3d ; expire time 3h ) ; minimum TTL IN NS ns1.example.com. IN MX 10 mail.example.com. www IN A 192.0.2.30 www IN AAAA 2001:db8:1::30 ns1 IN A 192.0.2.1 ns1 IN AAAA 2001:db8:1::1 mail IN A 192.0.2.20 mail IN AAAA 2001:db8:1::20このゾーンファイル:
-
リソースレコードのデフォルトの有効期限 (TTL) 値を 8 時間に設定します。時間の
hなどの時間接尾辞がない場合、BIND は値を秒として解釈します。 - 必要な Start of Authority (SOA) リソースレコードが含まれており、ゾーンに関する詳細が記載されています。
-
このゾーンの権威 DNS サーバーとして
ns1.example.comを設定します。ゾーンを機能させるには、少なくとも 1 つのネームサーバー (NS) レコードが必要です。ただし、RFC 1912 に準拠するには、少なくとも 2 つのネームサーバーが必要です。 -
example.comドメインのメールエクスチェンジャー (MX) としてmail.example.comを設定します。ホスト名の前に付いている数値はレコードの優先度です。値が小さいエントリーほど優先度が高くなります。 -
www.example.com、mail.example.com、およびns1.example.comの IPv4 アドレスおよび IPv6 アドレスを設定します。
-
リソースレコードのデフォルトの有効期限 (TTL) 値を 8 時間に設定します。時間の
namedグループだけがそれを読み取ることができるように、ゾーンファイルに安全なアクセス許可を設定します。# chown root:named /var/named/example.com.zone # chmod 640 /var/named/example.com.zone/var/named/example.com.zoneファイルの構文を確認します。# named-checkzone example.com /var/named/example.com.zone zone example.com/IN: loaded serial 2022070601 OKBIND をリロードします。
# systemctl reload namedchange-root 環境で BIND を実行する場合は、
systemctl reload named-chrootコマンドを使用してサービスをリロードします。
検証
example.comゾーンからさまざまなレコードをクエリーし、出力がゾーンファイルで設定したレコードと一致することを確認します。# dig +short @localhost AAAA www.example.com2001:db8:1::30# dig +short @localhost NS example.comns1.example.com# dig +short @localhost A ns1.example.com192.0.2.1この例では、BIND が同じホスト上で稼働しており、
localhostインターフェイスでクエリーに応答することを前提としています。