ドメインネームサービス(DNS)

ドメインネームサービス(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.hintsdns-root-dataパッケージに同梱されているnamed.conf.default-zones設定ファイルで参照されるようになりました。

同じサーバーをキャッシュネームサーバー、プライマリ、およびセカンダリに構成することができます。, サーバーでの権限(SOA)のための一つのゾーンを提供しながら、二次サービス別のゾーンです。 ローカルLAN上のホストにキャッシュサービスを提供しています。

Caching Nameserver

デフォルトの構成はキャッシュサーバーとして機能します。 コメントを解除して編集するだけです/etc/bind/named.conf.optionsISPの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.comexample.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.comipアドレスに名前を解決できるかどうかをテストします。, コマンドの出力は次のようになります。

named-checkzone

ゾーンファイルをテストするのに最適な方法は、named-checkzonebind9パッケージと共にインストールされた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ヶ月前。 フォーラムでこの文書の改善に役立ちます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ツールバーへスキップ