DNS設定 · 4 min read · Sep 09, 2025

Ubuntu 22.04でBINDを使用してDNSサーバーを設定する方法

BIND(バークレーインターネットネームドメイン)は、無料でオープンソースのDNSサーバーソフトウェアです。インターネット上のDNSの70%以上で使用されている最も人気のあるDNSサーバーソフトウェアの1つです。BINDは1980年代から存在しており、その柔軟性、パフォーマンス、機能で知られています。BINDは、権威DNSおよびキャッシングDNSの両方として使用でき、負荷分散、動的更新、スプリットDNS、DNSSEC、IPv6などをサポートしています。

BIND DNSソフトウェアは、Unix系オペレーティングシステム向けの最も信頼性の高いDNSサーバーの1つです。ほとんどのLinuxディストリビューションで利用可能で、DNSサーバーの診断およびテストのための追加ツールを提供します。

このガイドでは、Ubuntu 22.04サーバーでBINDを使用してDNSサーバーをインストールする方法を学びます。このチュートリアルでは、2つのUbuntuサーバーを使用してマスター-スレーブBIND DNSサーバーのインストールを設定する方法を示します。

前提条件

このガイドを始める前に、以下の要件を満たしている必要があります:

  • 2つのUbuntu 22.04サーバー。
  • root/管理者権限を持つ非rootユーザー。

FQDN(完全修飾ドメイン名)の設定

BINDパッケージのインストールを開始する前に、サーバーのホスト名とFQDNが正しいことを確認する必要があります。このデモでは、次の詳細を持つ2つのUbuntuサーバーを使用します:

Hostname    IP Address      FQDN                Used As  
---------------------------------------------------------  
ns1         192.168.5.21    ns1.howtoforge.local     BIND Master  
ns2         192.168.5.22    ns2.howtoforge.local     BIND Slave

各サーバーにログインし、次のコマンドを実行してFQDN(完全修飾ドメイン名)を設定します。

ns1 」サーバーでFQDNを設定します。

sudo hostnamectl set-hostname ns1.howtoforge.local

ns2 」サーバーでFQDNを設定します。

sudo hostnamectl set-hostname ns2.howtoforge.local

次に、次のコマンドを使用して「 /etc/hosts 」ファイルを編集します。

sudo nano /etc/hosts

各サーバーに次の構成を追加します。

192.168.5.21 ns1.howtoforge.local ns1  
192.168.5.22 ns2.howtoforge.local ns2

完了したら、ファイルを保存して閉じます。

最後に、次のコマンドを使用して各サーバーでFQDNを確認します。「 ns1 」サーバーではFQDNが「 ns1.howtoforge.local 」として表示され、「 ns2 」サーバーでは出力が「 ns2.howtoforge.local 」として表示されます。

sudo hostname -f

BINDパッケージのインストール

BINDパッケージは、Ubuntuサーバーリポジトリにデフォルトで利用可能です。これで、「ns1」と「ns2」サーバーの両方でaptコマンドを使用してBINDを簡単にインストールできます。

以下のaptコマンドを実行して、Ubuntuリポジトリを更新およびリフレッシュします。

sudo apt update

その後、次のコマンドを使用してBINDパッケージをインストールします。インストールを確認するために Y を入力し、 ENTER を押して続行します。インストールが開始されます。

sudo apt install bind9 bind9utils bind9-doc dnsutils

install bind

BINDのインストールが完了したら、次のコマンドを使用して「 /etc/default/named 」の構成を編集します。

sudo nano /etc/default/named

OPTIONS= 」行では、BINDサービスが実行されているときに特定のオプションを設定できます。このデモでは、IPv4のみでBINDを実行するため、「 OPTIONS 」行を以下のように設定する必要があります。

OPTIONS="-u bind -4"

完了したら、ファイルを保存して閉じます。

次に、以下のコマンドを実行してBINDサービス「 named 」を再起動します。その後、BINDサービスのステータスを確認して確認します。両方のサーバーでBINDサービス「 named 」が実行されていることが表示されるはずです。

