ウェブサイト検索

Rocky Linux 9にBINDを使ってDNSサーバーをインストールする方法


Rocky Linux 9にBINDを使ってDNSサーバーをインストールする方法

このページで

  1. 前提条件
  2. システムの準備
  3. BINDパッケージのインストール
  4. マスターBIND DNSサーバーの設定

    1. 基本設定
    2. ゾーンの設定
  5. スレーブBIND DNSサーバーの設定
  6. クライアントからのテスト
  7. 結論

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 サーバーソフトウェアの一つです。

前提条件

このチュートリアルでは、マスター-スレーブアーキテクチャを持つBIND DNSサーバーをセットアップし、実装します。そのためには、2台のRocky Linuxサーバーが必要です。また、各サーバーでのルート/管理者権限も必要です。

ドメインを処理できる公開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

マスターサーバーで、fqdnを'ns1.howtoforge.local'に設定するために、以下のhostnamectlコマンドユーティリティを実行します。

sudo hostnamectl set-hostname ns1.howtoforge.local

下記に、Slaveサーバーでfqdnを『ns2.howtoforge.local』に設定するためにhostnamectlコマンドを実行する必要があります。

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のみに設定し、firewalldを構成してDNSポートを許可します。

以下の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 --reload

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

sudo firewall-cmd --list-services

出力 :

この時点で、FQDNの設定を完了し、BINDパッケージをインストールし、firewalldも設定しました。これを考慮して、今からマスターサーバーでBINDマスターの設定を開始できます。

マスターBIND DNSサーバーの設定

このステップでは、Rocky LinuxのBINDマスターサーバーをns1.howtoforge.localとして設定し、サーバーのIPアドレスは192.168.5.100です。マスターサーバーで以下のコマンドを実行してください。

BINDマスターサーバーを以下の手順で構成します:

  • 基本設定には、ACL(アクセス制御リスト)の設定、BINDサービスを実行するためのIPアドレスの設定、フォワーダーの設定などが含まれます。
  • ゾーンの設定 - ここであなたのドメインの設定を作成します。これには、メインドメインの設定と逆引きDNSの設定が含まれます。

基本設定

RHELベースのディストリビューションのデフォルトBIND設定は'/etc/named.conf'で利用可能です。

/etc/named.confファイルを以下のnanoエディタコマンドを使用して開いてください。

sudo nano /etc/named.conf

次の行でデフォルトの設定を変更します。

acl "trusted" {
        192.168.5.100;    # ns1 - or you can use localhost for ns1
        192.168.5.120;    # ns2
        192.168.5.0/24;  # trusted networks
};
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を設定します。
  • '192.168.5.100'のデフォルトポート'53'でBINDサービスを実行します。
  • 再帰を有効にし、'信頼された' ACLネットワークからの再帰を許可します。
  • IPアドレス'192.168.5.120'のスレーブサーバーにゾーン転送を許可します。
  • Cloudflareの1.1.1.1とGoogleの8.8.8.8を使用して、パブリックDNSサーバーでフォワーダーを設定します。

次に、以下のコマンドを実行してBINDの設定「/etc/named.conf」を確認してください。

sudo named-checkconf /etc/named.conf

最後に、以下のsystemctlコマンドユーティリティを実行してBINDの'named'サービスを再起動し、変更を適用してください。

sudo systemctl restart named

BIND DNSサーバーの基本設定が完了しました。

ゾーンの設定

これからBIND DNSサーバーでゾーンを設定します。新しいDNSサーバーを作成し、アドレスは「ns1.howtoforge.local」と「ns2.howtoforge.local」です。

まず、次の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";        # zone file path
    allow-transfer { 192.168.5.120; };           # ns2 IP address - secondary DNS
};

zone "5.168.192.in-addr.arpa" {
    type master;
    file "db.192.168.5";  # subnet 192.168.5.0/24
    allow-transfer { 192.168.5.120; };  # ns2 private IP address - secondary DNS
};

作業が完了したら、ファイルを保存して閉じてください。

この設定では、次の設定を定義します:

  • howtoforge.localのために2つのゾーンと、逆引きDNS5.168.192.in-addr.arpaを作成します。
  • 両方のゾーンタイプは「マスター」として分類されます。
  • スレーブDNSサーバーにゾーントランスファーを許可します。このサーバーはIPアドレス192.168.5.120で実行されます。

次に、次の nano エディタコマンドを使用して、新しい DNS ゾーン構成を作成します。'/var/named/db.howtoforge.local',

sudo nano /var/named/db.howtoforge.local

ファイルに以下の行を追加してください。

;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
; NS records for name servers
    IN      NS      ns1.howtoforge.local.
    IN      NS      ns2.howtoforge.local.
; A records for name servers
ns1.howtoforge.local.          IN      A       192.168.5.100
ns2.howtoforge.local.          IN      A       192.168.5.120
; Mail handler or MX record for the domain howtoforge.local
howtoforge.local.    IN     MX   10   mail.howtoforge.local.
; A records for domain names
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' に解決するように定義します。
  • あなたはまた、メールサーバー「mail.howtoforge.local」が処理するドメイン「howtoforge.local」のMXレコードを作成します。

次に、howtoforge.local ドメインの逆引きDNSを設定し始めます。

以下のnanoエディタコマンドを使用して、新しい逆DNS構成'/var/named/db.192.168.5'を作成してください。

sudo nano /var/named/db.192.168.5

ファイルに以下の行を追加してください。

;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
; name servers - NS records
      IN      NS      ns1.howtoforge.local.
      IN      NS      ns2.howtoforge.local.
; PTR Records
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アドレスの最後の数字を使用します。この例では、IPアドレス'192.168.5.100'を持つネームサーバーns1.howtoforge.localがあり、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-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構成があれば、次のスクリーンショットのような出力を受け取ることができます。

最後に、以下の 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 - or you can use localhost for ns1
        192.168.5.120;    # ns2
        192.168.5.0/24;  # trusted networks
};
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'は'なし'に設定されています。

次に、ゾーンを定義するために'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 address - master DNS
};

zone "5.168.192.in-addr.arpa" {
    type slave;
    file "slaves/db.192.168.5";
    masters { 192.168.5.100; };  # ns1 IP address - master DNS
};

作業が完了したら、ファイルを保存して閉じてください。

これにより、BINDスレーブサーバーで以下のいくつかの設定を定義します:

  • howtoforge.localのための2つのゾーンとその逆引きDNSを定義します。
  • 両方のゾーンタイプは「スレーブ」です。
  • 各自のゾーンファイルは、BINDマスターサーバーから転送された'/var/named/slaves'ディレクトリから取得されます。

次に、BINDの設定を確認するために、以下の「named-checkconf」コマンドユーティリティを実行します。その後、以下のsystemctlコマンドを使用して、スレーブサーバーでBINDの「named」サービスを再起動します。

sudo named-checkconf
sudo systemctl restart named

正しいBIND設定があれば、エラーメッセージは表示されません。

最後に、次の systemctl コマンドを実行して、スレーブサーバーで BIND の 'named' サービスが実行されていることを確認してください。

sudo systemctl status named

次のような出力を受け取ることになります - BIND 'named' サービスは BIND スレーブサーバーで実行されています。

この時点で、マスター・スレーブアーキテクチャを使用した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.local
dig 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アドレスの逆引きDNSをチェックおよび確認してください。

今、あなたは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.hwdomain.io」に逆引きされるのを確認するべきです。

nslookup 192.168.5.100
nslookup 192.168.5.120
nslookup 192.168.5.50
nslookup 192.168.5.15

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

結論

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

関連記事: