我在本地网络中的 debian 8 服务器上运行 DNS 和 DHCP 服务器。
问题是客户端通过 DHCP 服务器以错误/不需要的顺序获取名称服务器。
DHCP 服务器配置:
subnet 192.168.10.0 netmask 255.255.255.0 {
option routers 192.168.10.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.10.1, 8.8.8.8, 8.8.4.4;
option time-offset -18000;
default-lease-time 21600;
max-lease-time 43200;
}
其中 192.168.10.1 是 DNS 和 DHCP 服务器。
为客户端上的本地接口列出的名称服务器:
IP4.DNS[1]: 8.8.8.8
IP4.DNS[2]: 8.8.4.4
IP4.DNS[3]: 192.168.10.1
客户端是带有 isc-dhcp-client 的 Ubuntu 17.10
编辑:/etc/dhcp/dhclient.conf 的内容
send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
如何从 DHCP 服务器以正确的顺序获取名称服务器?
期望的顺序是首先使用本地名称服务器。
尔格:
IP4.DNS[1]: 192.168.10.1
IP4.DNS[2]: 8.8.8.8
IP4.DNS[3]: 8.8.4.4
我不会对某些客户端 DHCP 守护程序优化首先提供具有公共 IP 地址的 DNS 服务器感到惊讶。
但是,鉴于您对订单的坚持:
我不建议依赖 DNS 答案顺序来提供不同的 DNS 视图或答案。
至少在您需要这些问题的时候,将这些决策留给您的客户在本地基础设施中可能会导致一些不可预测的行为,尤其是考虑到负面的 DNS 缓存。它还将导致更大的 DNS 流量。您最终还会将 DNS 服务器加载到层次结构中,并询问有关您的内部域的问题。
我建议设计一个深思熟虑的 DNS 基础结构,或者使用 Internet 和内部专用服务器,或者使用视图,并且至少有两个内部 DNS 服务器。
TLDR 通过 DHCP 提供多个具有不同“世界”视图的 DNS 服务器并不会为服务带来更多稳定性,恰恰相反。
与其试图控制客户端上 DNS 服务器的顺序,不如只通告内部 DNS 服务器会更干净。如果内部服务器配置为将它们无法满足的请求转发到给定的一组公共 DNS 服务器,则这是可能的。
例如,我的 BIND9 配置(在 IP 上
192.168.2.1
)包含或者(感谢@RuiFRibeiro),您可以使用区域块与根名称服务器进行通信:
(您的发行版可能使用
db.root
而不是root.hint
)。在任一配置中,如果服务器无法确定所请求名称的 IP,它会尝试联系另一台服务器,无论是定义的服务器
forwarders
还是根名称服务器,以找到适当的 IP。换句话说,总是先尝试本地服务器,如果失败,则使用不同的服务器作为替代。然后
dhcpd.conf
选项很简单如果您配置多个冗余本地 DNS 服务器,则可以在
dhcpd
配置中指定每个服务器,而不必担心它们的顺序,因为它们的行为都相同。