sudo systemctl restart named  
sudo systemctl status named

setup bind

BINDマスターの設定

「ns1」と「ns2」サーバーの両方にBINDパッケージをインストールした後、BIND DNSサーバーを設定します。「ns1」サーバーをBIND DNSサーバーのマスターとして設定します。BINDを単一のサーバーで実行できますが、高可用性DNSサーバーを設定するために複数のサーバーを使用することをお勧めします。

ns1 」サーバーのターミナルセッションに戻ります。

次のコマンドを実行して構成ファイル「 /etc/bind/named.conf.options 」を編集します。

sudo nano /etc/bind/named.conf.options

ファイルの先頭に次の構成を追加します。「 options {….}; 」行の前に。

この構成では、「 trusted 」という名前のACL(アクセス制御リスト)を作成し、環境内のすべての信頼されたIPアドレスとネットワークを含めます。また、ローカルサーバーIPアドレス「 ns1 」と「 ns2 」のセカンダリDNSサーバーのIPアドレスを追加することを確認してください。

acl "trusted" {  
        192.168.5.21;    # ns1 - またはns1のためにlocalhostを使用できます  
        192.168.5.22;    # ns2  
        192.168.5.0/24;  # 信頼されたネットワーク  
};

次に、「 options {..}; 」セクションを以下のように変更します。

以下の例では、オプション「 listen-on-v6 」をコメントアウトしてIPv6のサポートを無効にし、「 trusted 」ACLからの再帰を有効にし、特定の「 ns1 」IPアドレス「 192.168.5.21 」でBINDサービスを実行します。また、デフォルトのゾーントランスファーを無効にし、BIND DNSサーバーの特定のフォワーダーをGoogle Public DNS「 8.8.8.8 」および「 8.8.4.4 」に定義します。

options {  
        directory "/var/cache/bind";  
        //listen-on-v6 { any; };        # IPv6でのbindを無効にする  
        recursion yes;                 # 再帰的クエリを有効にする  
        allow-recursion { trusted; };  # "trusted"からの再帰的クエリを許可する - ACLを参照  
        listen-on { 192.168.5.21; };   # ns1 IPアドレス  
        allow-transfer { none; };      # デフォルトでゾーントランスファーを無効にする  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };  
};

完了したら、ファイルを保存して閉じます。

最後に、次のコマンドを実行して構成ファイル「 /etc/bind/named.conf.options 」を確認して確認します。出力メッセージが表示されない場合、構成は正しいです。

sudo named-checkconf /etc/bind/named.conf.options

ゾーンの設定

BINDマスターの基本構成を設定した後、ドメイン名のゾーンを設定します。以下の例では、ドメイン名「 howtoforge.local 」を使用し、ネームサーバー「 ns1.howtoforge.local 」および「 ns2.howtoforge.local 」を使用します。

次のコマンドを使用して構成ファイル「 /etc/bind/named.local 」を編集します。

sudo nano /etc/bind/named.conf.local

この構成では、ドメイン名のための前方ゾーンと逆ゾーンの2つのゾーンファイルを定義します。前方ゾーンには、ドメイン名がIPアドレスに解決される場所の構成が含まれ、逆ゾーンはIPアドレスをどのドメイン名に変換するかを示します。

以下の例では、ドメイン「 howtoforge.local 」のための前方ゾーン「 /etc/bind/zones/db.howtoforge.local 」と逆ゾーン「 /etc/bind/zones/db.192.168.5 」を定義します。

zone "howtoforge.local" {  
    type master;  
    file "/etc/bind/zones/db.howtoforge.local"; # ゾーンファイルパス  
    allow-transfer { 192.168.5.22; };           # ns2 IPアドレス - セカンダリDNS  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type master;  
    file "/etc/bind/zones/db.192.168.5";  # サブネット192.168.5.0/24  
    allow-transfer { 192.168.5.22; };  # ns2プライベートIPアドレス - セカンダリDNS  
};

