Ubuntu 22.04 で BIND を使い、外部公開向け DNS サーバーを構築する手順です。外部 DNS は、インターネットから参照される公開レコードに対して権威 DNS として応答する役割を持ちます。
この記事では、外部向け BIND を再帰問い合わせしない権威 DNS として構成します。内部 DNS のようにクライアントの名前解決を肩代わりする用途とは分けて考えます。
参考書籍
参考書籍
DNS がよくわかる教科書 第 2 版
DNS の基本、名前解決、権威 DNS、キャッシュ DNS、DNSSEC などを体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
関連する DNS 記事
内部 DNS、外部 DNS、権威 DNS は似ていますが責務が違います。名前解決をどこで完結させるのか、どのゾーンを誰に公開するのかを分けて読むと整理しやすくなります。
- Ubuntu 22.04 BIND 内部用 DNS サーバー構築
- Ubuntu 22.04 BIND 外部用 DNS サーバー構築
- Ubuntu 22.04 PowerDNS 権威 DNS サーバー構築
外部 DNS の位置づけ
| 項目 | 内部 DNS | 外部 DNS |
|---|---|---|
| 主な用途 | 内部ホストと内部サービスの名前解決 | 公開ドメインの権威応答 |
| 再帰問い合わせ | 内部クライアント向けに許可することがある | 基本的に無効化する |
| 公開範囲 | 内部ネットワーク | インターネット |
| 代表レコード | 内部 A / AAAA / PTR | NS / 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 の設計




