web-dev-qa-db-ja.com

DNSレコードを使用して「プライベートLAN内のプライベートホスト」を一覧表示する必要がありますか?

これは理論上の質問です。パブリックIPアドレスとプライベートIPアドレス(192.xxx範囲)の両方を持つサーブがいくつかある場合。両方のAddessesは異なるサービスに使用されます。 IPアドレスだけでなくホスト名も覚えておく方がはるかに良いので、内部で(プライベートLANの場合)作業したくありません。

例:foobar.myhost.com =>パブリックIP222.xxxおよびプライベートIP192.xxx

/ etc/network/hostsファイルを使用してすべての「プライベートLAN」ホスト名を定義できることはわかっていますが、これは非常に面倒でエラーが発生しやすく、これらすべてのファイルの同期を維持する必要があります。

(私のドメインの)標準のパブリックDNSレコードを使用してプライベート名も一覧表示するためのベストプラクティス/オプションは何ですか?これは意味がありますか?しかし、これは私のプライベートLANの構造を再評価します、これは良いですか?そして、パブリックDNSレコードにはプライベートIPもリストされます(これは私が今まで見たことがないものです)。

そして最大の問題は次のとおりです。実際には、単一のホスト名が必要でしたが、このホスト名にはパブリックIPアドレスとプライベートIPアドレスの両方があります。 DNSレコード(同じ名前foobar.myhost.com)でこれらの両方を定義する可能性はありますが、後でプライベートIPアドレスとパブリックIPアドレスを区別する可能性はありますか?

良いブログ投稿/ベストプラクティス/記事/意見は非常に高く評価されています。

ありがとうジェンス

6
jens

これを実現するには、さまざまな方法があります。明らかに、パブリックIPアドレスとプライベートIPアドレスの両方のAレコードを作成し、それらのレコードをパブリック消費用に公開することは望ましくありません。これは、ユーザーがプライベートIP経由でアクセスしようとするためです。 1つの名前に対して複数のAレコードがリストされている場合、それらはラウンドロビンで使用されるため、ユーザーが接続できない場合があります。

これが私が使用したいくつかの解決策です:

私のお気に入りの解決策は、おそらく「private.example.com」と呼ばれる、これらのサーバー用のDNSサブゾーンを作成することです。次に、「private.example.com」ゾーンにリストしたプライベートIPアドレスを持つ「example.com」内のサーバー。次に、/ etc/resolve.confを(おそらくDHCP経由で)構成して、プライベートネットワークに接続しているときにDNS検索パスが「private.example.comexample.com」になるようにします。ここで、「hostname」にアクセスしようとすると、最初に「hostname.private.example.com」を検索しようとします。次に「hostname.example.com」。したがって、プライベートIPを持たないそのドメイン内のホストは、複数の場所にリストする必要はありません。 「hostname.example.com」と言うことでパブリックIPを明示的に参照することもできます。プライベートIPについても同様です。ただし、「ホスト名」とだけ言うと、一致するものが検索されます。

注:サードパーティが「private.example.com」ゾーンがあることに気付いた場合、サードパーティはそれをクエリまたは「掘り下げ」てIPアドレスを確認できる可能性があります。正確な要件によっては、この情報の公開が懸念される場合がありますが、私のニーズでは、一部のプライベートIPアドレスの公開が問題になることはありませんでした。

BINDが「ビュー」と呼ぶものを構成できます。 ビューの構成例を示す別の質問へのリンクがあります 。基本的に、アクセス制御リストを構成して、要求しているIPアドレスに基づいて要求に応答するために使用するゾーンファイルを指定します。したがって、プライベートネットワークからリクエストを受け取った場合は、プライベートIPで応答できます。ただし、ビューの構成と保守は難しい場合があります。異なるビューでレコードの複製コピーを保持するという問題もあります。詳細については、次の提案を参照してください。

プライベートネットワークに、パブリックDNSサーバーとは別のDHCPとDNSを実行できるホストがある場合は、このホストにプライベートネットワーク内のマシンのデフォルトDNSサーバーとしてDNSを設定してから、プライベートIPを使用してこれらのマシンのクエリに応答するDNSサーバー。ただし、関心のあるDNSゾーン内のすべてのマシンがプライベートIPを持っているわけではない場合、これにより、両方のDNSサーバーのサーバーのIPアドレスを一覧表示する必要があるレコードが重複する可能性があります。上記のビューと似ていますが、完全に独立したDNSサーバーがあるため、概念的にはセットアップとテストが少し簡単です。

5

確かに、信頼できるパブリックアドレスと同じサーバーにプライベートIP範囲をリストすることは悪い考えです。ただし、ドメインに対して権限のない内部サーバーを実行している場合(つまり、内部サーバーからのみアクセス可能)、プライベートアドレスと同じゾーン内でパブリックアドレスを複製することに関する技術的な問題はありません(更新の問題を除く)。パブリックサーバーで変更されたアドレス)。実際、内部DNSサービスを提供することは非常に理にかなっています。

ログの時間前に、 Bindの設定 のスクリプトを作成しましたが、これは主に、内部アドレスがパブリックアドレスとは別のドメインにあるシナリオを対象としていることに注意してください。最近(Unix/Linux/POSIXで実行している場合) dnsmasq がより良いソリューションです(DHCPアドレスの利点が追加されています)。

2
symcbean

少数のレコードのBINDビューをいじりたくない場合(または、Microsoft DNSなどの機能を備えていないDNSサーバーを実行している場合)、内部DNSサーバー上に対応するゾーンを作成できます。 @Aレコードのみを含む内部ホストのFQDN。ドメイン内の残りのレコードは、インターネットDNSを介して解決されます。内部DNSサーバーを使用するLAN上のクライアントの場合、LAN IPが指定されたFQDNのゾーンが返されます(LAN DNSサーバーがそれらの名前に対して権限を持っているため)。

2
Evan Anderson

グローバルにルーティングできないIP範囲をDNSに追加すると、別のLANでアクセスするときに混乱が生じる可能性があります。これは、そのIP範囲を持つ他のサーバーが存在する可能性があり、ユーザーをだましてLAN外のLANシステムにアクセスするときにフィッシング攻撃を引き起こす可能性があるためです。

LANで再帰を使用してDNSサーバーをセットアップします。まだ持っていない場合は、そこに関連ゾーン/レコードを追加し、そこにLAN DHCP /コンピューターを指定するか、BINDビューまたはDNSサーバーの対応する機能を使用して、LANとは異なるゾーンを表示します。

1
Kristaps