技術ノート ハードウェア ローカル ネットワーク上で独自の DNS サーバーを実行する方法

ローカル ネットワーク上で独自の DNS サーバーを実行する方法

独自の DNS サーバーを実行することは、ネットワークの応答性を向上させ、公共インフラへの依存を減らし、ホスト名ルーティングなどの追加機能の恩恵を受けるための優れた方法です。 Dnsmasq を使用して Linux マシンに DNS サーバーを設定する方法は次のとおりです。

DNSとは何ですか?

DNS は、 example.com などのドメイン名をサーバーの数値 IP アドレスに変換するシステムです。これは次のようになります

127 .0 .0 .1

。ドメイン名を使用してネットワーク要求を行うと、システムは DNS ルックアップを実行して、接続する必要があるサーバー アドレスを決定します。

これにより、実行するすべてのリクエストにオーバーヘッドが追加されます。デバイスは DNS 応答をキャッシュしますが、新しいドメインにアクセスすると、実際の要求が開始される前に DNS ラウンドトリップが発生します。これは OS ネットワーク スタックのレベルで発生し、ユーザーには見えません。

通常、ISP は DNS サーバーを実行します。ルーターとデバイスでデフォルト設定を使用している場合は、おそらく ISP のサーバーに依存していることになります。他のパブリック DNS サーバーは、 Cloudflare Google などのプロバイダーから入手できます。

ローカル ネットワーク上で独自の DNS サーバーを実行する方法

独自の DNS を実行する理由

独自の DNS サーバーを実行すると、ネットワークをより詳細に制御できるようになります。一般的な動機の 1 つは、 web-server から 192.168.0.101 へのネットワーク レベルのドメイン マッピングを構成できることです。 DNS を使用するようにルーターを構成すると、接続されているデバイスが http://web-server 経由で 192.168.0.101 にアクセスできるようになります。

独自の DNS サーバーを使用すると、各デバイスの /etc/hosts に設定を個別に適用するのではなく、設定を 1 つの場所に集中できます。これらは、ルーティング スタックをカスタマイズする他の方法を提供しない組み込みハードウェアを含め、ネットワークに接続するすべてのものに適用されます。

社内の DNS サーバーはパフォーマンスを向上させ、追加の復元層を提供することもできます。大規模な DNS 障害は 前例のないことではありません 。やり取りする重要なサービスに長期キャッシュを備えたカスタム サーバーを使用すると、選択した上流プロバイダーのダウンタイムを回避できる可能性があります。

ローカル ネットワーク上で独自の DNS サーバーを実行する方法

Dnsmasq を使用した DNS

Dnsmasq は 、ほとんどの Linux ディストリビューションに含まれている軽量の DNS サーバーです。設定も非常に簡単です。

始める前に、DNS サーバーにどのような機能を提供する必要があるかを検討する価値があります。このガイドでは、ローカル キャッシュ、いくつかのカスタム ドメイン ルート、およびアップストリーム DNS プロバイダーとしての Google の 8.8.8.8 を使用した Dnsmasq のセットアップについて説明します。

ルーティング フローは次のようになります。

  • ネットワーク ルーターは、接続されているデバイスの 1 つからリクエストを受信します。ルーターは、DNS サーバーとして Dnsmasq ホストを使用するように構成されます。
  • Dnsmasq は、 web-server から 192.168.0.101 へのドメイン名のルートが定義されているかどうかを確認します。リクエストの内容が次の場合
    http: //web-server/example-page
    192.168.0.101 をルーターに送り返します。
  • Dnsmasq に一致するルートがない場合は、DNS リクエストを Google の 8.8.8.8 に転送し、公共のインターネットでの解決を可能にします。これにより、独自の DNS を使用している場合でも、より広い Web にアクセスできることが保証されます。

クライアント デバイスの構成を変更する必要はありません。ルーターの背後にあるものはすべて、Dnsmasq 経由で DNS クエリを実行することになります。ただし、一般的なデスクトップおよびモバイル オペレーティング システムはすべて DNS サーバーの設定をサポートしているため、ルーター レベルで有効にしなくても Dnsmasq を使用するように個々のデバイスを構成できることは注目に値します。

ローカル ネットワーク上で独自の DNS サーバーを実行する方法

はじめる

Dnsmasq をホストする準備ができた、機能する Linux マシンがすでにあることを前提とします。 Dnsmasq は特にリソースを大量に消費するわけではありません。クライアント デバイスがほとんどない場合は、Raspberry Pi 上で簡単に実行できます。

ホストには 割り当てられている必要があります。これ以降、IP 192.168.0.1 は Dnsmasq サーバーを指します。

Dnsmasq がインストールされていることを確認します。

 # Debian システムを想定

適切なアップデート

apt インストール dnsmasq

Dnsmasq の構成ファイルは通常、 /etc/dnsmasq.conf にあります。これには初期設定が事前に入力されています。 Dnsmasq がローカル ネットワーク シナリオで効果的に機能するには、いくつかの変更を加える必要があります。 sudo nano /etc/dnsmasq.conf を実行してファイルを開き、Ctrl+W キーボード ショートカットを使用して次の行を見つけてコメントを解除します。

 #ドメインが必要

#偽のプライバシー

