内部 (10.0 または 192.168 クラス) LAN 上に複数のマシン (または VM) があり、相互に通信する必要があるとします。ただし、新しい VM が随時追加されるため、/etc/hosts ファイルを更新し続けるのが多少動的で面倒な設定をする代わりに、内部 DNS サーバーをセットアップしたいと考えています。テスト マシンと VM はすべて Linux を実行しています。この点に関していくつか質問があります。
- プライベート ネットワーク内で内部的に知られているドメインとして偽のドメイン (予約済みなので「example.com」など) を使用できるように DNS サーバーを設定できますか?
- /etc/resolv.conf がこのサーバーを指し示すように DNS サーバーを設定して、このプライベート / 偽のドメイン内のホストのすべてのマシン IP アドレスを解決できますか? ただし、実際の既存のドメインの場合、DNS サーバーは、カスケードされた実際の DNS サーバー (パブリック DNS サーバーなど) を指すか、そこから解決された IP アドレスを取得する必要があります。後者は、NAT プロキシを介してテスト マシンから一般のパブリック インターネットにアクセスするためのものです。
- TinyDNS を使って、このようなことを実現できますか? Bind は少々難しすぎると思いますし、私のニーズには過剰かもしれません。
答え1
簡単に答えると、はい、ドメインが本物か偽物かは関係ありません。将来起こり得る問題を回避するには、一般的には自分が所有しているドメイン (または自分が所有しているドメインのサブドメイン) を使用するのが賢明です。また、自分が所有している本物のドメインを使用すると、内部 PKI を立ち上げなくても、そのドメイン内の名前に対して本物の (公的に信頼されている) 証明書を取得できます。
ほぼすべての DNS ソフトウェアが、あなたがしようとしていることをサポートします。これは、「権威」および「再帰」の両方の DNS サーバーとして機能します。これはexample.com
(または任意の) ゾーンに対して権威を持ち、再帰は、権威を持たないクエリをインターネットから解決できるようにする部分です。
したがって、クライアントは resolv.conf であなたの DNS サーバーのみを指します。その中の何かに対するクエリは、example.com
そのレコードを使用して解決されます。他の何かに対するクエリでは、DNS サーバーはインターネットにアクセスして回答を取得し、(おそらく) それをキャッシュして、クライアントに「非権限」応答として返します。
答え2
私が使うdnsmasq同様の目的で、Raspberry Pi で実行しています。これはネットワークのローカル DNS サーバーとして機能するため、すべてのクライアントがクエリを実行します。ドメインがローカル データベースまたはキャッシュにない場合は、インターネット DNS サーバーにクエリを実行します (応答時間が最も速いものを調べるためにいくつかのテストを実行し、それらを選択しました)。
この設定により、実際のドメインと「偽の」ドメインの両方を持つことができます。たとえば、Web サイトで作業しているときに、実際のドメインの IP アドレスを dnsmasq サーバー上のローカルの作業中アドレスに変更することがあります。作業が終了し、インターネット上の実際の Web サイトにアクセスしたい場合は、設定を削除するだけです。(これは私が完全に制御できる小さなネットワークであることに注意してください。より複雑なシナリオでは、このように変更を何度も繰り返すことは望ましくないでしょう)。
dnsmasq では、次の操作を実行できます。
address=/myfakedomain.com/10.16.1.20
myfakedomain.com のクエリを指定された IP アドレスにリダイレクトします。次のようなこともできます。
address=/plex/10.16.1.55
ユーザーがキーワードを入力してネットワーク上のサービスにアクセスできるようにします。
私はこれを DHCP サーバーとしても使用しており、これがネットワークのプライマリ DNS サーバーとして確実に提供される方法の 1 つです。
答え3
次の解決策を試してください:ruby-dns-mock は、以下の URL からダウンロードできます。 あらゆるタイプの DNS レコードを模倣するのは簡単です。