DNS設定 · 4 min read · Sep 08, 2025
Rocky Linux 9にBINDでDNSサーバーをインストールする方法

BINDまたはバークレーインターネットネームドメインは、無料でオープンソースのDNSサーバーソフトウェアです。インターネット上のDNSの70%以上で使用されている最も人気のあるDNSサーバーソフトウェアの1つです。BINDは1980年代から存在し、その柔軟性、パフォーマンス、機能で知られています。BINDは、権威DNSとキャッシングDNSの両方として使用でき、負荷分散、動的更新、スプリットDNS、DNSSEC、IPv6などをサポートしています。
BIND DNSソフトウェアは、Unix系オペレーティングシステム向けの最も信頼性の高いDNSサーバーの1つです。ほとんどのLinuxディストリビューションで利用可能で、DNSサーバーの診断とテストのための追加ツールを提供します。
このチュートリアルでは、Rocky Linux 9サーバーでBINDを使用してDNSサーバーをセットアップする方法を示します。BINDは、権威DNS、キャッシュ専用DNS、基本DNS負荷分散、スプリットDNS、DNSSEC、IPv6などのさまざまな機能を提供する最も人気のあるDNSサーバーソフトウェアの1つです。
前提条件
このチュートリアルでは、マスター-スレーブアーキテクチャでBIND DNSサーバーをセットアップし、実装します。そのため、2つのRocky Linuxサーバーが必要です。また、各サーバーでroot/管理者権限が必要です。
ドメインを処理できるパブリックDNSサーバー(権威DNSサーバー)をセットアップするには、ドメイン名が登録されており、「グルーレコード」が構成されている必要があります。
また、このガイドでは、SELinuxが「許可モード」で実行されていると仮定します。
システムの準備
このガイドを始めるにあたり、各Rocky Linuxサーバーで正しいFQDN(完全修飾ドメイン名)を設定します。これは、’hostnamectl‘コマンドユーティリティと‘/etc/hosts‘ファイルを介して行うことができます。
以下は、このガイドの例として使用されるサーバーの詳細です:
Hostname IP Address FQDN Used as
---------------------------------------------------------------
ns1 192.168.5.100 ns1.howtoforge.local Master
ns2 192.168.5.120 ns2.howtoforge.local Slaveマスターサーバーで、以下のhostnamectlコマンドユーティリティを実行してfqdnを’ns1.howtoforge.local‘に設定します。
sudo hostnamectl set-hostname ns1.howtoforge.local以下でも、スレーブサーバーでhostnamectlコマンドを実行してfqdnを’ns2.howtoforge.local‘に設定する必要があります。
sudo hostnamectl set-hostname ns2.howtoforge.local次に、以下のnanoエディタコマンドを使用して、マスターおよびスレーブサーバーの両方で’/etc/hosts’ファイルを開きます。
sudo nano /etc/hostsファイルに以下の行を追加します。
192.168.5.100 ns1.howtoforge.local ns1
192.168.5.120 ns2.howtoforge.local ns2作業が完了したら、ファイルを保存してエディタを終了します。
最後に、以下の’hostname’コマンドを実行して、各サーバーのfqdnを確認します。マスターサーバーにはfqdnが’ns1.howtoforge.local‘として表示され、スレーブサーバーにはfqdnが’ns2.howtoforge.local‘として表示されるはずです。
sudo hostname -f以下は、マスターサーバーからの出力です。

以下は、スレーブサーバーからの出力です。