各行の先頭から # 文字を削除します。これらの設定により有効になるものは次のとおりです。

  • domain-needed – これにより、Dnsmasq がドメイン部分のないローカル名を上流の DNS サーバーに転送しなくなります。私たちのインストールでは、 example.com Google 経由で解決できるが、 example または web-server 対象外であることを意味します。ローカル ネットワーク用にドットなしの名前が予約されます。
  • bogus-priv – DNS 逆引きクエリを上流の DNS サーバーに転送しないようにします。つまり、 192.168.0.101 のような内部 IP が Google に公開されることはありません。これを有効にしないと、内部ネットワークのアーキテクチャが上流のプロバイダーに意図せず漏洩する可能性があります。

アップストリーム DNS サーバーを設定するには、構成ファイルに新しい行を追加します。

サーバー=8.8.8.8

サーバー=4.4.4.4

これは、未解決のクエリを 8.8.8.8 に転送するように Dnsmasq に指示します。そのサーバーが使用できない場合は、代わりに 4.4.4.4 が使用されます。これらのアドレスは、Google の DNS サービスのプライマリ リゾルバとセカンダリ リゾルバです。

次にキャッシュサイズを調整します。これのデフォルト値は、キャッシュされたリクエスト数 150 という比較的低い値です。この値を増やすと、Dnsmasq がキャッシュからより多くのルックアップを処理できるようになり、ネットワーク遅延が減少します。 cache-size 行を見つけてコメントを解除し、その値を変更します。

キャッシュサイズ=1000

今すぐファイルを保存して閉じます。

ローカル ネットワーク上で独自の DNS サーバーを実行する方法

ホスト名を IP にマッピングする

ホスト名を IP アドレスにマッピングするには、いくつかの方法があります。最も簡単な方法は、サーバーの既存の /etc/hosts ファイルにエントリを追加することです。 Dnsmasq は、デフォルト構成の一部としてこのファイルからルールを自動的に読み込みます。

/etc/hosts を開き、ファイルの最後にルートを追加します。 IP アドレスが最初に来て、次に割り当てる名前が続きます。

 192.168.0.101 ウェブサーバー

192.168.0.105 ゲートウェイ.lan

これらの行は http://web-server へのリクエストはすべて 192.168.0.101 に送信され、 http://gateway.lan 最終的に 192.168.0.5 に送信されることを意味します。デバイスのマッピングが完了したら、ファイルを保存して閉じます。

ローカル ネットワーク上で独自の DNS サーバーを実行する方法

サーバーをテストする

Dnsmasq を再起動して、すべての変更を適用します。

 sudoサービスdnsmasqの再起動

サーバーが正しく実行されていることを確認します。

 sudo サービスの dnsmasq ステータス

active (running) 緑色で表示されるはずです。そうでない場合は、ステータス情報の下部にあるログ行を確認して、何が問題かを調べてください。

これでサーバーをテストする準備が整いました。 dig ツールを使用して、手動で DNS ルックアップを試行できます。最初に dnsutils パッケージをインストールする必要がある場合があります。

 google.com @localhost を掘ってください

diggateway.lan @localhost

これらのコマンドはどちらも、 ANSWER SECTION に IP アドレスを表示する必要があります。 gateway.lan の場合、 /etc/hosts で設定されたルーティング ルールに従って、結果は 192.168.0.5 になるはずです。コマンドの @localhost 部分は、ローカル DNS サーバーにクエリを実行するように dig に指示します。

ネットワークの構成

最後のステップは、Dnsmasq サーバー経由で DNS ルックアップを行うようにネットワーク ルーターを構成することです。 使用しているルーティング機器によって異なります。

正しい設定ページを見つけたら、サーバーの IP (このガイドでは 192.168.0.1 ) をルーターのプライマリ DNS サーバーとして設定します。 Google の 8.8.8.8 などのパブリック DNS プロバイダーをセカンダリ サーバーとして構成することをお勧めします。これにより、DNS サーバーがクラッシュしてオフラインになった場合でも、引き続きインターネットにアクセスできることが保証されます。

これで、ルーターに接続されているすべてのデバイスが Dnsmasq インスタンス経由で DNS クエリを実行するようになります。これらは、割り当てられた名前 ( web-server gateway.lan など) によってデバイスにアクセスできるようになり、ネットワーク レベルの DNS キャッシュの恩恵を受けることができます。

結論

DNS は複雑なトピックですが、Dnsmasq を使用すると、基本的なサーバーを簡単に動作させることができます。コア機能が動作するようになったら、 さらに多くの設定を 検討できます。これらを使用すると、クエリのフィルタリング、リレーとプロキシの管理、イベント発生時のスクリプトの実行、メール サーバーの MX 結果などの他の種類の DNS レコードの設定が可能になります。

Dnsmasq は、一度稼働すると、通常、手動による介入をあまり必要としません。 service dnsmasq status または systemctl status dnsmasq を使用してログを監視できます。これで、セルフホステッド DNS サーバーのメリットを活用して、パフォーマンスを最大化し、内部ドメイン名を使用してローカル ネットワーク デバイスにアクセスできるようにする準備が整いました。

「ローカル ネットワーク上で独自の DNS サーバーを実行する方法」に関するベスト動画選定!

ドメイン、サーバーとは?ホームページの仕組みを解説😃これでDNSやIPアドレスもわかるようになる!
Google PUBLIC DNS でDNSサーバーエラーを回避する方法~Windows11版