大家好,我正在使用 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 区域文件中。