
こんにちは。私は Zentyal を使用しています。2 つのインターフェイス (内部 1 つと外部 1 つ) が設定されています。サーバーのホスト名とエイリアスを解決すると、bind は結果にランダムに外部アドレスを返します。もちろん問題は、ローカル ネットが外部ネットと通信できず、サービスがランダムに中断されることです。例:
dig proxy.private.example.com
;; ANSWER SECTION:
proxy.private.example.com. 259200 IN CNAME zentyal.private.example.com.
zentyal.private.example.com. 900 IN A 192.168.122.73
zentyal.private.example.com. 900 IN A 10.10.20.40
10.10.20.40 は内部ネット上にあり、常に解決する必要があるアドレスです。
結果からインターフェース「192.168.122.73」を除外するにはどうすればよいですか? バインド構成はどのようになりますか?
追伸: 3 日間検索しましたが、間違ったものを探している可能性があります。
あなたの助けに大いに感謝します。
答え1
現在構成されているのは、A
同じリソースに対する複数のレコードです。Bind はこれをラウンドロビンとして処理し、zentyal.private.example.com の DNS 要求に対して 192.168.122.73 または 10.10.20.40 を交互に返します。
必要なのは、DNS 要求の発信元となるインターフェース/IP アドレスに応じて、一貫した方法で異なる応答が返されることです。Bind では、これをビューと呼びます。
外部クライアント用と内部クライアント用の 2 つの異なるゾーン ファイルを設定し、どのゾーン ファイルをいつ使用するかを Bind で構成する必要があります。構成内の関連する構成セクションは次のようになります。
view "internal" {
match-clients { localnets; };
recursion yes; /* this is the default */
zone "private.example.com" {
type master;
file "db.private.example.com.internal";
allow-transfer { any; };
};
};
view "external" {
match-clients { any; };
recursion no;
zone "example.com" {
type master;
file "db.example.com.external";
allow-transfer { none; };
};
};
次に、10.x IP アドレスを持つ A レコードを db.private.example.com.internal に追加し、192.x IP アドレスを持つ A レコードのみがパブリック db.example.com.external ゾーン ファイルに残るようにします。