完了したら、ファイルを保存して閉じます。

次に、次のコマンドを実行して新しいディレクトリ「 /etc/bind/zones 」を作成します。このディレクトリはゾーン構成ファイルを保存するために使用されます。

sudo mkdir -p /etc/bind/zones/

その後、デフォルトの前方ゾーン構成「 /etc/bind/zones/db.howtoforge.local 」をコピーし、次のコマンドを使用してファイルを編集します。

sudo cp /etc/bind/db.local /etc/bind/zones/db.howtoforge.local  
sudo nano /etc/bind/zones/db.howtoforge.local

デフォルトのSOAレコードをドメイン名に変更します。また、ファイルに変更を加えるたびにSOAレコード内の「 Serial 」番号を変更する必要があり、この番号はセカンダリ/スレーブDNSサーバーと同じでなければなりません。

次に、DNSサーバーのNSレコードとAレコードを定義できます。この例では、ネームサーバーは「 ns1.howtoforge.local 」でAレコードのIPアドレスは「 192.168.5.21 」であり、「 ns2.howtoforge.local 」はセカンダリDNSサーバーのIPアドレス「 192.168.5.22 」を持ちます。

最後に、他のドメイン名を定義できます。この例では、ドメイン「 howtoforge.local 」のためのMXレコード(メールハンドラー)を定義し、メールサーバー「 mail.howtoforge.local 」によって処理されます。また、ドメイン名「 howtoforge.local 」はIPアドレス「 192.168.5.100 」を持つサーバーに解決され、メールサーバー「 mail.howtoforge.local 」のサブドメインはIPアドレス「 192.168.5.120 」を持つサーバーに解決されます。

;  
; ローカルループバックインターフェースのためのBINDデータファイル  
;  
$TTL    604800  
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (  
                              3         ; Serial  
                         604800         ; Refresh  
                          86400         ; Retry  
                        2419200         ; Expire  
                         604800 )       ; Negative Cache TTL  
;  
; ネームサーバーのNSレコード  
    IN      NS      ns1.howtoforge.local.  
    IN      NS      ns2.howtoforge.local.  
; Aレコードのネームサーバー  
ns1.howtoforge.local.          IN      A       192.168.5.21  
ns2.howtoforge.local.          IN      A       192.168.5.22  
; ドメインhowtoforge.localのメールハンドラーまたはMXレコード  
howtoforge.local.    IN     MX   10   mail.howtoforge.local.  
; ドメイン名のAレコード  
howtoforge.local.            IN      A      192.168.5.100  
mail.howtoforge.local.       IN      A      192.168.5.120

完了したら、ファイルを保存して閉じます。

setup forward zone

次に、デフォルトの逆ゾーン構成ファイルを「 /etc/bind/zones/db.192.168.5 」にコピーし、次のコマンドを使用して新しいファイルを編集します。

sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168.5  
sudo nano /etc/bind/zones/db.192.168.5

デフォルトのSOAレコードをドメイン名に変更します。また、SOAレコード内の「 Serial 」番号を変更することを忘れないでください。

DNSサーバーのNSレコードを定義します。これらは前方ゾーンで使用したのと同じネームサーバーです。

最後に、ドメイン名のPTRレコードを定義します。PTRレコードの番号はIPアドレスの最後の番号です。この例では、ネームサーバー「 ns1.howtoforge.local 」はIPアドレス「 192.168.5.21 」に解決されるため、PTRレコードは「 21 」となり、他のドメイン名についても同様です。

;  
; ローカルループバックインターフェースのためのBIND逆データファイル  
;  
$TTL    604800  
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (  
                              3         ; Serial  
                         604800         ; Refresh  
                          86400         ; Retry  
                        2419200         ; Expire  
                         604800 )       ; Negative Cache TTL  
;  
; ネームサーバー - NSレコード  
      IN      NS      ns1.howtoforge.local.  
      IN      NS      ns2.howtoforge.local.  
