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 -fBINDパッケージのインストール
BINDパッケージは、Ubuntuサーバーリポジトリにデフォルトで利用可能です。これで、「ns1」と「ns2」サーバーの両方でaptコマンドを使用してBINDを簡単にインストールできます。
以下のaptコマンドを実行して、Ubuntuリポジトリを更新およびリフレッシュします。
sudo apt updateその後、次のコマンドを使用してBINDパッケージをインストールします。インストールを確認するために Y を入力し、 ENTER を押して続行します。インストールが開始されます。
sudo apt install bind9 bind9utils bind9-doc dnsutils
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
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完了したら、ファイルを保存して閉じます。

次に、デフォルトの逆ゾーン構成ファイルを「 /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完了したら、ファイルを保存して閉じます。

次に、次のコマンドを実行して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
BINDマスター構成を完了するには、以下のコマンドを実行してBINDサービスを再起動し、行った構成の新しい変更を適用します。
sudo systemctl restart namedBINDスレーブの設定
これで、マスタ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
最後に、次のコマンドを実行して「 ns2 」サーバーのBINDサービス「 named 」を確認し、「 named 」サービスが実行されていることを確認します。
sudo systemctl status named
クライアントマシンからの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-utilsDNSユーティリティをシステムにインストールした後、クライアントマシンからすべての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
dig mail.howtoforge.local +short
dig 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.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
結論
おめでとうございます!このチュートリアルを通じて、Ubuntu 22.04サーバーでのBIND DNSサーバーのインストールと構成を学びました。2つの異なるUbuntuサーバーを使用して、マスター-スレーブBIND DNSサーバーを正常に構成しました。また、DNSレコードと構成を確認および検証するためのDigおよびNslookupの基本コマンドを学びました。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。