![如何对特定域使用本地 DNS 服务器,对其他所有域使用 DHCP 分配的 DNS](https://linux22.com/image/1541589/%E5%A6%82%E4%BD%95%E5%AF%B9%E7%89%B9%E5%AE%9A%E5%9F%9F%E4%BD%BF%E7%94%A8%E6%9C%AC%E5%9C%B0%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E5%AF%B9%E5%85%B6%E4%BB%96%E6%89%80%E6%9C%89%E5%9F%9F%E4%BD%BF%E7%94%A8%20DHCP%20%E5%88%86%E9%85%8D%E7%9A%84%20DNS.png)
出于开发目的,我需要在笔记本电脑上运行本地(不可路由)域的本地 DNS 服务器。简单的编辑/etc/hosts
对我来说还不够,因为我需要某些依赖于实际 DNS 的虚拟机来解析本地域。
配置绑定以服务本地域很容易。配置带有转发地址的绑定也很容易。
问题在于,一旦配置了 bind,并将 resolvconf 设置为使用 127.0.0.1 进行名称解析,依赖于基于 Web 的身份验证的无线网络连接就会中断,因为本地无线网络的 DNS 服务器不再使用。
是否有某种方法可以在网络启动时动态设置 Bind 的转发地址(也许通过 resolvconf 或其他类似的服务)?
或者,有没有办法使用我的本地绑定服务器仅有的作为我的本地域名,并使用 DHCP 提供的域名进行所有其他名称解析?
答案1
resolvconf
程序能够重新配置绑定以使用每个当前连接 DNS 转发器。
debian软件包resolvconf-update-bind
中提供了 bind8 的示例脚本resolvconf
但它不会自动安装在/etc/resolvconf/update.d/
目录中。
答案2
您能将无线 DNS 服务器添加到绑定的转发器吗?例如在您的/etc/bind/named.conf.options
配置文件中:
options {
directory "/var/cache/bind";
recursion yes; # enables resursive queries
...
allow-transfer { none; }; # disable zone transfers by default
forwarders {
Wireless DNS's server;
Other DNS server IP (open dns resolver, ...);
};
...
};
在这种情况下,如果请求的域不存在于其配置的区域中,bind 将转发请求,首先转发到无线 DNS 服务器,然后转发到开放 DNS 服务器。由于您正在“堆叠”解析器,这可能会导致无线 DNS 服务器未提供服务的域的 DNS 回复延迟。然后您应该设置 DNS 缓存服务器。
编辑
为特定域指定 DNS 服务器
来源:https://serverfault.com/questions/391914/is-there-a-way-to-use-a-specific-dns-for-a-specific-domain
使用 无法实现这一点resolv.conf
。但你可以使用 dnsmasq 实现这一点:
/etc/dnsmasq.conf
:
server=/mydomain.net/X.X.X.X
您的本地 DNS 服务器在哪里X.X.X.X
,它未出现在您的 dhcp 填充resolv.conf
文件中。