fqdnが構成されたので、Rocky LinuxサーバーにBINDをインストールする準備が整いました。
BINDパッケージのインストール
デフォルトでは、Rocky Linux AppStreamリポジトリはBINDパッケージの最新の安定版を提供します。この執筆時点でのBINDの現在の安定版はv9.16です。
このステップでは、マスターおよびスレーブサーバーの両方にBINDパッケージをインストールします。次に、BINDをIPv4のみで実行するように設定し、DNSポートを許可するようにfirewalldを構成します。
以下のdnfコマンドを実行して、マスターおよびスレーブサーバーの両方にBINDパッケージをインストールします。確認を求められたら、yを入力してENTERを押して続行します。
sudo dnf install bind bind-utils
BINDパッケージがインストールされたら、以下のnanoエディタコマンドを使用して設定’/etc/sysconfig/named‘を開きます。
sudo nano /etc/sysconfig/namedデフォルトの’OPTIONS=..‘を以下の行で追加します。このコマンドオプションは、’bind’または’named’がIPv4のみでBINDを実行します。
OPTIONS="-4"作業が完了したら、ファイルを保存してエディタを終了します。
次に、以下のsystemctlコマンドユーティリティを実行して、BINDサービス’named‘を開始および有効にします。’named’サービスは現在実行中で有効になっており、起動時に自動的に開始されるはずです。
sudo systemctl start named
sudo systemctl enable named
次に、以下のコマンドを使用して’named’サービスを確認し、サービスが実行中で有効になっていることを確認します。
sudo systemctl is-enabled named
sudo systemctl status named次のような出力が得られます - BINDの’named’サービスは有効で、現在実行中です。

BINDの’named’サービスが実行中であるため、Rocky Linuxでデフォルトで有効かつ実行中のfirewalldにDNSポートを追加する必要があります。
以下のfirewall-cmdコマンドユーティリティを実行して、DNSサービスをfirewalldに追加します。次に、変更を適用するためにfirewalldを再読み込みします。
sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reloadfirewalldで有効なサービスのリストを確認すると、DNSサービスが有効になっていることがわかります。以下のfirewall-cmdコマンドを実行して、サービスのリストを確認します。
sudo firewall-cmd --list-services出力:

