手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 BIND 内部 DNS – 内部名前解決と再帰問い合わせの設計

Ubuntu 22.04 で BIND を使い、内部ネットワーク向け DNS サーバーを構築する手順です。内部 DNS は、サーバー、LDAP、メール、Web、Kubernetes などを内部名で扱うための名前解決基盤です。

この記事では、内部向けの権威ゾーンと再帰問い合わせの扱いを整理し、外部公開 DNS と混同しない構成として BIND を設定します。

参考書籍
参考書籍

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

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

Amazon で見る

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

関連する DNS 記事

内部 DNS、外部 DNS、権威 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 – 内部名前解決と再帰問い合わせの設計

コメントを残す

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

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

トップへ戻る