GNU/Linux >> Linux の 問題 >  >> Debian

BIND9を使用してDebian10Busterで独自のDNSリゾルバーを設定する

このチュートリアルでは、広く使用されているBIND9 DNSソフトウェアを使用して、Debian10BusterでローカルDNSリゾルバーを設定する方法を示します。 DNSリゾルバーには多くの同義語があり、その一部を以下に示します。それらはすべて同じものを指します。

  • フルリゾルバー(スタブリゾルバーとは対照的)
  • DNSリカーサー
  • 再帰DNSサーバー
  • 再帰的リゾルバー

また、DNSサーバーはネームサーバーとも呼ばれることに注意してください。 DNSリゾルバーの例は8.8.8.8(GoogleパブリックDNSサーバー)と1.1.1.1(CloudflareパブリックDNSサーバー)です。 PCのOSにもリゾルバーがありますが、機能が制限されているため、スタブリゾルバーと呼ばれます。スタブリゾルバーは、FirefoxなどのアプリケーションからDNS要求を受信し、要求を再帰的リゾルバーに転送する、エンドユーザーのコンピューター上の小さなDNSクライアントです。ほとんどすべてのリゾルバーは、パフォーマンスを向上させるためにDNS応答をキャッシュできるため、DNSサーバーのキャッシュとも呼ばれます。

独自のDNSリゾルバーを実行する理由

通常、コンピュータまたはルーターは、ISPのDNSリゾルバを使用してドメイン名を照会し、IPアドレスを取得します。独自のローカルDNSリゾルバーを実行すると、DNSルックアップを高速化できます。

  1. ローカルDNSリゾルバーはDNS要求のみをリッスンし、他の人のDNS要求には応答しないため、リゾルバーのキャッシュから直接DNS応答を取得する可能性がはるかに高くなります。
  2. コンピューターとDNSリゾルバー間のネットワーク遅延が排除されるため(ほぼゼロ)、DNSクエリをルートDNSサーバーにより迅速に送信できます。

メールサーバーを実行し、DNSブラックリスト(DNSBL)を使用してスパムをブロックする場合は、ローカルDNSリゾルバーを実行してDNSルックアップを高速化することをお勧めします。独自のVPNサーバーをVPS(仮想プライベートサーバー)で実行している場合は、同じVPSにDNSリゾルバーをインストールすることもお勧めします。

インターネットの閲覧履歴をサードパーティのサーバーに保存したくない場合は、独自のDNSリゾルバーを実行することもできます。

Webサイトを所有していて、ドメインレジストラのDNSサーバーを使用する代わりに、独自のDNSサーバーでドメイン名の名前解決を処理する場合は、DNSリゾルバーとは異なる権限のあるDNSサーバーを設定する必要があります。 BINDは、権限のあるDNSサーバーとDNSリゾルバーとして同時に機能できますが、異なるボックスで2つの役割を分離することをお勧めします 。このチュートリアルでは、ローカルDNSリゾルバーを設定する方法を示します。これは、ローカルホスト/ローカルネットワークで使用されるため、暗号化(DNSoverTLSまたはDNSoverHTTPS)は必要ありません。 DoTまたはDoHサーバーのセットアップについては、今後の記事で説明します。

Debianにソフトウェアをインストールするときは、root権限が必要であることに注意してください。 sudoを追加できます コマンドの先頭で、またはsu -を使用します rootユーザーに切り替えるコマンド。

Debian10バスターにBIND9をインストールする

BIND(Berkeley Internet Name Domain)は、安定性と高品質により、Unix/Linuxで広く使用されているオープンソースのDNSサーバーソフトウェアです。もともとはカリフォルニア大学バークレー校によって開発されましたが、1994年に、その開発はInternet Systems Consortium、Inc(ISC)に移されました。

次のコマンドを実行して、デフォルトのリポジトリからDebian10BusterにBIND9をインストールします。 BIND 9は現在のバージョンであり、BIND10はデッドプロジェクトです。

