ドメインネームサービス(DNS)は、IPアドレスと完全修飾ドメイン名(FQDN)を互いにマップするインターネ このようにして、DNSはIPアドレスを覚えておく必要性を軽減します。 コンピュータに実行DNSという名前のサーバー Ubuntuには、LINUX上でネームサーバーを維持するために使用される最も一般的なプログラムBIND(Berkley Internet Naming Daemon)が付属しています。,
ターミナルプロンプトで、次のコマンドを入力してdnsをインストールします。
sudo apt install bind9
DNSの問題のテストとトラブルシューティングに非常に便利なパッケージは、dnsutils
パッケージです。 非常に多くの場合、これらのツールはすでにインストールされていますが、dnsutils
次のように入力します。
sudo apt install dnsutils
構成
BIND9を設定する方法はたくさんあります。 最も一般的な構成は、キャッシュネームサーバの起動、サーバ、および二次サーバーです。,
-
キャッシュネームサーバーとして構成されている場合BIND9は、名前クエリに対する答えを見つけ、ドメインが再度照会されたときの答えを記憶します。
-
プライマリサーバーとして、BIND9はホスト上のファイルからゾーンのデータを読み取り、そのゾーンに対して権限を持ちます。
-
セカンダリサーバーとして、BIND9はゾーンに対して権限のある別のネームサーバーからゾーンデータを取得します。
概要
DNS設定ファイルは/etc/bind
ディレクトリに格納されます。, プライマリ構成ファイルは/etc/bind/named.conf
で、パッケージによって提供されるレイアウトにはこれらのファイルだけが含まれています。
ルートネームサーバーは、/etc/bind/db.root
ファイルに記述されていました。 これは、代わりに/usr/share/dns/root.hints
dns-root-data
パッケージに同梱されているnamed.conf.default-zones
設定ファイルで参照されるようになりました。
同じサーバーをキャッシュネームサーバー、プライマリ、およびセカンダリに構成することができます。, サーバーでの権限(SOA)のための一つのゾーンを提供しながら、二次サービス別のゾーンです。 ローカルLAN上のホストにキャッシュサービスを提供しています。
Caching Nameserver
デフォルトの構成はキャッシュサーバーとして機能します。 コメントを解除して編集するだけです/etc/bind/named.conf.options
ISPのDNSサーバーのIPアドレスを設定します。
forwarders { 1.2.3.4; 5.6.7.8;};
注
1.2.3.4
および5.6.7.8
実際のネームサーバーのアドレス。,
新しい構成を有効にするには、DNSサーバーを再起動します。 ターミナルプロンプトから:
sudo systemctl restart bind9.service
キャッシュDNSサーバーのテストについては、digを参照してください。
プライマリサーバー
このセクションでは、BIND9はドメインのプライマリサーバーとして構成されますexample.com
。 example.com
をFQDN(完全修飾ドメイン名)に置き換えるだけです。,
フォワードゾーンファイル
BIND9にDNSゾーンを追加し、BIND9をプライマリサーバーに変換するには、まず/etc/bind/named.conf.local
:
zone "example.com" { type master; file "/etc/bind/db.example.com";};
注
bindがDDNSと同様にファイルの自動更新使用
/var/lib/bind/db.example.com
ではなく、/etc/bind/db.example.com
ここで、および以下のcopyコマンドの両方で。,
既存のゾーンファイルをテンプレートとして使用して、/etc/bind/db.example.com
ファイルを作成します。
sudo cp /etc/bind/db.local /etc/bind/db.example.com
新しいゾーンファイル/etc/bind/db.example.com
を編集し、localhost.
を最後に追加の.
を残して、サーバーのfqdn。, 127.0.0.1
をネームサーバーのIPアドレスに変更し、root.localhost
を有効なメールアドレスに変更しますが、.
通常の@
シンボルの代わりに.
最後に.
を残します。 コメントを変更して、このファイルが対象のドメインを示します。
ベースドメインのAレコードexample.com
を作成します。 また、次の例のネームサーバーであるns.example.com
のAレコードを作成します。
ゾーンファイルに変更を加えるたびにシリアル番号をインクリメントする必要があります。, BIND9を再起動する前に複数の変更を行う場合は、シリアルを一度インクリメントするだけです。
これで、ゾーンファイルの下部にDNSレコードを追加できます。 共通した記録種です。,
注意
多くの管理者は、2020012100のようなゾーンのシリアルとして編集された最後の日付を使用したいyyyymmddss(ssはシリアル番号です)
ゾーンファイルに変更を加えたらBIND9を再起動する必要があります変更を有効にするには:
sudo systemctl restart bind9.service
リバースゾーンファイル
ゾーンがセットアップされ、名前をipアドレスに解決するために、dnsがアドレスを名前に解決できるようにするために、リバースゾーンを追加する必要があります。,
編集/etc/bind/named.conf.local
次を追加します。
zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192";};
注
1.168.192
を使用しているネットワークの最初の三つのオクテットに置き換えます。 また、ゾーンファイルに/etc/bind/db.192
と適切に名前を付けます。 ネットワークの最初のオクテットと一致する必要があります。,
ここで、/etc/bind/db.192
ファイルを作成します。
sudo cp /etc/bind/db.127 /etc/bind/db.192
次の編集/etc/bind/db.192
/etc/bind/db.example.com
と同じオプションを変更します。
シリアル逆ゾーン内の数値も変更ごとにインクリメントする必要があります。 /etc/bind/db.example.com
で設定するレコードごとに、つまり別のアドレスに対して、/etc/bind/db.192
でPTRレコードを作成する必要があります。,
リバースゾーンファイルを作成した後、BIND9を再起動します。
sudo systemctl restart bind9.service
セカンダリサーバー
プライマリサーバーが構成されたら、プライマリが使用できなくなった場合にドメインの可用性を維持するために、セカンダリサーバーを強くお勧めします。
まず、プライマリサーバー上で、ゾーン転送を許可する必要があります。, allow-transfer
オプションを/etc/bind/named.conf.local
の順方向および逆方向のゾーン定義の例に追加します。
注
192.168.1.11
をセカンダリネームサーバーのIPアドレスに置き換えます。
プライマリサーバーでBIND9を再起動します。
sudo systemctl restart bind9.service
次に、セカンダリサーバーで、プライマリと同じ方法でbind9パッケージをインストールします。, 次に、/etc/bind/named.conf.local
を編集し、順方向および逆方向のゾーンに対して次の宣言を追加します。
注
192.168.1.10
をプライマリネームサーバーのIPアドレスに置き換えます。,
セカンダリサーバーでBIND9を再起動します。
sudo systemctl restart bind9.service
/var/log/syslog
次のようなものが表示されます(一部の行はこのドキュメントの形式に合わせて分割されています)。
注
注:ゾーンは、プライマリのシリアル番号がセカンダリのシリアル番号よりも大きい場合にのみ転送されます。, プライマリDNSに他のセカンダリDNSサーバーにゾーンの変更を通知させる場合は、次の例に示すように、
also-notify { ipaddress; };
を/etc/bind/named.conf.local
に追加できます。
注
権限のないゾーンファイルのデフォルトディレクトリは次のとおりです。
/var/cache/bind/
. このディレクトリが設定されAppArmorの名前のデーモンを書いています。 AppArmorの詳細については、Security-AppArmorを参照してください。,
トラブルシューティング
このセクションでは、DNSおよびBIND9構成の問題の診断について説明します。
テスト
resolv.conf
BIND9をテストする最初のステップは、ネームサーバーのIPアドレスをホストリゾルバーに追加することです。 第一のネームサーバの起動設定とは別のホストへのダブルチェック。 ネットワーククライアン, 最後に、nameserver
の行/etc/resolv.conf
指している必要があります127.0.0.53
ドメインのsearch
パラメータ。 次のようなものです。
nameserver 127.0.0.53search example.com
ローカルリゾルバが使用しているDNSサーバーを確認するには、次のように実行します。
systemd-resolve --status
注
プライマリが使用できなくなった場合に備えて、セカンダリネームサーバーのIPアドレスをクライアント構成に追加する必要があります。,
dig
dnsutilsパッケージをインストールした場合は、DNSルックアップユーティリティdigを使用してセットアップをテストできます。
-
BIND9をインストールした後、ループバックインターフェイスに対してdigを使用して、ポート53でリッスンしていることを確認します。,I>
BIND9をキャッシュネームサーバーとして設定した場合、クエリ時間をチェックするために外部ドメインを”掘る”:
dig ubuntu.com
コマンド出力の終わりに向かってクエリ時間に注意してください:
;; Query time: 49 msec
第二の掘る後に改善があるはずです:
;; Query time: 1 msec
Ping
アプリケーションがdnsを使用してホスト名を解決する方法を示すために、pingユーティリティを使用してicmpエコー要求を送信します。
ping example.com
これは、ネームサーバーがns.example.com
ipアドレスに名前を解決できるかどうかをテストします。, コマンドの出力は次のようになります。
named-checkzone
ゾーンファイルをテストするのに最適な方法は、named-checkzone
bind9
パッケージと共にインストールされたnamed-checkzone
ユーティリティを使用することです。 このユーティリティを使用すると、BIND9を再起動して変更をライブにする前に、構成が正しいことを確認できます。,
-
この例のフォワードゾーンファイルをテストするには、コマンドプロンプトから次のように入力します。
named-checkzone example.com /etc/bind/db.example.com
すべてが正しく構成されている場合、次のような出力が表示されます。
zone example.com/IN: loaded serial 6OK
-
同様に、リバースゾーンファイルをテストするには、次のように入力します。
named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192
出力は次のようになります。
zone 1.168.192.in-addr.arpa/IN: loaded serial 3OK
注意
ゾーンファイルのシリアル番号はおそらく異なります。,
クイック一時クエリロギング
rndc
ツールを使用すると、サービスを再起動したり、構成ファイルを変更したりすることなく、クエリロギングをすばやくオンまたはオフにすることができます。
クエリログをオンにするには、次のコマンドを実行します。
sudo rndc querylog on
同様に、オフにするには、次のコマンドを実行します。
sudo rndc querylog off
ログはsyslogに送信され、/var/log/syslog
デフォルトでは
iv id=”f6e6b4daa9″querylog
を有効にすることによって生成されるログの量は膨大になる可能性があります!,
Logging
BIND9にはさまざまなロギング設定オプションがありますが、二つの主なものはチャネルとカテゴリで、ログがどこに行くか、どの情報がログに記録されるかをそれぞれ設定します。
ロギングオプションが設定されていない場合、デフォルトの設定は次のとおりです。
logging { category default { default_syslog; default_debug; }; category unmatched { null; };};
代わりに、DNSクエリに関連するデバッグメッセージを別のファイルに送信するようにBIND9を設定しましょう。
メッセージを送信するファイルとカテゴリを指定するようにチャネルを設定する必要があります。, この例では、カテゴリはすべてのクエリを記録します。 編集/etc/bind/named.conf.local
次を追加します。
logging { channel query.log { file "/var/log/named/query.log"; severity debug 3; }; category queries { query.log; };};
注意
デバッグオプションは1から3まで設定できます。 レベルが指定されていない場合は、レベル1がデフォルトです。,
-
名前付きデーモンはbindユーザーとして実行されるため、
/var/log/named
ディレクトリを作成し、所有権を変更する必要があります。sudo mkdir /var/log/namedsudo chown bind:bind /var/log/named
-
変更を有効にするにはBIND9を再起動します。
sudo systemctl restart bind9.service
ファイルが表示されます/var/log/named/query.log
クエリ情報を入力します。 これはBIND9ロギングオプションの簡単な例です。 象先のオプション参照。,
一般的なレコードタイプ
このセクションでは、最も一般的なDNSレコードタイプのいくつかについて説明します。
-
A
レコード:このレコードは、IPアドレスをホスト名にマップします。www IN A 192.168.1.12
-
CNAME
レコード:既存のAレコードにエイリアスを作成するために使用されます。 別のCNAME
レコードを指すCNAME
レコードを作成することはできません。web IN CNAME www
-
MX
レコード:電子メールを送信する場所を定義するために使用されます。,A
レコードを指す必要があります。CNAME
ではありません。@ IN MX 1 mail.example.com.mail IN A 192.168.1.13
-
NS
レコード:ゾーンのコピーを提供するサーバーを定義するために使用されます。 これは、A
レコードを指している必要があります。CNAME
ではありません。 この一次および二次サーバが定義されています。@ IN NS ns.example.com.@ IN NS ns2.example.com.ns IN A 192.168.1.10ns2 IN A 192.168.1.11
詳細情報
-
上流BIND9ドキュメント
-
Bind9.net DNSおよびBIND9リソースの大規模なコレクションへのリンクがあります。,
-
DNSとBINDは現在、第五版で人気のある本です。 DnsとBIND on IPv6の本もあります。
-
BIND9の支援を求め、Ubuntuサーバーコミュニティに参加するのに最適な場所は、freenodeの#ubuntu-server IRCチャンネルです。
最終更新10ヶ月前。 フォーラムでこの文書の改善に役立ちます。