独自の 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 サーバーを実行すると、ネットワークをより詳細に制御できるようになります。一般的な動機の 1 つは、
web-server
から
192.168.0.101
へのネットワーク レベルのドメイン マッピングを構成できることです。 DNS を使用するようにルーターを構成すると、接続されているデバイスが
http://web-server
経由で
192.168.0.101
にアクセスできるようになります。
独自の DNS サーバーを使用すると、各デバイスの
/etc/hosts
に設定を個別に適用するのではなく、設定を 1 つの場所に集中できます。これらは、ルーティング スタックをカスタマイズする他の方法を提供しない組み込みハードウェアを含め、ネットワークに接続するすべてのものに適用されます。
社内の 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-page192.168.0.101をルーターに送り返します。 -
Dnsmasq に一致するルートがない場合は、DNS リクエストを Google の
8.8.8.8に転送し、公共のインターネットでの解決を可能にします。これにより、独自の DNS を使用している場合でも、より広い Web にアクセスできることが保証されます。
クライアント デバイスの構成を変更する必要はありません。ルーターの背後にあるものはすべて、Dnsmasq 経由で DNS クエリを実行することになります。ただし、一般的なデスクトップおよびモバイル オペレーティング システムはすべて DNS サーバーの設定をサポートしているため、ルーター レベルで有効にしなくても Dnsmasq を使用するように個々のデバイスを構成できることは注目に値します。
はじめる
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.comGoogle 経由で解決できるが、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
今すぐファイルを保存して閉じます。
ホスト名を 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
に送信されることを意味します。デバイスのマッピングが完了したら、ファイルを保存して閉じます。
サーバーをテストする
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 サーバーのメリットを活用して、パフォーマンスを最大化し、内部ドメイン名を使用してローカル ネットワーク デバイスにアクセスできるようにする準備が整いました。