sudo apt update
sudo apt install bind9 bind9utils bind9-doc bind9-host dnsutils

バージョン情報を確認してください。

sudo named -v

サンプル出力:

BIND 9.11.5-P4-5.1-Debian (Extended Support Version) <id:998753c>

バージョン番号とビルドオプションを確認するには、

を実行します
sudo named -V

デフォルトでは、BINDはインストール後に自動的に起動します。次のコマンドでステータスを確認できます:

systemctl status bind9

ヒント:上記のコマンドがすぐに終了しない場合は、Qを押してください。

実行されていない場合は、次のコマンドで開始します:

sudo systemctl start bind9

起動時に自動起動を有効にします:

sudo systemctl enable bind9

BINDサーバーはbindとして実行されます 次のコマンドを実行するとわかるように、インストール中に作成され、TCPおよびUDPポート53でリッスンするuser:

sudo netstat -lnptu | grep named

通常、DNSクエリはUDPポート53に送信されます。TCPポート53は、512バイトを超える応答サイズ用です。

BINDデーモンは名前付きと呼ばれます 。 (デーモンは、バックグラウンドで実行されるソフトウェアの一部です。)named バイナリはbind9によってインストールされます パッケージと別の重要なバイナリがあります:rndcbind9utilsによってインストールされるリモート名デーモンコントローラー パッケージ。 rndc バイナリは、BINDデーモンの他の側面をリロード/停止および制御するために使用されます。通信はTCPポート953を介して行われます。

たとえば、BINDネームサーバーのステータスを確認できます。

sudo rndc status

ローカルDNSリゾルバーの構成

/etc/bind/ BINDの構成を含むディレクトリです。

  • named.conf :他の3つのファイルの構成を含むプライマリ構成ファイル。
  • db.127 :localhostIPv4逆マッピングゾーンファイル。
  • db.local :ローカルホスト転送IPv4およびIPv6マッピングゾーンファイル。
  • db.empty :空のゾーンファイル

Debian10のbind9パッケージにはdb.rootが付属していません ファイル、/usr/share/dns/root.hintsにあるルートヒントファイルを使用するようになりました 。 ルートヒント ファイルは、ルートDNSサーバーを照会するためにDNSリゾルバーによって使用されます。 a.root-servers.netからのルートDNSサーバーの13のグループがあります m.root-servers.netへ 。

箱から出して、DebianのBIND9サーバーはローカルホストとローカルネットワーククライアントにのみ再帰サービスを提供します。外部クエリは拒否されます。したがって、構成ファイルを編集する必要はありません。 BIND 9の構成に慣れるために、とにかく再帰サービスを有効にする方法を紹介します。

メインのBIND構成ファイル/etc/bind/named.conf 他の3つのファイルから設定を取得します。

  • /etc/bind/named.conf.options
  • /etc/bind/named.conf.local
  • /etc/bind/named.conf.default-zones

再帰サービスを有効にするには、最初のファイルを編集します。

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

options 句、次の行を追加します。 allow-recursionのIPアドレスを置き換えます 独自のローカルネットワークアドレスを使用したステートメント。

 // hide version number from clients for security reasons.
 version "not currently available";

 // optional - BIND default behavior is recursion
 recursion yes;

 // provide recursion service to trusted clients only
 allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; };

 // enable the query log
 querylog yes;

ファイルを保存して閉じます。次に、構成ファイルの構文をテストします。

sudo named-checkconf

テストが成功した場合(サイレント出力で示されます)、BIND9を再起動します。

sudo systemctl restart bind9

BINDサーバーでファイアウォールを実行している場合は、ポート53を開いて、LANクライアントがDNSクエリを送信できるようにする必要があります。 UFWファイアウォールを使用している場合は、次のコマンドを実行できます。

sudo ufw allow in from 192.168.0.0/24 to any port 53

