1.5. BIND DNS サーバーでのゾーンの設定
DNS ゾーンは、ドメインスペース内の特定のサブツリーのリソースレコードを含むデータベースです。たとえば、example.com ドメインを担当している場合は、BIND でそのゾーンを設定できます。その結果、クライアントは www.example.com をこのゾーンで設定された IP アドレスに解決できます。
1.5.1. ゾーンファイルの SOA レコード リンクのコピーリンクがクリップボードにコピーされました!
SOA (Start of Authority) レコードは、DNS ゾーンで必要なレコードです。このレコードは、たとえば、複数の DNS サーバーがゾーンだけでなく DNS リゾルバーに対しても権限を持っている場合に重要です。
BIND の SOA レコードの構文は次のとおりです。
name class type mname rname serial refresh retry expire minimum
name class type mname rname serial refresh retry expire minimum
読みやすくするために、管理者は通常、ゾーンファイル内のレコードを、セミコロン (;) で始まるコメントを使用して複数の行に分割します。SOA レコードを分割する場合は、括弧でレコードをまとめることに注意してください。
完全修飾ドメイン名 (FQDN) の末尾にあるドットに注意してください。FQDN は、ドットで区切られた複数のドメインラベルで構成されます。DNS ルートには空のラベルがあるため、FQDN はドットで終わります。したがって、BIND はゾーン名を末尾のドットなしで名前に追加します。末尾にドットがないホスト名 (例: ns1.example.com) は、ns1.example.com.example.com. に展開されます。これは、プライマリーネームサーバーの正しいアドレスではありません。
SOA レコードのフィールドは次のとおりです。
-
name: ゾーンの名前 (つまりorigin)。このフィールドを@に設定すると、BIND はそれを/etc/named.confで定義されたゾーン名に展開します。 -
class: SOA レコードでは、このフィールドを常に Internet (IN) に設定する必要があります。 -
type: SOA レコードでは、このフィールドを常にSOAに設定する必要があります。 -
mname(マスター名): このゾーンのプライマリーネームサーバーのホスト名。 -
rname(責任者名): このゾーンの責任者の電子メールアドレス。形式が異なりますのでご注意ください。アットマーク (@) をドット (.) に置き換える必要があります。 serial: このゾーンファイルのバージョン番号。セカンダリーネームサーバーは、プライマリーサーバーのシリアル番号の方が大きい場合にのみ、ゾーンのコピーを更新します。形式は任意の数値にすることができます。一般的に使用される形式は
<year><month><day><two-digit-number>です。この形式を使用すると、理論的には、ゾーンファイルを 1 日に 100 回まで変更できます。-
refresh: ゾーンが更新された場合は、プライマリーサーバーをチェックする前にセカンダリーサーバーが待機する時間。 -
retry: 試行が失敗した後、セカンダリーサーバーがプライマリーサーバーへのクエリーを再試行するまでの時間。 -
expire: 以前の試行がすべて失敗した場合に、セカンダリーサーバーがプライマリーサーバーへのクエリーを停止した後の時間。 -
minimum: RFC 2308 は、このフィールドの意味を負のキャッシュ時間に変更しました。準拠リゾルバーは、NXDOMAIN名エラーをキャッシュする期間を決定するために使用します。
refresh、retry、expire、および minimum フィールドの数値は、時間を秒単位で定義します。ただし、読みやすくするために、時間の接尾辞 (m は分、h は時間、d は日など) を使用してください。たとえば、3h は 3 時間を表します。
1.5.2. BIND プライマリーサーバーでの正引きゾーンの設定 リンクのコピーリンクがクリップボードにコピーされました!
正引きゾーンは、名前を IP アドレスやその他の情報にマップします。たとえば、ドメイン example.com を担当している場合は、BIND で転送ゾーンを設定して、www.example.com などの名前を解決できます。
前提条件
- BIND は、たとえばキャッシングネームサーバーとしてすでに設定されています。
-
namedまたはnamed-chrootサービスが実行しています。
手順
/etc/named.confファイルにゾーン定義を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらの設定により、次が定義されます。
-
このサーバーは、
example.comゾーンのプライマリーサーバー (type master) です。 -
/var/named/example.com.zoneファイルはゾーンファイルです。この例のように相対パスを設定すると、このパスは、optionsステートメントのdirectoryに設定したディレクトリーからの相対パスになります。 - どのホストもこのゾーンにクエリーを実行できます。または、IP 範囲または BIND アクセス制御リスト (ACL) のニックネームを指定して、アクセスを制限します。
- どのホストもゾーンを転送できません。ゾーン転送を許可するのは、セカンダリーサーバーをセットアップする際に限られ、セカンダリーサーバーの IP アドレスに対してのみ許可します。
-
このサーバーは、
/etc/named.confファイルの構文を確認します。named-checkconf
# named-checkconfCopy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが出力を表示しない場合は、構文に間違いがありません。
たとえば、次の内容で
/var/named/example.com.zoneファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このゾーンファイル:
-
リソースレコードのデフォルトの有効期限 (TTL) 値を 8 時間に設定します。時間の
hなどの時間接尾辞がない場合、BIND は値を秒として解釈します。 - ゾーンに関する詳細を含む、必要な 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
# chown root:named /var/named/example.com.zone # chmod 640 /var/named/example.com.zoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/named/example.com.zoneファイルの構文を確認します。named-checkzone example.com /var/named/example.com.zone
# named-checkzone example.com /var/named/example.com.zone zone example.com/IN: loaded serial 2022070601 OKCopy to Clipboard Copied! Toggle word wrap Toggle overflow BIND をリロードします。
systemctl reload named
# systemctl reload namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow change-root 環境で BIND を実行する場合は、
systemctl reload named-chrootコマンドを使用してサービスをリロードします。
検証
example.comゾーンからさまざまなレコードをクエリーし、出力がゾーンファイルで設定したレコードと一致することを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、BIND が同じホストで実行し、
localhostインターフェイスでクエリーに応答することを前提としています。
1.5.3. BIND プライマリーサーバーでの逆引きゾーンの設定 リンクのコピーリンクがクリップボードにコピーされました!
逆ゾーンは、IP アドレスを名前にマップします。たとえば、IP 範囲 192.0.2.0/24 を担当している場合は、BIND で逆引きゾーンを設定して、この範囲の IP アドレスをホスト名に解決できます。
クラスフルネットワーク全体の逆引きゾーンを作成する場合は、それに応じてゾーンに名前を付けます。たとえば、クラス C ネットワーク 192.0.2.0/24 の場合は、ゾーンの名前が 2.0.192.in-addr.arpa です。192.0.2.0/28 など、異なるネットワークサイズの逆引きゾーンを作成する場合は、ゾーンの名前が 28-2.0.192.in-addr.arpa です。
前提条件
- BIND は、たとえばキャッシングネームサーバーとしてすでに設定されています。
-
namedまたはnamed-chrootサービスが実行しています。
手順
/etc/named.confファイルにゾーン定義を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらの設定により、次が定義されます。
-
2.0.192.in-addr.arpa逆引きゾーンのプライマリーサーバー (type master) としてのこのサーバー。 -
/var/named/2.0.192.in-addr.arpa.zoneファイルはゾーンファイルです。この例のように相対パスを設定すると、このパスは、optionsステートメントのdirectoryに設定したディレクトリーからの相対パスになります。 - どのホストもこのゾーンにクエリーを実行できます。または、IP 範囲または BIND アクセス制御リスト (ACL) のニックネームを指定して、アクセスを制限します。
- どのホストもゾーンを転送できません。ゾーン転送を許可するのは、セカンダリーサーバーをセットアップする際に限られ、セカンダリーサーバーの IP アドレスに対してのみ許可します。
-
/etc/named.confファイルの構文を確認します。named-checkconf
# named-checkconfCopy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが出力を表示しない場合は、構文に間違いがありません。
たとえば、次の内容で
/var/named/2.0.192.in-addr.arpa.zoneファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このゾーンファイル:
-
リソースレコードのデフォルトの有効期限 (TTL) 値を 8 時間に設定します。時間の
hなどの時間接尾辞がない場合、BIND は値を秒として解釈します。 - ゾーンに関する詳細を含む、必要な SOA リソースレコードが含まれています。
-
ns1.example.comをこの逆引きゾーンの権威 DNS サーバーとして設定します。ゾーンを機能させるには、少なくとも 1 つのネームサーバー (NS) レコードが必要です。ただし、RFC 1912 に準拠するには、少なくとも 2 つのネームサーバーが必要です。 -
192.0.2.1および192.0.2.30アドレスのポインター (PTR) レコードを設定します。
-
リソースレコードのデフォルトの有効期限 (TTL) 値を 8 時間に設定します。時間の
namedグループのみがそれを読み取ることができるように、ゾーンファイルに安全なアクセス許可を設定します。chown root:named /var/named/2.0.192.in-addr.arpa.zone chmod 640 /var/named/2.0.192.in-addr.arpa.zone
# chown root:named /var/named/2.0.192.in-addr.arpa.zone # chmod 640 /var/named/2.0.192.in-addr.arpa.zoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/named/2.0.192.in-addr.arpa.zoneファイルの構文を確認します。named-checkzone 2.0.192.in-addr.arpa /var/named/2.0.192.in-addr.arpa.zone
# named-checkzone 2.0.192.in-addr.arpa /var/named/2.0.192.in-addr.arpa.zone zone 2.0.192.in-addr.arpa/IN: loaded serial 2022070601 OKCopy to Clipboard Copied! Toggle word wrap Toggle overflow BIND をリロードします。
systemctl reload named
# systemctl reload namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow change-root 環境で BIND を実行する場合は、
systemctl reload named-chrootコマンドを使用してサービスをリロードします。
検証
逆引きゾーンからさまざまなレコードをクエリーし、出力がゾーンファイルで設定したレコードと一致することを確認します。
dig +short @localhost -x 192.0.2.1 dig +short @localhost -x 192.0.2.30
# dig +short @localhost -x 192.0.2.1 ns1.example.com. # dig +short @localhost -x 192.0.2.30 www.example.com.Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、BIND が同じホストで実行し、
localhostインターフェイスでクエリーに応答することを前提としています。
1.5.4. BIND ゾーンファイルの更新 リンクのコピーリンクがクリップボードにコピーされました!
サーバーの IP アドレスが変更された場合など、特定の状況では、ゾーンファイルを更新する必要があります。複数の DNS サーバーが 1 つのゾーンを担ってる場合は、この手順をプライマリーサーバーでのみ実行してください。ゾーンのコピーを保存する他の DNS サーバーは、ゾーン転送を通じて更新を受け取ります。
前提条件
- ゾーンが設定されました。
-
namedまたはnamed-chrootサービスが実行しています。
手順
オプション:
/etc/named.confファイル内のゾーンファイルへのパスを特定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ゾーンの定義の
fileステートメントで、ゾーンファイルへのパスを見つけます。相対パスは、optionsステートメントのdirectoryに設定されたディレクトリーからの相対パスです。ゾーンファイルを編集します。
- 必要な変更を行います。
SOA (Start of Authority) レコードのシリアル番号を増やします。
重要シリアル番号が以前の値以下の場合、セカンダリーサーバーはゾーンのコピーを更新しません。
ゾーンファイルの構文を確認します。
named-checkzone example.com /var/named/example.com.zone
# named-checkzone example.com /var/named/example.com.zone zone example.com/IN: loaded serial 2022062802 OKCopy to Clipboard Copied! Toggle word wrap Toggle overflow BIND をリロードします。
systemctl reload named
# systemctl reload namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow change-root 環境で BIND を実行する場合は、
systemctl reload named-chrootコマンドを使用してサービスをリロードします。
検証
追加、変更、または削除したレコードを照会します。たとえば、次のようになります。
dig +short @localhost A ns2.example.com
# dig +short @localhost A ns2.example.com 192.0.2.2Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、BIND が同じホストで実行し、
localhostインターフェイスでクエリーに応答することを前提としています。
1.5.5. 自動鍵生成およびゾーン保守機能を使用した DNSSEC ゾーン署名 リンクのコピーリンクがクリップボードにコピーされました!
DNSSEC (Domain Name System Security Extensions) でゾーンに署名して、認証およびデータの整合性を確保できます。このようなゾーンには、追加のリソースレコードが含まれます。クライアントはそれらを使用して、ゾーン情報の信頼性を検証できます。
ゾーンの DNSSEC ポリシー機能を有効にすると、BIND は次のアクションを自動的に実行します。
- キーを作成します。
- ゾーンに署名します
- 鍵の再署名や定期的な交換など、ゾーンを維持します。
外部 DNS サーバーがゾーンの信頼性を検証できるようにするには、ゾーンの公開キーを親ゾーンに追加する必要があります。これを行う方法の詳細は、ドメインプロバイダーまたはレジストリーにお問い合わせください。
この手順では、BIND に組み込まれている default の DNSSEC ポリシーを使用します。このポリシーは、単一の ECDSAP256SHA 鍵署名を使用します。または、独自のポリシーを作成して、カスタムキー、アルゴリズム、およびタイミングを使用します。
前提条件
-
bindがインストールされている。 - DNSSEC を有効にするゾーンが設定されている。
-
namedまたはnamed-chrootサービスが実行しています。 - サーバーは時刻をタイムサーバーと同期します。DNSSEC 検証では、正確なシステム時刻が重要です。
手順
/etc/named.confファイルを編集し、DNSSEC を有効にするゾーンにdnssec-policy default;を追加します。zone "example.com" { ... dnssec-policy default; };zone "example.com" { ... dnssec-policy default; };Copy to Clipboard Copied! Toggle word wrap Toggle overflow BIND をリロードします。
systemctl reload named
# systemctl reload namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow change-root 環境で BIND を実行する場合は、
systemctl reload named-chrootコマンドを使用してサービスをリロードします。BIND は公開鍵を
/var/named/K<zone_name>.+<algorithm>+<key_ID>.keyファイルに保存します。このファイルを使用して、親ゾーンが必要とする形式でゾーンの公開鍵を表示します。DS レコード形式:
dnssec-dsfromkey /var/named/Kexample.com.+013+61141.key
# dnssec-dsfromkey /var/named/Kexample.com.+013+61141.key example.com. IN DS 61141 13 2 3E184188CF6D2521EDFDC3F07CFEE8D0195AACBD85E68BAE0620F638B4B1B027Copy to Clipboard Copied! Toggle word wrap Toggle overflow DNSKEY 形式:
grep DNSKEY /var/named/Kexample.com.+013+61141.key
# grep DNSKEY /var/named/Kexample.com.+013+61141.key example.com. 3600 IN DNSKEY 257 3 13 sjzT3jNEp120aSO4mPEHHSkReHUf7AABNnT8hNRTzD5cKMQSjDJin2I3 5CaKVcWO1pm+HltxUEt+X9dfp8OZkg==Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- ゾーンの公開鍵を親ゾーンに追加するように要求します。これを行う方法の詳細は、ドメインプロバイダーまたはレジストリーにお問い合わせください。
検証
DNSSEC 署名を有効にしたゾーンのレコードについて、独自の DNS サーバーにクエリーを実行します。
dig +dnssec +short @localhost A www.example.com
# dig +dnssec +short @localhost A www.example.com 192.0.2.30 A 13 3 28800 20220718081258 20220705120353 61141 example.com. e7Cfh6GuOBMAWsgsHSVTPh+JJSOI/Y6zctzIuqIU1JqEgOOAfL/Qz474 M0sgi54m1Kmnr2ANBKJN9uvOs5eXYw==Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、BIND が同じホストで実行し、
localhostインターフェイスでクエリーに応答することを前提としています。公開鍵が親ゾーンに追加され、他のサーバーに伝播されたら、サーバーが署名付きゾーンへのクエリーで認証済みデータ (
ad) フラグを設定することを確認します。dig @localhost example.com +dnssec
# dig @localhost example.com +dnssec ... ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow