Rocky Linuxで権威DNSサーバを構築する方法|BINDによる正引き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.comDNS問い合わせの最終的な回答元になる重要なサーバです。
環境確認
Rocky Linuxのバージョンを確認します。
$ cat /etc/redhat-release
Rocky Linux release 9.xBINDのインストール
BINDと管理ツールをインストールします。
# dnf install bind bind-utilsbind-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サーバを構築して動作を確認することは非常に有効な学習方法と言えるでしょう。





