手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 BIND 外部 DNS – 公開ゾーンと権威 DNS の設計

Ubuntu 22.04 で BIND を使い、外部公開向け DNS サーバーを構築する手順です。外部 DNS は、インターネットから参照される公開レコードに対して権威 DNS として応答する役割を持ちます。

この記事では、外部向け BIND を再帰問い合わせしない権威 DNS として構成します。内部 DNS のようにクライアントの名前解決を肩代わりする用途とは分けて考えます。

参考書籍
参考書籍

DNS がよくわかる教科書 第 2 版

DNS の基本、名前解決、権威 DNS、キャッシュ DNS、DNSSEC などを体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

関連する DNS 記事

内部 DNS、外部 DNS、権威 DNS は似ていますが責務が違います。名前解決をどこで完結させるのか、どのゾーンを誰に公開するのかを分けて読むと整理しやすくなります。

外部 DNS の位置づけ

項目内部 DNS外部 DNS
主な用途内部ホストと内部サービスの名前解決公開ドメインの権威応答
再帰問い合わせ内部クライアント向けに許可することがある基本的に無効化する
公開範囲内部ネットワークインターネット
代表レコード内部 A / AAAA / PTRNS / A / AAAA / MX / TXT

BIND をインストールする

sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y bind9 bind9-utils dnsutils

再帰問い合わせを無効化する

外部公開 DNS では、open resolver にならないことが重要です。権威 DNS として自分のゾーンだけに答える構成にします。

sudo tee /etc/bind/named.conf.options <<'EOF'
options {
    directory "/var/cache/bind";

    recursion no;
    allow-recursion { none; };
    allow-query { any; };

    listen-on { any; };
    listen-on-v6 { any; };

    dnssec-validation auto;
};
EOF

公開ゾーンを定義する

sudo tee /etc/bind/named.conf.local <<'EOF'
zone "example.com" {
    type primary;
    file "/etc/bind/zones/db.example.com";
    allow-transfer { none; };
};
EOF

sudo install -d -m 0755 /etc/bind/zones

公開ゾーンファイルを作成する

sudo tee /etc/bind/zones/db.example.com <<'EOF'
$TTL 3600
@   IN SOA ns1.example.com. admin.example.com. (
        2026060801
        3600
        900
        604800
        3600 )

    IN NS  ns1.example.com.
    IN MX  10 mail.example.com.

ns1  IN A     203.0.113.10
www  IN A     203.0.113.20
mail IN A     203.0.113.30
@    IN TXT   "v=spf1 mx -all"
EOF

設定を検査する

sudo named-checkconf
sudo named-checkzone example.com /etc/bind/zones/db.example.com
sudo systemctl restart bind9
sudo systemctl status bind9 --no-pager

外部応答を確認する

dig @127.0.0.1 example.com SOA
dig @127.0.0.1 example.com NS
dig @127.0.0.1 www.example.com A
dig @127.0.0.1 example.net A

自分が権威を持たない example.net のような名前に対して再帰的に答えないことを確認します。外部公開 DNS が再帰問い合わせに答えると、踏み台や増幅攻撃に悪用される可能性があります。

運用上の注意

  • 外部 DNS では recursion を無効化する
  • allow-transfer を必要な secondary のみに限定する
  • 公開 IP、MX、TXT レコードの意味を確認してから公開する
  • ゾーン更新時は serial を増やす
  • 内部向けレコードを外部ゾーンへ混ぜない

まとめ

Ubuntu 22.04 の BIND 外部 DNS は、公開ドメインに対する権威応答を行うサーバーとして構成します。内部 DNS と違い、再帰問い合わせを無効化し、公開してよいレコードだけをゾーンに含めることが重要です。

Ubuntu 22.04 BIND 外部 DNS – 公開ゾーンと権威 DNS の設計

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る