
・AlmaLinux9.6でDNSサーバーを構築する方法を知りたい。
・具体的な手順を教えてほしい。
こういった疑問に答えます。
本記事の内容
- AlmaLinux9.6でDNSサーバーを構築(Bind)マスターとスレーブ

この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
こういった私が、解説していきます。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
- 本記事の内容
- AlmaLinux9.6でDNSサーバーを構築(Bind)マスターとスレーブ
AlmaLinux9.6でDNSサーバーを構築(Bind)マスターとスレーブ
今回の構成
- ゾーン名: blue-planet.internal
- AlmaLinux 9.6
- bind 9.16

DNS(マスター)のbindインストール
dnf install bind bind-utils -y
[root@b-bidns01 ~]# dnf install bind bind-utils -y メタデータの期限切れの最終確認: 2:01:49 前の 2025年08月30日 10時42分47秒 に実施しました。 依存関係が解決しました。 ==================================================================================================== パッケージ Arch バージョン リポジトリー サイズ ==================================================================================================== インストール: bind x86_64 32:9.16.23-31.el9_6 appstream 488 k bind-utils x86_64 32:9.16.23-31.el9_6 appstream 198 k 依存関係のインストール: bind-dnssec-doc noarch 32:9.16.23-31.el9_6 appstream 45 k bind-libs x86_64 32:9.16.23-31.el9_6 appstream 1.2 M bind-license noarch 32:9.16.23-31.el9_6 appstream 12 k checkpolicy x86_64 3.6-1.el9 appstream 351 k fstrm x86_64 0.6.1-3.el9 appstream 27 k libmaxminddb x86_64 1.5.2-4.el9 appstream 32 k libuv x86_64 1:1.42.0-2.el9_4 appstream 146 k policycoreutils-python-utils noarch 3.6-2.1.el9 appstream 71 k protobuf-c x86_64 1.3.3-13.el9 baseos 34 k python3-audit x86_64 3.1.5-4.el9 appstream 83 k python3-bind noarch 32:9.16.23-31.el9_6 appstream 60 k python3-libsemanage x86_64 3.6-5.el9_6 appstream 78 k python3-ply noarch 3.11-14.el9 baseos 103 k python3-policycoreutils noarch 3.6-2.1.el9 appstream 2.0 M python3-setools x86_64 4.4.4-1.el9 baseos 551 k 弱い依存関係のインストール: bind-dnssec-utils x86_64 32:9.16.23-31.el9_6 appstream 112 k トランザクションの概要 ==================================================================================================== インストール 18 パッケージ ダウンロードサイズの合計: 5.6 M インストール後のサイズ: 17 M パッケージのダウンロード: (1/18): bind-dnssec-doc-9.16.23-31.el9_6.noarch.rpm 565 kB/s | 45 kB 00:00 (2/18): bind-dnssec-utils-9.16.23-31.el9_6.x86_64.rpm 1.1 MB/s | 112 kB 00:00 (3/18): bind-license-9.16.23-31.el9_6.noarch.rpm 508 kB/s | 12 kB 00:00 (4/18): bind-9.16.23-31.el9_6.x86_64.rpm 2.2 MB/s | 488 kB 00:00 (5/18): bind-utils-9.16.23-31.el9_6.x86_64.rpm 1.9 MB/s | 198 kB 00:00 (6/18): fstrm-0.6.1-3.el9.x86_64.rpm 369 kB/s | 27 kB 00:00 (7/18): libmaxminddb-1.5.2-4.el9.x86_64.rpm 894 kB/s | 32 kB 00:00 (8/18): checkpolicy-3.6-1.el9.x86_64.rpm 2.9 MB/s | 351 kB 00:00 (9/18): bind-libs-9.16.23-31.el9_6.x86_64.rpm 4.6 MB/s | 1.2 MB 00:00 (10/18): libuv-1.42.0-2.el9_4.x86_64.rpm 3.5 MB/s | 146 kB 00:00 (11/18): policycoreutils-python-utils-3.6-2.1.el9.noarch.rpm 1.8 MB/s | 71 kB 00:00 (12/18): python3-audit-3.1.5-4.el9.x86_64.rpm 2.4 MB/s | 83 kB 00:00 (13/18): python3-libsemanage-3.6-5.el9_6.x86_64.rpm 2.6 MB/s | 78 kB 00:00 (14/18): python3-bind-9.16.23-31.el9_6.noarch.rpm 1.4 MB/s | 60 kB 00:00 (15/18): protobuf-c-1.3.3-13.el9.x86_64.rpm 982 kB/s | 34 kB 00:00 (16/18): python3-ply-3.11-14.el9.noarch.rpm 1.1 MB/s | 103 kB 00:00 (17/18): python3-setools-4.4.4-1.el9.x86_64.rpm 2.2 MB/s | 551 kB 00:00 (18/18): python3-policycoreutils-3.6-2.1.el9.noarch.rpm 6.3 MB/s | 2.0 MB 00:00 ---------------------------------------------------------------------------------------------------- 合計 2.9 MB/s | 5.6 MB 00:01 トランザクションを確認しています トランザクションの確認に成功しました。 トランザクションをテストしています トランザクションのテストに成功しました。 トランザクションを実行しています 準備中 : 1/1 インストール中 : protobuf-c-1.3.3-13.el9.x86_64 1/18 インストール中 : bind-license-32:9.16.23-31.el9_6.noarch 2/18 インストール中 : libuv-1:1.42.0-2.el9_4.x86_64 3/18 インストール中 : libmaxminddb-1.5.2-4.el9.x86_64 4/18 インストール中 : fstrm-0.6.1-3.el9.x86_64 5/18 インストール中 : bind-libs-32:9.16.23-31.el9_6.x86_64 6/18 インストール中 : bind-utils-32:9.16.23-31.el9_6.x86_64 7/18 インストール中 : bind-dnssec-doc-32:9.16.23-31.el9_6.noarch 8/18 インストール中 : python3-setools-4.4.4-1.el9.x86_64 9/18 インストール中 : python3-ply-3.11-14.el9.noarch 10/18 インストール中 : python3-bind-32:9.16.23-31.el9_6.noarch 11/18 インストール中 : bind-dnssec-utils-32:9.16.23-31.el9_6.x86_64 12/18 インストール中 : python3-libsemanage-3.6-5.el9_6.x86_64 13/18 インストール中 : python3-audit-3.1.5-4.el9.x86_64 14/18 インストール中 : checkpolicy-3.6-1.el9.x86_64 15/18 インストール中 : python3-policycoreutils-3.6-2.1.el9.noarch 16/18 インストール中 : policycoreutils-python-utils-3.6-2.1.el9.noarch 17/18 scriptletの実行中: bind-32:9.16.23-31.el9_6.x86_64 18/18 インストール中 : bind-32:9.16.23-31.el9_6.x86_64 18/18 scriptletの実行中: bind-32:9.16.23-31.el9_6.x86_64 18/18 検証中 : bind-32:9.16.23-31.el9_6.x86_64 1/18 検証中 : bind-dnssec-doc-32:9.16.23-31.el9_6.noarch 2/18 検証中 : bind-dnssec-utils-32:9.16.23-31.el9_6.x86_64 3/18 検証中 : bind-libs-32:9.16.23-31.el9_6.x86_64 4/18 検証中 : bind-license-32:9.16.23-31.el9_6.noarch 5/18 検証中 : bind-utils-32:9.16.23-31.el9_6.x86_64 6/18 検証中 : checkpolicy-3.6-1.el9.x86_64 7/18 検証中 : fstrm-0.6.1-3.el9.x86_64 8/18 検証中 : libmaxminddb-1.5.2-4.el9.x86_64 9/18 検証中 : libuv-1:1.42.0-2.el9_4.x86_64 10/18 検証中 : policycoreutils-python-utils-3.6-2.1.el9.noarch 11/18 検証中 : python3-audit-3.1.5-4.el9.x86_64 12/18 検証中 : python3-bind-32:9.16.23-31.el9_6.noarch 13/18 検証中 : python3-libsemanage-3.6-5.el9_6.x86_64 14/18 検証中 : python3-policycoreutils-3.6-2.1.el9.noarch 15/18 検証中 : protobuf-c-1.3.3-13.el9.x86_64 16/18 検証中 : python3-ply-3.11-14.el9.noarch 17/18 検証中 : python3-setools-4.4.4-1.el9.x86_64 18/18 インストール済み: bind-32:9.16.23-31.el9_6.x86_64 bind-dnssec-doc-32:9.16.23-31.el9_6.noarch bind-dnssec-utils-32:9.16.23-31.el9_6.x86_64 bind-libs-32:9.16.23-31.el9_6.x86_64 bind-license-32:9.16.23-31.el9_6.noarch bind-utils-32:9.16.23-31.el9_6.x86_64 checkpolicy-3.6-1.el9.x86_64 fstrm-0.6.1-3.el9.x86_64 libmaxminddb-1.5.2-4.el9.x86_64 libuv-1:1.42.0-2.el9_4.x86_64 policycoreutils-python-utils-3.6-2.1.el9.noarch protobuf-c-1.3.3-13.el9.x86_64 python3-audit-3.1.5-4.el9.x86_64 python3-bind-32:9.16.23-31.el9_6.noarch python3-libsemanage-3.6-5.el9_6.x86_64 python3-ply-3.11-14.el9.noarch python3-policycoreutils-3.6-2.1.el9.noarch python3-setools-4.4.4-1.el9.x86_64 完了しました!
DNS(マスター)のnamed.conf編集
編集前のnamed.confのバックアップ
[root@b-bidns01 ~]# cp /etc/named.conf /etc/named.conf_original
named.confの編集
/etc/named.conf
[root@b-bidns01 ~]# vi /etc/named.conf
1 //
2 // named.conf
3 //
4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
5 // server as a caching only nameserver (as a localhost DNS resolver only).
6 //
7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
8 //
9
10 options {
11 listen-on port 53 { 192.168.100.132; }; ←★★★変更
12 listen-on-v6 port 53 { ::1; };
13 directory "/var/named";
14 dump-file "/var/named/data/cache_dump.db";
15 statistics-file "/var/named/data/named_stats.txt";
16 memstatistics-file "/var/named/data/named_mem_stats.txt";
17 secroots-file "/var/named/data/named.secroots";
18 recursing-file "/var/named/data/named.recursing";
19 allow-query { 192.168.100.0/24; }; ←★★★変更
20 forwarders { 192.168.100.254; }; ←★★★追加
21
22 /*
23 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
24 - If you are building a RECURSIVE (caching) DNS server, you need to enable
25 recursion.
26 - If your recursive DNS server has a public IP address, you MUST enable access
27 control to limit queries to your legitimate users. Failing to do so will
28 cause your server to become part of large scale DNS amplification
29 attacks. Implementing BCP38 within your network would greatly
30 reduce such attack surface
31 */
32 recursion yes;
33
34 dnssec-validation yes;
35
36 managed-keys-directory "/var/named/dynamic";
37 geoip-directory "/usr/share/GeoIP";
38
39 pid-file "/run/named/named.pid";
40 session-keyfile "/run/named/session.key";
41
42 /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
43 include "/etc/crypto-policies/back-ends/bind.config";
44 };
45
46 logging {
47 channel default_debug {
48 file "data/named.run";
49 severity dynamic;
50 };
51 };
52
53 zone "blue-planet.internal" IN { ←★★★変更
54 type master;
55 file "blue-planet.internal";
56 allow-update { none; };
57 };
58
59 zone "100.168.192.in-addr.arpa" IN { ←★★★追加
60 type master;
61 file "blue-planet.internal.rev";
62 allow-update { none; };
63 };
64
65
66 include "/etc/named.rfc1912.zones";
67 include "/etc/named.root.key";
68
DNS(マスター)の正引きファイル作成
/var/named/blue-planet.internal
[root@b-bidns01 ~]# vi /var/named/blue-planet.internal
$TTL 86400
@ IN SOA b-bidns01.blue-planet.internal. root.blue-planet.internal.(
2025083001 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS b-bidns01.blue-planet.internal.
a-email01 IN A 192.168.100.121
a-bidns01 IN A 192.168.100.128
b-bidns01 IN A 192.168.100.132
DNS(マスター)の逆引きファイル作成
/var/named/blue-planet.internal.rev
[root@b-bidns01 ~]# vi /var/named/blue-planet.internal.rev
$TTL 86400
@ IN SOA b-bidns01.blue-planet.internal. root.blue-planet.internal.(
2025083001 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS b-bidns01.blue-planet.internal.
121 IN PTR a-email01.blue-planet.internal.
128 IN PTR a-bidns02.blue-planet.internal.
132 IN PTR b-bidns01.blue-planet.internal.
DNS(マスター)の設定チェック
named-checkconf
named-checkzone blue-planet.internal /var/named/blue-planet.internal
named-checkzone blue-planet.internal.rev /var/named/blue-planet.internal.rev
[root@b-bidns01 ~]# named-checkconf
[root@b-bidns01 ~]# named-checkzone blue-planet.internal /var/named/blue-planet.internal zone blue-planet.internal/IN: loaded serial 2025083001 OK
[root@b-bidns01 ~]# named-checkzone blue-planet.internal.rev /var/named/blue-planet.internal.rev zone blue-planet.internal.rev/IN: loaded serial 2025083001 OK
DNS(マスター)のサービス起動
systemctl restart named
systemctl enable named
systemctl status named
[root@b-bidns01 ~]# systemctl restart named [root@b-bidns01 ~]# systemctl enable named Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service. [root@b-bidns01 ~]# systemctl status named ● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; preset: disabled) Active: active (running) since Sat 2025-08-30 13:10:25 JST; 17s ago Main PID: 5871 (named) Tasks: 5 (limit: 11066) Memory: 16.3M CPU: 53ms CGroup: /system.slice/named.service mq5871 /usr/sbin/named -u named -c /etc/named.conf 8月 30 13:10:25 b-bidns01 named[5871]: zone blue-planet.internal/IN: loaded serial 2025083001 8月 30 13:10:25 b-bidns01 named[5871]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 8月 30 13:10:25 b-bidns01 named[5871]: all zones loaded 8月 30 13:10:25 b-bidns01 systemd[1]: Started Berkeley Internet Name Domain (DNS). 8月 30 13:10:25 b-bidns01 named[5871]: running 8月 30 13:10:25 b-bidns01 named[5871]: network unreachable resolving './DNSKEY/IN': 2001:500:a8::e> 8月 30 13:10:25 b-bidns01 named[5871]: network unreachable resolving './DNSKEY/IN': 2001:500:2f::f> 8月 30 13:10:25 b-bidns01 named[5871]: managed-keys-zone: Initializing automatic trust anchor mana> 8月 30 13:10:25 b-bidns01 named[5871]: managed-keys-zone: Initializing automatic trust anchor mana> 8月 30 13:10:25 b-bidns01 named[5871]: resolver priming query complete
DNS(マスター)のfirewalldの設定
[root@b-bidns01 ~]# firewall-cmd --zone=home --add-service=dns --permanent success [root@b-bidns01 ~]# firewall-cmd --reload success
DNSクライアントの設定
``/etc/resolv.con`` を設定するときは,合わせてNetworkManagerの設定も変更します。
これをしないと,再起動したときに``/etc/resolv.conf`` が初期化されてしまいます。
NetworkManagerを一度停止
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl is-enabled NetworkManager
[root@a-email01 ~]# systemctl stop NetworkManager [root@a-email01 ~]# systemctl disable NetworkManager Removed "/etc/systemd/system/multi-user.target.wants/NetworkManager.service". Removed "/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service". Removed "/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service". [root@a-email01 ~]# systemctl is-enabled NetworkManager disabled
NetworkManagerの設定変更
/etc/NetworkManager/NetworkManager.conf
[root@a-email01 ~]# vi /etc/NetworkManager/NetworkManager.conf
22 [main]
23 dns=none ←★★★追加
24 #plugins=keyfile,ifcfg-rh
resolv.confの修正
/etc/resolv.conf
[root@b-bidns01 ~]# vi /etc/resolv.conf
# Generated by NetworkManager
search blue-planet.internal
nameserver 192.168.100.132
NetworkManagerの再起動
systemctl restart NetworkManager
systemctl enable NetworkManager
systemctl is-enabled NetworkManager
[root@a-email01 ~]# systemctl restart NetworkManager [root@a-email01 ~]# systemctl enable NetworkManager Created symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service → /usr/lib/systemd/system/NetworkManager.service. Created symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service → /usr/lib/systemd/system/NetworkManager-dispatcher.service. Created symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service → /usr/lib/systemd/system/NetworkManager-wait-online.service. [root@a-email01 ~]# systemctl is-enabled NetworkManager enabled
DNSの動作テスト
正引き
[root@b-bidns01 ~]# nslookup a-email01 Server: 192.168.100.132 Address: 192.168.100.132#53 Name: a-email01.blue-planet.internal Address: 192.168.100.121
逆引き
[root@b-bidns01 ~]# nslookup 192.168.100.121 121.100.168.192.in-addr.arpa name = a-email01.blue-planet.internal.
DNS(マスター)側にスレーブの追加
/etc/named.conf
[root@b-bidns01 ~]# vi /etc/named.conf
options {
listen-on port 53 { 192.168.100.132; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { 192.168.100.0/24; };
allow-transfer { 192.168.100.128; }; ←★★★追加
forwarders { 192.168.100.254; };
/var/named/blue-planet.internal
[root@b-bidns01 ~]# vi /var/named/blue-planet.internal
$TTL 86400
@ IN SOA b-bidns01.blue-planet.internal. root.blue-planet.internal.(
2025083002 ; Serial ←★★★カウントアップ
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS b-bidns01.blue-planet.internal.
IN NS a-bidns02.blue-planet.internal. ←★★★追加
a-email01 IN A 192.168.100.121
a-bidns02 IN A 192.168.100.128
b-bidns01 IN A 192.168.100.132
サービス再起動
[root@b-bidns01 ~]# systemctl restart named
DNS(スレーブ)側の設定
/etc/named.conf
[root@a-bidns02 ~]# vi /etc/named.conf
options {
listen-on port 53 { 192.168.100.128; }; ←★★★変更
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { 192.168.100.0/24; }; ←★★★変更
forwarders { 192.168.100.254; }; ←★★★追加
zone "blue-planet.internal" IN { ←★★★追加 type slave; masters { 192.168.100.132; }; file "slaves/blue-planet.internal"; notify no; };
DNS(スレーブ)のサービス起動
[root@a-bidns02 ~]# systemctl restart named [root@a-bidns02 ~]# systemctl enable named

DNS(スレーブ)のfirewalldの設定
[root@a-bidns02 ~]# firewall-cmd --zone=home --add-service=dns --permanent success [root@a-bidns02 ~]# firewall-cmd --reload success
DNSクライアントにDNSスレーブの登録
/etc/resolv.conf
[root@a-bidns02 ~]# vi /etc/resolv.conf
# Generated by NetworkManager
search blue-planet.internal
nameserver 192.168.100.132
nameserver 192.168.100.128