これにより、TCPおよびUDPポート53がプライベートネットワーク192.168.0.0/24に開かれます。次に、同じLAN内の別のコンピューターから、次のコマンドを実行してgoogle.comのAレコードを照会できます。 192.168.0.102をBINDリゾルバーのIPアドレスに置き換えます。

dig A google.com @192.168.0.102

次に、BINDリゾルバーで、次のコマンドを使用してクエリログを確認します。

sudo journalctl -eu bind9

これにより、bind9サービスユニットの最新のログメッセージが表示されます。ログに次の行があります。これは、google.comのAレコードのDNSクエリがIPアドレス192.168.0.103のポート57806から受信されたことを示しています。

named[1162]: client @0x7f4d2406f0f0 192.168.0.103#57806 (google.com): query: google.com IN A +E(0)K (192.168.0.102)

Debian10バスターサーバーでのデフォルトのDNSリゾルバーの設定

BINDサーバーでは、デフォルトのDNSリゾルバーとして127.0.0.1を設定する必要があります。次のコマンドを使用して、Debian10の現在のDNSリゾルバーを確認できます。

cat /etc/resolv.conf

サンプル出力:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#      DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 2001:19f0:300:1704::6
nameserver 108.61.10.10

Debian 10のbind9パッケージには、Systemdサービスユニットbind9-resolvconf.serviceが付属しています。 、これは、BINDをDebianサーバーのデフォルトのDNSリゾルバーとして設定するのに役立ちます。デフォルトでは、このサービスは無効になっています。起動して起動時に自動起動を有効にする必要があります。

sudo systemctl start bind9-resolvconf

sudo systemctl enable bind9-resolvconf

/etc/resolv.confの内容を確認できるようになりました また。ご覧のとおり、127.0.0.1(BIND)がDebian10BusterのデフォルトのDNSリゾルバーになりました。

DNSリゾルバーが127.0.0.1でない場合は、システムにresolvconfがない可能性があります バイナリ。これにより、bind9-resolvconfが発生します。 失敗するサービス。 resolvconfをインストールする必要があります パッケージ化してサービスを再起動します。

sudo apt install resolvconf

sudo systemctl restart bind9-resolvconf

クライアントコンピューターでのデフォルトのDNSリゾルバーの設定

これで、BINDサーバーをDNSリゾルバーとして使用するようにLAN上の他のコンピューティングを構成できます。 WindowsおよびMacOSコンピューターの場合、Googleで検索して、デフォルトのDNSリゾルバーを設定する方法を見つけることができます。ここでは、LinuxデスクトップコンピューターでDNSリゾルバーを設定する方法を説明します。次の方法は、NetworkManagerを使用するすべてのLinuxディストリビューションで機能します。

Linuxデスクトップのネットワークマネージャーアイコンをクリックして、Edit connectionsを見つけます。 。 (一部のLinuxディストリビューションでは、Network Managerを右クリックする必要があります。)

次に、現在の接続を選択し、歯車のアイコンをクリックしてこの接続を編集します。

[IPv4設定]タブを選択し、Automatic(DHCP)からメソッドを変更します Automatic(DHCP) addresses onlyへ 、これにより、UbuntuシステムがルーターからDNSサーバーアドレスを取得できなくなります。次に、DNSサーバーを指定します。ここで、LANにBINDサーバーのIPアドレスを入力します。

変更を保存します。次に、NetworkManagerを再起動して、変更を有効にします。

sudo systemctl restart NetworkManager

再接続したら、Network Managerアイコンをもう一度クリックして、connection informationを選択します。 。 LinuxデスクトップコンピューターがBINDDNSサーバーを使用していることがわかります。

BINDでIPv6を無効にする方法

ネットワークでIPv6を使用しない場合は、BINDでIPv6をオフにすることをお勧めします。オフにしないと、以下のようにBINDログでIPv6に関する多くのエラーが発生します。

network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53

UbuntuのBINDでIPv6を無効にするには、 / etc / default / bind9を開くだけです。 ファイル

