在具有多个 IP 的服务器上查找 DNS

Afr*_*Joe 5 dns bind

我有一个 CentOS 服务器 (amanda01),在三个不同的子网上有三个 IP 地址。 eth0 = 10.0.2.0 subnet eth0.vlan101 = 10.101.0.0 subnet eth0.vlan107 = 10.107.0.0 subet

(如您所见,每个 IP 都在自己的 VLAN 上,每个 VLAN 都从父接口 eth0 出去)

我的 DNS 服务器中有三个 A 记录。 amanda01.domain.grp IN A 10.0.2.81 amanda01.domain.grp IN A 10.101.0.14 amanda01.domain.grp IN A 10.107.0.14

从位于 10.0.2.0 子网上的服务器,我 ping 主机名amanda01,DNS 服务器使用上面列出的三个 IP 中的任何一个进行响应。这显然是循环行为。

我的问题如下:

如何让 DNS 服务器只响应原始请求所在的子网? 即:如果我正在 ping 的服务器在 IP 10.0.2.11 上,我只想要 10.0.2.81 的响应。

cns*_*nst 6

您必须使用所谓的水平分割或分割视图 DNS。

并非所有服务器都支持这一点。您可能必须使用ISC BIND来实现这一点,因为NLnet Labs 的 NSD和大多数其他现代重写都没有宣传对此的支持。

从实用的角度来看,我建议考虑创建一个包含所有主机名的区域,然后使用 shell 脚本根据原始区域自动生成分割区域(通过为每个分割视图仅选择各自的子网) . 如果您的子网比仅仅 /24 更复杂,您可以使用类似grepcidr 的东西。