この時点で、fqdnの構成が完了し、BINDパッケージがインストールされ、firewalldも構成されました。このことを考慮して、マスターサーバーでBINDマスターの構成を開始できます。
マスターBIND DNSサーバーの構成
このステップでは、Rocky Linuxの’ns1.howtoforge.local‘を使用してBINDマスターサーバーをセットアップします。サーバーのIPアドレスは’192.168.5.100‘です。以下のコマンドをマスターサーバーで実行することを確認してください。
以下の手順でBINDマスターサーバーを構成します:
- 基本構成には、ACL(アクセス制御リスト)の構成、BINDサービスを実行するIPアドレスの設定、フォワーダーの設定などが含まれます。
- ゾーンの設定 - ここでは、ドメインの構成を作成します。これには、メインドメインの構成と逆引きDNSの構成が含まれます。
基本構成
RHELベースのディストリビューションのデフォルトのBIND構成は‘/etc/named.conf’にあります。
以下のnanoエディタコマンドを使用して、ファイル’/etc/named.conf‘を開きます。
sudo nano /etc/named.confデフォルトの構成を以下の行に変更します。
acl "trusted" {
192.168.5.100; # ns1 - またはns1用にlocalhostを使用できます
192.168.5.120; # ns2
192.168.5.0/24; # 信頼できるネットワーク
};
options {
listen-on port 53 { 192.168.5.100; };
// 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 { localhost; trusted; };
recursion yes;
allow-recursion { trusted; };
allow-transfer { localhost; 192.168.5.120; };
forwarders {
8.8.8.8;
1.1.1.1;
};作業が完了したら、ファイルを保存してエディタを終了します。

この構成により、以下の構成でBINDを設定します:
- ローカルネットワークからのクエリを許可するACL ‘trusted‘を設定します。
- デフォルトポート’53‘で’192.168.5.100‘でBINDサービスを実行します。
- 再帰を有効にし、’trusted‘ ACLネットワークからの再帰を許可します。
- IPアドレス’192.168.5.120‘のスレーブサーバーへのゾーントランスファーを許可します。
- CloudflareのパブリックDNSサーバー1.1.1.1とGoogleの8.8.8.8でフォワーダーを設定します。
次に、以下のコマンドを実行してBIND構成’/etc/named.conf‘を確認します。
sudo named-checkconf /etc/named.conf最後に、以下のsystemctlコマンドユーティリティを実行してBIND’named’サービスを再起動し、変更を適用します。
sudo systemctl restart namedこれで、BIND DNSサーバーの基本構成が完了しました。
ゾーンの設定
次に、BIND DNSサーバーでゾーンを設定します。’ns1.howtoforge.local’と’ns2.howtoforge.local’のアドレスを持つ新しいDNSサーバーを作成します。
まず、以下のnanoエディタコマンドを使用してBIND構成‘/etc/named.conf‘を開きます。
sudo nano /etc/named.conf以下の構成を行の下部に追加します。
include "/etc/named/zones.conf.local";作業が完了したら、ファイルを保存してエディタを終了します。
次に、以下のnanoエディタコマンドを使用して新しい構成‘/etc/named/zones.conf.local’を作成します。
sudo nano /etc/named/zones.conf.localファイルに以下の行を追加します。
zone "howtoforge.local" {
type master;
file "db.howtoforge.local"; # ゾーンファイルパス
allow-transfer { 192.168.5.120; }; # ns2 IPアドレス - セカンダリDNS
};
zone "5.168.192.in-addr.arpa" {
type master;
file "db.192.168.5"; # サブネット 192.168.5.0/24
allow-transfer { 192.168.5.120; }; # ns2プライベートIPアドレス - セカンダリDNS
};作業が完了したら、ファイルを保存して閉じます。
この構成により、以下の構成が定義されます:
- ドメイン’howtoforge.local‘と逆引きDNS’5.168.192.in-addr.arpa‘の2つのゾーンを作成します。
- 両方のゾーンタイプは’master‘です。
- スレーブDNSサーバーにゾーントランスファーを許可します。

次に、以下のnanoエディタコマンドを使用して新しいDNSゾーン構成‘/var/named/db.howtoforge.local’を作成します。
sudo nano /var/named/db.howtoforge.localファイルに以下の行を追加します。
;
; BINDデータファイル(ローカルループバックインターフェース用)
;
$TTL 604800
@ IN SOA ns1.howtoforge.local. admin.howtoforge.local. (
3 ; シリアル
604800 ; リフレッシュ
86400 ; リトライ
2419200 ; 有効期限
604800 ) ; ネガティブキャッシュTTL
;
; 名前サーバーのNSレコード
IN NS ns1.howtoforge.local.
IN NS ns2.howtoforge.local.
; 名前サーバーのAレコード
ns1.howtoforge.local. IN A 192.168.5.100
ns2.howtoforge.local. IN A 192.168.5.120
; ドメインhowtoforge.localのメールハンドラーまたはMXレコード
howtoforge.local. IN MX 10 mail.howtoforge.local.
; ドメイン名のAレコード
howtoforge.local. IN A 192.168.5.50
mail.howtoforge.local. IN A 192.168.5.15作業が完了したら、ファイルを保存して閉じます。
この例では、以下の構成でゾーンを設定します:
- 名前サーバーレコード’ns1.howtoforge.local‘をIPアドレス’192.168.5.100‘で定義し、’ns2.howtoforge.local‘をIPアドレス’192.168.5.120‘で定義します。
- 追加の2つのドメイン’howtoforge.local‘を定義し、サーバーIPアドレス’192.168.5.50‘に解決され、ドメイン’mail.howtoforge.local‘をIPアドレス’192.168.5.15‘に解決します。
- ドメイン’howtoforge.local‘のMXレコードを作成し、メールサーバー’mail.howtoforge.local’が処理します。

次に、ドメインhowtoforge.localの逆引きDNSを構成します。
以下のnanoエディタコマンドを使用して新しい逆引きDNS構成‘/var/named/db.192.168.5‘を作成します。
sudo nano /var/named/db.192.168.5ファイルに以下の行を追加します。
;
; BIND逆引きデータファイル(ローカルループバックインターフェース用)
;
$TTL 604800
@ IN SOA ns1.howtoforge.local. admin.howtoforge.local. (
3 ; シリアル
604800 ; リフレッシュ
86400 ; リトライ
2419200 ; 有効期限
604800 ) ; ネガティブキャッシュTTL
;
; 名前サーバー - NSレコード
IN NS ns1.howtoforge.local.
IN NS ns2.howtoforge.local.
; PTRレコード
100 IN PTR ns1.howtoforge.local. ; 192.168.5.100
120 IN PTR ns2.howtoforge.local. ; 192.168.5.120
50 IN PTR howtoforge.local. ; 192.168.5.50
15 IN PTR mail.howtoforge.local. ; 192.168.5.15作業が完了したら、ファイルを保存して閉じます。
この構成により、以下の逆引きDNSまたはPTRレコードが設定されます。
- 逆引きDNS構成では、名前サーバーns1.howtoforge.localとns2.howtoforge.localも定義します。
- 各逆引きDNS構成は、各ドメインに解決されるIPアドレスの最後の数字を使用します。この例では、名前サーバーns1.howtoforge.localのIPアドレス‘192.168.5.100’、PTRレコードは’100‘になります。
- 残りのPTRレコードは、上記で説明したものと同じです。

この時点で、ドメイン’howtoforge.local‘の2つのゾーン構成を作成し、名前サーバー’ns1.howtoforge.local‘と’ns2.howtoforge.local‘を作成しました。
次に、以下のchmodコマンドを実行して、両方のゾーン構成の所有権を変更します。
sudo chown -R named: /var/named/{db.howtoforge.local,db.192.168.5}次に、’named-checkconf’コマンドユーティリティを使用してゾーン構成ファイルを確認します。
sudo named-checkconfsudo named-checkzone howtoforge.local /var/named/db.howtoforge.local
sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5適切なBIND構成がある場合、次のスクリーンショットのような出力が得られます。

最後に、以下のsystemctlコマンドを実行してBIND’named’サービスを再起動し、変更を適用します。次に、BINDサービスのステータスを確認して、サービスが実行中であることを確認します。
sudo systemctl restart named
sudo systemctl status named次のような出力が得られます - BINDの’named‘サービスが実行中で、BINDマスター構成が完了しました。

次のステップでは、BINDスレーブサーバーをセットアップします。
スレーブBIND DNSサーバーの設定
DNSマスターサーバーを構成した後、IPアドレス’192.168.5.120’のサーバー’ns2.howtoforge.local’でBINDスレーブサーバーの構成を開始します。
‘named.conf’の基本構成はBINDマスターと似ており、ゾーンファイルについては、BINDスレーブサーバーで実際のファイルを作成せずにファイル名を定義できます。
開始する前に、BINDスレーブサーバーで以下のコマンドを実行していることを確認してください。
次に、以下のnanoエディタコマンドを使用してスレーブサーバーのBIND構成’/etc/named.conf‘を開きます。
sudo nano /etc/named.confデフォルトの構成を以下の行に変更します。
acl "trusted" {
192.168.5.100; # ns1 - またはns1用にlocalhostを使用できます
192.168.5.120; # ns2
192.168.5.0/24; # 信頼できるネットワーク
};
options {
listen-on port 53 { 192.168.5.120; };
//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 { any; };
recursion yes;
allow-recursion { trusted; };
allow-transfer { none; };
forwarders {
8.8.8.8;
1.1.1.1;
};
};設定はBINDマスターサーバーと似ていますが、以下は構成の違いです。
- BINDサービスはスレーブサーバーのIPアドレス’192.168.5.120‘で実行されます。
- 再帰は有効ですが、’allow-transfer’は’none‘に設定されています。

次に、ゾーンを定義するために’named.conf’ファイルの下部に以下の行を追加します。
include "/etc/named/zones.conf.local";作業が完了したら、ファイルを保存してエディタを終了します。
次に、以下のnanoエディタコマンドを使用して新しい構成‘/etc/named/zones.conf.local’を作成します。
sudo nano /etc/named/zones.conf.localファイルに以下の行を追加します。
zone "howtoforge.local" {
type slave;
file "slaves/db.howtoforge.local";
masters { 192.168.5.100; }; # ns1 IPアドレス - マスタDNS
};
zone "5.168.192.in-addr.arpa" {
type slave;
file "slaves/db.192.168.5";
masters { 192.168.5.100; }; # ns1 IPアドレス - マスタDNS
};作業が完了したら、ファイルを保存して閉じます。
これにより、BINDスレーブサーバーで以下の構成が定義されます:
- ドメイン’howtoforge.local‘とその逆引きDNSのための2つのゾーンを定義します。
- 両方のゾーンタイプは’slave‘です。
- 各ゾーンファイルは、BINDマスターサーバーから転送される‘/var/named/slaves‘ディレクトリから取得されます。

次に、以下の’named-checkconf’コマンドユーティリティを実行してBIND構成を確認します。次に、以下のsystemctlコマンドを使用してスレーブサーバーでBIND’named’サービスを再起動します。
sudo named-checkconf
sudo systemctl restart named適切なBIND構成がある場合、エラーメッセージは表示されません。
最後に、以下のsystemctlコマンドを実行して、スレーブサーバーでBIND’named‘サービスが実行中であることを確認します。
sudo systemctl status named次のような出力が得られます - BINDの’named’サービスがスレーブサーバーで実行中です。

この時点で、マスター-スレーブアーキテクチャでのBIND DNSのインストールが完了しました。クライアントマシンからテストを開始する準備が整いました。
クライアントからのテスト
この例では、クライアントマシンとしてDebianシステムを使用するため、開始する前にAPTを介して以下のパッケージをインストールします。
sudo apt install dnsutils bind9-utils確認を求められたらyを入力し、ENTERを押して続行します。

次に、以下のコマンドを実行してデフォルトのリンクファイル’ /etc/resolv.conf‘を削除し、nanoエディタを使用して新しいファイルを作成します。
sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.confファイルに以下の構成を追加します。次の構成では、BIND DNSマスター、セカンダリBIND DNSサーバー、およびパブリックCloudflare DNSリゾルバーの3つの異なるリゾルバーを定義しています。クライアントマシンがドメイン名に関する情報を要求すると、情報はDNSリゾルバーから上から下へ取得されます。
nameserver 192.168.5.100
nameserver 192.168.5.120
nameserver 1.1.1.1
search howtoforge.local作業が完了したら、ファイルを保存して閉じます。
これで、クライアントマシンからDNSサーバーを確認する準備が整いました。
以下のdigコマンドを実行して、ドメイン名’howtoforge.local’と’mail.howtoforge.local’を確認します。’howtoforge.local‘がサーバーIPアドレス’192.168.5.50‘に解決され、サブドメイン’mail.howtoforge.local‘がサーバーIPアドレス’192.168.5.15‘によって処理されることがわかります。
dig howtoforge.local +short
dig howtoforge.localdig mail.howtoforge.local +short
dig mail.howtoforge.localドメイン名howtoforge.localを確認しています。

サブドメインmail.howtoforge.localを確認しています。

次に、以下のdigコマンドを実行して、ドメイン名’howtoforge.local‘のメールハンドラーを確認します。’mail.howtoforge.local‘がメインドメイン’howtoforge.local‘のメールを処理していることがわかります。
dig howtoforge.local MX +short
dig howtoforge.local MX
nslookupコマンドを使用してドメイン名の逆引きゾーン構成を確認できます。
以下のnslookupコマンドを実行して、いくつかのIPアドレスの逆引きを確認します。
これで、IPアドレス’192.168.5.100‘が名前サーバー’ns1.howtoforge.local‘に逆引きされ、IPアドレス’192.168.5.120‘が名前サーバー’ns2.howtoforge.local‘に逆引きされ、IPアドレス’192.168.5.50‘がメインドメイン名’howtoforge.local‘に逆引きされ、最後にIPアドレス’192.168.5.15‘がサブドメイン’mail.howtoforge.local‘に逆引きされることがわかります。
slookup 192.168.5.100
slookup 192.168.5.120
slookup 192.168.5.50
slookup 192.168.5.15
この時点で、Rocky Linuxでのマスター-スレーブアーキテクチャを持つBIND DNSサーバーのインストールが完了しました。また、digやnslookupなどのさまざまなコマンドユーティリティを使用してDNSサーバーをテストする方法も学びました。
結論
おめでとうございます!このチュートリアルを通じて、Rocky Linux 9サーバーでのBIND DNSサーバーのインストールと構成を学びました。2つの異なるRocky Linuxサーバーを使用して、マスター-スレーブBIND DNSサーバーを正常に構成しました。また、DNSレコードと構成を確認するためのDigおよびNslookupの基本コマンドも学びました。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。