
foobar.com
私達の会社はさまざまな公共サービスで使用されるドメイン名を管理します(wgはwww.foobar.com
私達のウェブサイトを指します)。このドメインには、DNSサービスにパブリックDNSレコードがあります。
foobar.com
TLDのサブドメインを使用するために名前を割り当てたい内部ネットワークデバイスがあります。
Bind9を次のように設定するには:
- まず、パブリックDNSサーバーに特定のIPアドレス用に定義されたドメインがあることを確認してください。
- そうでない場合は、内部DNSサーバーに内部IPアドレス用に定義されたドメインがあることを確認してください。
- 失敗すると、「一般」照会は失敗します。
現在、私たちの設定は「オン/オフ」に基づいて誤動作します。つまり、両方の代わりにパブリックDNSまたはプライベートDNSを読み取ります。パブリックおよびプライベートDNSレコードの両方にアクセスしようとするため、これは利用できなくなります。
DNSサーバーは別々に管理され、プライベートDNSはBind9がインストールされているデバイスにローカルに配置されます。
私は以下を試しました:
プライベートDNSレコードにはこのようなものがあります
IN NS privatens.foobar.com ; the private (local) DNS IN NS publicns.foobar.com ; the public DNS
named.conf.options
パブリックDNSサーバーへの転送設定options { forwarders { ... }; forward first; };
内部優先順位の調整
resolv.conf
これらのどれも機能しないようです。例:
www.foobar.com
パブリックDNSを使用してWebサーバーを指します。 Aレコードがあるprinter.office.foobar.com
CNAMEです。クエリはパブリックDNSで動作し、クエリはプライベートDNSで動作することを望みます。unique1.foobar.com
192.168.5.10
www.foobar.com
printer.office.foobar.com
これですべてのクエリがprinter.office.foobar.com
機能しますが、すべてwww.foobar.com
NXDOMAIN応答を生成し、そこで停止します。
単一ドメイン(たとえば)の2つの異なる領域を読み取ることは可能ですか?foobar.com
それとも別の領域を無視しますか?
編集する:
状況をより明確にするために、ネットワークと外部のものの非常に素晴らしい図を作成しました。
オレンジ色の内部のすべては私たちのプライベートネットワークなので、外部からアクセスすることはできません。緑色のマークは、ドメイン名が設定されたパブリックサーバーです。192.168.5.1
それは私たちのルーターであり、192.168.5.5
私たちのプライベートDNSサーバーであり、ns1.dnsprovider.com
第三者が提供するDNSサーバーでもあります。
192.168.5.100
私がユーザーであると仮定すると、次のことが発生したいと思います。
- クエリ時に
user1.foobar.com
DNS結果を取得しますprivns.foobar.com/192.168.5.5
。 - 照会時
www.foobar.com
またはsub.foobar.com
次からDNS結果を取得するときns1.dnsprovider.com
答え1
可能な構成の1つは次のとおりです。内部そして外部ドメインの指定はBINDビューです。通常、この設定は単一のサーバー内で行われます。
BINDビューを使用すると、人々が内部から見ても外部から見ても、同じドメイン内で異なるレコードを持つことができ、より興味深いことに、IPアドレスが異なる同じレコードを持つことができます。 (たとえば、NATを介して他のアドレスにマップされた他の外部アドレスは、内部トラフィックとして境界ファイアウォールに負担をかけません。)
この設定の利点は、同じドメインに対して複数の別々のゾーンを維持する必要があることです。
ビューを定義するには、最初のビューで応答するネットワークを定義すると、残りは2番目のビューに表示されます。
たとえば、次のようになりますnamed.conf
。
acl networks1 { 192.168.1.0/24; 192.168.3.0/24; };
acl networks2 { 192.168.2.0/24; };
view "nets1" {
match-clients { networks1; };
recursion yes;
include "mydomain.view1";
}
view "nets2" {
match-clients { networks2; };
recursion yes;
include "mydomain.view2";
}