bind9,从结果中排除外部接口地址

bind9,从结果中排除外部接口地址

大家好,我正在使用 Zentyal,配置了 2 个接口,一个内部接口和一个外部接口。在解析服务器主机名和别名时,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”?我的绑定配置是什么样的?

附言:我已经搜索了三天了;可能我找错了东西。

非常感谢您的帮助。

答案1

您现在配置的是A同一资源的多个 -records。Bind 将以循环方式处理该问题,并交替返回 192.168.122.73 或 10.10.20.40 作为对 zentyal.private.example.com 的 DNS 请求。

您想要的是,根据 DNS 请求所源自的接口/IP 地址,以一致的方式返回不同的响应。在 Bind 中,这称为视图。

它要求您设置两个不同的区域文件,一个用于外部客户端,另一个用于内部客户端,并配置 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 区域文件中。

相关内容