; PTRレコード  
21   IN      PTR     ns1.howtoforge.local.    ; 192.168.5.21  
22   IN      PTR     ns2.howtoforge.local.    ; 192.168.5.22  
100  IN      PTR     howtoforge.local.        ; 192.168.5.100  
120  IN      PTR     mail.howtoforge.local.   ; 192.168.5.120

完了したら、ファイルを保存して閉じます。

setup reverse zone

次に、次のコマンドを実行してBIND構成を確認し、エラーメッセージが表示されないことを確認します。

sudo named-checkconf

次に、次のコマンドを実行して、作成した各ゾーンファイル(前方ゾーンおよび逆ゾーン構成ファイル)を確認して確認します。ゾーンファイルにエラーがない場合、「 OK 」という出力メッセージが表示されます。エラーがない場合、コマンドはファイルのどの行がエラーを引き起こしたかを示します。

sudo named-checkzone howtoforge.local /etc/bind/zones/db.howtoforge.local  
sudo named-checkzone 5.168.192.in-addr.arpa /etc/bind/zones/db.192.168.5

check zone files

BINDマスター構成を完了するには、以下のコマンドを実行してBINDサービスを再起動し、行った構成の新しい変更を適用します。

sudo systemctl restart named

BINDスレーブの設定

これで、マスタBIND DNSサーバーの構成が完了しました。「ns2」サーバーをBIND DNSサーバーのセカンダリまたはスレーブとして設定する時が来ました。

マスターサーバーは、ドメインのDNS構成を含むゾーンファイルを保存し、再帰的または反復的なクエリを処理します。セカンダリ/スレーブDNSサーバーは、DNSレコードを一時的に保存し、これらのDNSレコードはマスターBINDサーバーから自動的に転送されます。

次に、「 ns2 」ターミナルセッションに移動し、「 ns2 」サーバーをBIND DNSサーバーのセカンダリ/スレーブとして設定します。

次のコマンドを実行して構成ファイル「 /etc/bind/named.conf.options 」を編集します。

sudo nano /etc/bind/named.conf.options

行の先頭に次の構成を追加します。これにより、マスターサーバーと同じACL(アクセス制御リスト)が作成されます。

acl "trusted" {  
        192.168.5.21;    # ns1  
        192.168.5.22;    # ns2 - またはns2のためにlocalhostを使用できます  
        192.168.5.0/24;  # 信頼されたネットワーク  
};

options {…}; 」行の中で、以下のように構成を変更できます。この構成は、マスターBIND DNSサーバーと同じですが、唯一の違いは「 listen-on* 」オプションが「 ns2** 」サーバーのIPアドレスに指定されていることです。

options {  
        directory "/var/cache/bind";  
        //listen-on-v6 { any; };        # IPv6でのbindを無効にする  
        recursion yes;                 # 再帰的クエリを有効にする  
        allow-recursion { trusted; };  # "trusted"からの再帰的クエリを許可する - ACLを参照  
        listen-on { 192.168.5.22; };   # ns2 IPアドレス  
        allow-transfer { none; };      # デフォルトでゾーントランスファーを無効にする  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };  
};

完了したら、ファイルを保存して閉じます。

次に、次のコマンドを使用して構成ファイル「 /etc/bind/named.conf.local 」を編集し、「 ns2 」サーバーをセカンダリ/スレーブDNSサーバーとして設定します。

sudo nano /etc/bind/named.conf.local

ファイルに次の構成を追加します。前方ゾーンと逆ゾーンを定義していますが、「 type slave 」とDNSマスターサーバー「 192.168.5.21 」を定義しています。ゾーンファイルを作成する必要はありません。なぜなら、DNSレコードとデータはマスターサーバーから自動的に転送され、セカンダリ/スレーブDNSサーバーに一時的に保存されるからです。

zone "howtoforge.local" {  
    type slave;  
    file "/etc/bind/zones/db.howtoforge.local";  
    masters { 192.168.5.21; };           # ns1 IPアドレス - マスターDNS  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type slave;  
    file "/etc/bind/zones/db.192.168.5";  
    masters { 192.168.5.21; };  # ns1 IPアドレス - マスターDNS  
};