sudo nano /etc/default/bind9

-4を追加します オプションに。

OPTIONS="-u bind -4"

ファイルを保存して閉じます。次に、BINDを再起動すると、完了です。

sudo systemctl restart bind9

BIND SERVFAIL

BINDリゾルバーがDNSクエリに応答できない場合(SERVFAIL)、BINDログに次の行が表示されます。

dnssec: warning: managed-keys-zone: Unable to fetch DNSKEY set '.': timed out

サーバーにIPv6接続が機能していないことが原因である可能性があります。これは私のサーバーの1つに起こりました。 IPv6接続は通常どおり機能していると思いましたが、知らなかった理由で突然切断されました。 BINDでIPv6を無効にすると、DNS解決が再び機能します。

BIND自動再起動

何らかの理由でバインドプロセスが強制終了された場合は、次のコマンドを実行して再起動する必要があります。

sudo systemctl restart bind9

このコマンドを手動で入力する代わりに、named.serviceを編集することで、バインドを自動的に再開させることができます。 systemdサービスユニット。デフォルトのsystemdサービス構成を上書きするために、別のディレクトリを作成します。

sudo mkdir -p /etc/systemd/system/bind9.service.d/

次に、このディレクトリの下にファイルを作成します。

sudo nano /etc/systemd/system/bind9.service.d/restart.conf

ファイルに次の行を追加します。これにより、障害が検出されてから5秒後にBindが自動的に再起動します。

[Service]
Restart=always
RestartSec=5s

ファイルを保存して閉じます。次に、systemdをリロードします。

sudo systemctl daemon-reload

これが機能するかどうかを確認するには、次のコマンドでBindを強制終了します:

sudo pkill named

次に、バインドステータスを確認します。バインドが自動的に再開されます。

systemctl status bind9

BIND max-cache-size

BINDは、DNS結果をサーバーにキャッシュして、クライアントのDNSルックアップを高速化できます。 BINDは、専用のDNSリゾルバーを実行していること、つまり、同じホストで他のWebサービスが実行されていないことを前提としているため、デフォルトのキャッシュサイズ(max-cache-sizeで定義) )は、最高のパフォーマンスを実現するために、RAM全体の90%に設定されています。 BINDログ(sudo journalctl -eu bind9)に次のような行が表示されます。 )BINDが開始したとき。

none:100: 'max-cache-size 90%' - setting to 7165MB (out of 7961MB)

BINDはRAMの90%をすぐには使用しないことに注意してください。 DNSリクエストが少ない場合、キャッシュするDNS結果が少ないため、BINDは少量のRAMしか使用しません。 DNSリクエストがたくさんある場合は、DNSキャッシュを保存するために大量のRAMを使用します。

RAMが制限されている場合は、BINDがRAMの90%をキャッシュに使用したくない場合があります。 BIND構成ファイル/etc/bind/named.conf.optionsを編集します 。

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

optionsに次のディレクティブを追加します 句。 50%をお好みの値に変更します。

max-cache-size 50%;

変更を有効にするには、BINDを再起動します。

sudo systemctl restart bind9

結論

このチュートリアルが、BIND9を使用してDebian10BusterでローカルDNSリゾルバーをセットアップするのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、より多くのヒントやコツを入手してください。気をつけて🙂


Debian
  1. Debian10バスターで静的IPアドレスを設定する方法

  2. Debian10BusterでSambaサーバーをセットアップする方法

  3. Debian9でPostfixAdminを使用してメールサーバーを設定する

  1. Debian10BusterでNFSサーバーをセットアップする方法

  2. Debian10BusterにSteamPlayでSteamをインストールする方法

  3. Debian10BusterでRVMを設定する方法

  1. Debian10でUFWを使用してファイアウォールを設定する方法

  2. Debian9でUFWを使用してファイアウォールを設定する方法

  3. スクリーンショット付きのDebian10(Buster)インストール手順