所以我在 OpenStack 环境中运行了 Ubuntu 14.04 虚拟机。DNS 机器有一个外部 IP (10.14.6.3) 和一个内部 IP (192.168.1.3)。我在同一个项目 [h1] 中有另外两台机器,它们有一个外部 ip (10.14.6.4) 和一个内部 IP (192.168.1.4) 和 [n1] 有一个外部 ip (10.14.6.5) 和内部 IP (192.168) .1.5)。
h1 和 n1 在其 resolv.conf 中设置了 DNS 机器的 IP,并且可以正确解析。
我还将我的本地机器(在 openstack 之外)设置为使用 10.14.6.3 作为我的 DNS 服务器。
在 DNS 机器 Bind db 文件中,我有以下条目:
h1 IN A 192.168.1.4
h1 IN A 10.14.6.4
n1 IN A 192.168.1.5
n1 IN A 10.14.6.5
指针文件有以下内容:
1 IN PTR h1.
2 IN PTR h1.
3 IN PTR n1.
4 IN PTR n1.
我的本地机器只能与 10.14 子网通信。我希望 h1 和 n1 通过 192.168 子网(而不是 10.14)相互解析。
大多数情况下,这工作正常。如果我从 n1 ping h1,它会解析为 192.168.1.4 如果我从本地计算机 ping h1,它会解析为 10.14.6.4
但是,有时,如果我从任何一台机器上 ping,将使用另一个 IP。有时我的本地机器将 h1 解析为 192.168.1.4,这不起作用。
我的问题是,有没有办法在不使用本地主机文件的情况下强制顺序解析?我希望openstack内的机器通过本地IP 192.168.xx相互解析并且我希望openstack外部的机器通过机器外部IP 10.14.xx解析名称
我不太清楚您想要什么,但是单个区域中同一资源记录的多个条目,例如:
叫round-robin DNS,效果和你描述的一模一样,有时访问主机h1 ip-address 192.168.1.4,有时10.14.6.4
您可以通过使用水平分割 DNS来解决该问题,这允许根据 DNS 请求的来源以不同方式解析相同的主机名,或者只是为每个 IP 地址设置一个唯一名称,例如
h1.int.example.com.
和h1.ext.example.com.
。