完了したら、ファイルを保存して閉じます。

次に、次のコマンドを実行してBIND構成を確認し、すべての構成が正しいことを確認します。その後、「 ns2 」サーバーでBINDサービス「named」を再起動して新しい変更を適用します。これで、「 ns2 」サーバーのBIND DNSサーバーのセカンダリ/スレーブとしての構成が完了しました。

sudo named-checkconf  
sudo systemctl restart named

setup secondary dns

最後に、次のコマンドを実行して「 ns2 」サーバーのBINDサービス「 named 」を確認し、「 named 」サービスが実行されていることを確認します。

sudo systemctl status named

check named status secondary dns

クライアントマシンからのDNSサーバーの確認

クライアントマシンでは、DNSリゾルバーを設定する方法はいくつかあります。NetworkManagerまたはnetplan構成からDNSリゾルバーを設定できます。しかし、最も簡単な方法は、ファイル「 /etc/resolv.conf 」を通じて手動でDNSリゾルバーを設定することです。これにより、クライアントマシンのための静的DNSリゾルバーを設定できます。

次のコマンドを実行してデフォルトのリンクファイル「 /etc/resolv.conf 」を削除し、nanoエディタを使用して新しいファイルを作成します。

sudo unlink /etc/resolv.conf  
sudo nano /etc/resolv.conf

ファイルに次の構成を追加します。以下の構成では、BIND DNSマスター、セカンダリBIND DNSサーバー、およびパブリックGoogle DNSリゾルバーの3つの異なるリゾルバーを定義しています。クライアントマシンがドメイン名に関する情報を要求すると、その情報はDNSリゾルバーから上から下に取得されます。

nameserver 192.168.5.21  
nameserver 192.168.5.22  
nameserver 8.8.8.8  
search howtoforge.local

完了したら、ファイルを保存して閉じます。

次に、以下のコマンドを実行してクライアントマシンにDNSユーティリティをインストールします。この例では、クライアントマシンはUbuntuシステムであるため、以下のようにaptコマンドを使用してDNSユーティリティをインストールします。

sudo apt install dnsutils bind9-utils

DNSユーティリティをシステムにインストールした後、クライアントマシンからすべてのDNSレコードを確認し始めることができます。

以下のdigコマンドを実行して、ドメイン名「 howtoforge.local 」および「 mail.howtoforge.local 」を確認します。「 howtoforge.local 」はサーバーIPアドレス「 192.168.5.100 」に解決され、サブドメイン「 mail.howtoforge.local 」はサーバーIPアドレス「 192.168.5.120 」によって処理されるはずです。

dig howtoforge.local +short  
dig howtoforge.local

check dns records dig

dig mail.howtoforge.local +short  
dig mail.howtoforge.local

check dns record using dig

次に、以下のdigコマンドを実行して、ドメイン名「howtoforge.local」のメールハンドラーを確認します。「 mail.howtoforge.local 」がメインドメイン「 howtoforge.local 」のメールを処理しているという出力を得るはずです。

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

check mx records

また、nslookupコマンドを使用してドメイン名の逆ゾーン構成を確認できます。

以下のnslookupコマンドを実行して、いくつかのIPアドレスの逆DNSを確認して確認します。

これにより、IPアドレス「 192.168.5.21 」がネームサーバー「 ns1.howtoforge.local 」に逆引きされ、IPアドレス「 192.168.5.22 」がネームサーバー「 ns2.howtoforge.local 」に逆引きされ、IPアドレス「 192.168.5.100 」がメインドメイン名「 howtoforge.local 」に逆引きされ、最後にIPアドレス「 192.168.5.120 」がサブドメイン「 mail.howtoforge.local 」に逆引きされることがわかります。

slookup 192.168.5.21  
slookup 192.168.5.22  
slookup 192.168.5.100  
slookup 192.168.5.120

check reverse dns

結論

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

Share: X/Twitter LinkedIn

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

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