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 master server

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

fqdn slave server

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

install bind named

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

start enable named

次に、以下のコマンドを使用して’named’サービスを確認し、サービスが実行中で有効になっていることを確認します。

sudo systemctl is-enabled named  
sudo systemctl status named

次のような出力が得られます - BINDの’named’サービスは有効で、現在実行中です。

verify named

BINDの’named’サービスが実行中であるため、Rocky Linuxでデフォルトで有効かつ実行中のfirewalldにDNSポートを追加する必要があります。

以下のfirewall-cmdコマンドユーティリティを実行して、DNSサービスをfirewalldに追加します。次に、変更を適用するためにfirewalldを再読み込みします。

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

firewalldで有効なサービスのリストを確認すると、DNSサービスが有効になっていることがわかります。以下のfirewall-cmdコマンドを実行して、サービスのリストを確認します。

sudo firewall-cmd --list-services

出力:

setup firewalld

この時点で、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;  
        };

作業が完了したら、ファイルを保存してエディタを終了します。

named.conf file

この構成により、以下の構成で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サーバーにゾーントランスファーを許可します。

zones list

次に、以下の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’が処理します。

zones nameserver

次に、ドメイン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.localns2.howtoforge.localも定義します。
  • 各逆引きDNS構成は、各ドメインに解決されるIPアドレスの最後の数字を使用します。この例では、名前サーバーns1.howtoforge.localのIPアドレス‘192.168.5.100’、PTRレコードは’100‘になります。
  • 残りのPTRレコードは、上記で説明したものと同じです。

zones reverse dns

この時点で、ドメイン’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-checkconf
sudo 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構成がある場合、次のスクリーンショットのような出力が得られます。

setup master bind dns server

最後に、以下のsystemctlコマンドを実行してBIND’named’サービスを再起動し、変更を適用します。次に、BINDサービスのステータスを確認して、サービスが実行中であることを確認します。

sudo systemctl restart named  
sudo systemctl status named

次のような出力が得られます - BINDの’named‘サービスが実行中で、BINDマスター構成が完了しました。

restart verify master

次のステップでは、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 slave dns bind

次に、ゾーンを定義するために’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‘ディレクトリから取得されます。

zones settings

次に、以下の’named-checkconf’コマンドユーティリティを実行してBIND構成を確認します。次に、以下のsystemctlコマンドを使用してスレーブサーバーでBIND’named’サービスを再起動します。

sudo named-checkconf  
sudo systemctl restart named

適切なBIND構成がある場合、エラーメッセージは表示されません。

最後に、以下のsystemctlコマンドを実行して、スレーブサーバーでBIND’named‘サービスが実行中であることを確認します。

sudo systemctl status named

次のような出力が得られます - BINDの’named’サービスがスレーブサーバーで実行中です。

check named

この時点で、マスター-スレーブアーキテクチャでのBIND DNSのインストールが完了しました。クライアントマシンからテストを開始する準備が整いました。

クライアントからのテスト

この例では、クライアントマシンとしてDebianシステムを使用するため、開始する前にAPTを介して以下のパッケージをインストールします。

sudo apt install dnsutils bind9-utils

確認を求められたらyを入力し、ENTERを押して続行します。

install dnsutils

次に、以下のコマンドを実行してデフォルトのリンクファイル’ /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.local
dig mail.howtoforge.local +short  
dig mail.howtoforge.local

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

verify domain

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

verify domain name

次に、以下のdigコマンドを実行して、ドメイン名’howtoforge.local‘のメールハンドラーを確認します。’mail.howtoforge.local‘がメインドメイン’howtoforge.local‘のメールを処理していることがわかります。

dig howtoforge.local MX +short  
dig howtoforge.local MX

verify mx records

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

verify nslookup

この時点で、Rocky Linuxでのマスター-スレーブアーキテクチャを持つBIND DNSサーバーのインストールが完了しました。また、digやnslookupなどのさまざまなコマンドユーティリティを使用してDNSサーバーをテストする方法も学びました。

結論

おめでとうございます!このチュートリアルを通じて、Rocky Linux 9サーバーでのBIND DNSサーバーのインストールと構成を学びました。2つの異なるRocky Linuxサーバーを使用して、マスター-スレーブBIND DNSサーバーを正常に構成しました。また、DNSレコードと構成を確認するためのDigおよびNslookupの基本コマンドも学びました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。