Ubuntu 22.04 で BIND を使い、内部ネットワーク向け DNS サーバーを構築する手順です。内部 DNS は、サーバー、LDAP、メール、Web、Kubernetes などを内部名で扱うための名前解決基盤です。
この記事では、内部向けの権威ゾーンと再帰問い合わせの扱いを整理し、外部公開 DNS と混同しない構成として BIND を設定します。
参考書籍
参考書籍
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 | インターネットから参照される公開レコードを管理する |
| 権威 DNS | 自分が管理するゾーンの正しい答えを返す |
| キャッシュ DNS | 他の DNS へ問い合わせた結果をキャッシュする |
| split-horizon | 同じ名前でも内部と外部で異なる答えを返す設計 |
BIND をインストールする
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y bind9 bind9-utils dnsutils内部向けの options を設定する
内部 DNS では、再帰問い合わせを内部ネットワークに限定します。外部から再帰問い合わせを受ける open resolver にならないようにします。
sudo tee /etc/bind/named.conf.options <<'EOF'
acl internal_networks {
127.0.0.0/8;
10.1.0.0/16;
fd00::/8;
};
options {
directory "/var/cache/bind";
recursion yes;
allow-recursion { internal_networks; };
allow-query { internal_networks; };
listen-on { 127.0.0.1; 10.1.0.10; };
listen-on-v6 { ::1; fd00::a01:10; };
dnssec-validation auto;
};
EOF内部ゾーンを定義する
sudo tee /etc/bind/named.conf.local <<'EOF'
zone "example.local" {
type primary;
file "/etc/bind/zones/db.example.local";
};
zone "1.10.in-addr.arpa" {
type primary;
file "/etc/bind/zones/db.10.1";
};
EOF
sudo install -d -m 0755 /etc/bind/zones正引きゾーンを作成する
sudo tee /etc/bind/zones/db.example.local <<'EOF'
$TTL 3600
@ IN SOA ns1.example.local. admin.example.local. (
2026060801 ; serial
3600 ; refresh
900 ; retry
604800 ; expire
3600 ) ; negative cache ttl
IN NS ns1.example.local.
ns1 IN A 10.1.0.10
www IN A 10.1.0.20
ldap IN A 10.1.0.30
mail IN A 10.1.0.40
EOF逆引きゾーンを作成する
sudo tee /etc/bind/zones/db.10.1 <<'EOF'
$TTL 3600
@ IN SOA ns1.example.local. admin.example.local. (
2026060801
3600
900
604800
3600 )
IN NS ns1.example.local.
10.0 IN PTR ns1.example.local.
20.0 IN PTR www.example.local.
30.0 IN PTR ldap.example.local.
40.0 IN PTR mail.example.local.
EOF設定を検査する
sudo named-checkconf
sudo named-checkzone example.local /etc/bind/zones/db.example.local
sudo named-checkzone 1.10.in-addr.arpa /etc/bind/zones/db.10.1
sudo systemctl restart bind9名前解決を確認する
dig @127.0.0.1 www.example.local A
dig @127.0.0.1 ldap.example.local A
dig @127.0.0.1 -x 10.1.0.20
dig @127.0.0.1 example.com A運用上の注意
- 内部 DNS を open resolver にしない
- 内部名と外部公開名の責務を分ける
- ゾーン更新時は serial を増やす
- 正引きと逆引きの整合性を確認する
- LDAP、Apache、Postfix の証明書 SAN と DNS 名を合わせる
まとめ
Ubuntu 22.04 の BIND 内部 DNS は、内部サービスを名前で扱うための基盤です。内部向けの権威ゾーンと再帰問い合わせを扱う場合でも、問い合わせ元を内部ネットワークに限定し、外部公開 DNS と混同しないことが重要です。
Ubuntu 22.04 BIND 内部 DNS – 内部名前解決と再帰問い合わせの設計




