このチュートリアルでは、広く使用されている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ルックアップを高速化できます。
- ローカルDNSリゾルバーはDNS要求のみをリッスンし、他の人のDNS要求には応答しないため、リゾルバーのキャッシュから直接DNS応答を取得する可能性がはるかに高くなります。
- コンピューターと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
によってインストールされます パッケージと別の重要なバイナリがあります:rndc
、bind9utils
によってインストールされるリモート名デーモンコントローラー パッケージ。 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リゾルバーをセットアップするのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、より多くのヒントやコツを入手してください。気をつけて🙂