bind9、結果から外部インターフェースアドレスを除外する

bind9、結果から外部インターフェースアドレスを除外する

こんにちは。私は 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 ゾーン ファイルに残るようにします。

関連情報