Rocky Linuxで権威DNSサーバを構築する方法|BINDによる正引きDNS構築手順

DNS構築(正引き)

Rocky Linuxで権威DNSサーバを構築する方法

DNSサーバには大きく分けて権威DNSサーバとキャッシュDNSサーバがあります。

権威DNSサーバは、自身が管理するドメインの正式なDNS情報を保持し、問い合わせに対して正しい回答を返す役割を持っています。

企業のWebサイトやメールサーバを運用する場合、権威DNSサーバの構築は欠かせません。

本記事ではRocky Linux 9を使用し、BINDを利用した権威DNSサーバの構築手順を解説します。

学習環境として以下の構成を使用します。

ドメイン名:example.com
DNSサーバ名:ns1.example.com
DNSサーバIP:192.168.60.10
WebサーバIP:192.168.60.20

権威DNSサーバとは

権威DNSサーバ(Authoritative DNS Server)は、特定ドメインの正式なDNS情報を保持するDNSサーバです。

例えば次のような情報を管理します。

example.com
www.example.com
mail.example.com

DNS問い合わせの最終的な回答元になる重要なサーバです。

環境確認

Rocky Linuxのバージョンを確認します。

$ cat /etc/redhat-release

Rocky Linux release 9.x

BINDのインストール

BINDと管理ツールをインストールします。

# dnf install bind bind-utils

bind-utilsにはdigやnslookupが含まれています。

BINDのバージョン確認


# named -v

出力例です。


BIND 9.18.x

named.confのバックアップ

設定変更前にバックアップを取得します。


# cp /etc/named.conf /etc/named.conf.bk

named.confの編集

設定ファイルを編集します。


# vi /etc/named.conf

学習環境向けの最小構成例です。


options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { any; };

    directory "/var/named";

    allow-query { any; };

    recursion no;
};

zone "example.com" IN {
    type master;
    file "example.com.zone";
};

recursion no の意味

権威DNSサーバでは通常再帰問い合わせを行いません。

そのため次のように設定します。


recursion no;

キャッシュDNSサーバとの差別化ポイントです。

ゾーンファイル作成

ゾーンファイルを作成します。


# vi /var/named/example.com.zone

ゾーンファイルの内容


$TTL 3600

@ IN SOA ns1.example.com. root.example.com. (
    2026060801
    28800
    14400
    3600000
    86400
)

@       IN NS ns1.example.com.

ns1     IN A 192.168.60.10

@       IN A 192.168.60.20
www     IN A 192.168.60.20

mail    IN A 192.168.60.30

@       IN MX 10 mail.example.com.

SOAレコードの確認

SOAレコードはゾーンの管理情報です。


@ IN SOA ns1.example.com. root.example.com.

権威DNSサーバには必須です。

シリアル番号について

SOAレコード内の値です。


2026060801

ゾーンファイルを変更するたびに増やします。

一般的には次の形式が利用されます。


YYYYMMDDNN

ファイル所有者確認

ゾーンファイルはnamedユーザーが参照します。

確認します。


# ls -l /var/named/

設定ファイルの文法チェック

named.confを確認します。

# named-checkconf

正常時は何も表示されません。

ゾーンファイルの確認

# named-checkzone example.com \
/var/named/example.com.zone

正常例です。

OK

ファイアウォール設定

DNSサービスを許可します。

# firewall-cmd --add-service=dns --permanent
# firewall-cmd --reload

namedサービス起動

サービスを起動します。

# systemctl start named

自動起動設定です。

# systemctl enable named

サービス状態確認

# systemctl status named

active (running) になれば正常です。

ポート確認

53番ポートで待ち受けていることを確認します。

# ss -ltnup | grep :53

ローカルから動作確認

digで確認します。

# dig @127.0.0.1 www.example.com

期待される結果です。

www.example.com. 3600 IN A 192.168.60.20

別PCから確認

別のLinuxサーバから確認します。

$ dig @192.168.60.10 www.example.com

正しく応答すれば成功です。

DNS応答の確認ポイント

AUTHORITY SECTIONやANSWER SECTIONを確認します。

特に次のフラグが重要です。


aa

Authoritative Answerを意味します。

権威DNSサーバからの正式回答であることを示します。

ログ確認

問題が発生した場合はログを確認します。


# journalctl -u named

よくあるトラブル

末尾ドット忘れ


ns1.example.com

ではなく


ns1.example.com.

です。

SOAレコード不足

ゾーンロードに失敗します。

ゾーンファイル構文エラー

named-checkzoneで確認できます。

ファイアウォール設定忘れ

外部から問い合わせできません。

SELinux関連

独自ディレクトリを利用する場合はSELinuxコンテキストに注意が必要です。

実務で覚えておきたいポイント

  • 権威DNSサーバは正式なDNS情報を保持する
  • recursion no が基本
  • SOAレコードは必須
  • シリアル番号管理が重要
  • digで動作確認する
  • aaフラグを確認する

まとめ

Rocky LinuxではBINDを利用することで権威DNSサーバを構築できます。

named.confでゾーンを定義し、ゾーンファイルにDNSレコードを記述することでドメイン管理が可能になります。

また、権威DNSサーバでは再帰問い合わせを無効化し、正式なDNS情報のみを提供する構成が一般的です。

DNSの仕組みを理解するためにも、実際に権威DNSサーバを構築して動作を確認することは非常に有効な学習方法と言えるでしょう。