我可以配置 resolv.conf 来为域名使用特定的名称服务器吗?
例如:
nameserver internal.thekelleys.org.uk 192.168.1.1
nameserver 192.168.0.1
我不想在 /etc/hosts 中列出 *.test.com;我不想在本地安装 DNS 服务器(dnsmasq -S /internal.thekelleys.org.uk/192.168.1.1
);并且我不想让internal.thekelleys.org.uk
DNS 服务器为其他域提供服务。
答案1
当一个人拥有多个网络连接时,这确实是一种常见的用例,例如互联网连接(用于通用流量)和 vpn 连接(仅用于到公司或远程站点的流量)。
这是 OP 问题的一个有效示例。据我所知,没有操作系统(OSX 除外,正如我上面所了解的)可以处理这个问题。对于 Linux,一种解决方案可能是使用带有 resolvconf 的 dnsmasq。Resolvconf 跟踪所有不同的域和 namserver,并为 dnsmasq 生成一个 cfg。Dnsmasq 包含此 cfg。然后本地系统使用 dnsmasq 作为名称服务器。
在更静态的情况下,可以省去 resolvconf 并仅使用 dnsmasq。
是的,这是一个死线程,但因此在过去 3 年中没有任何进展,我重新启用它以重新关注这个相当古老但仍未解决的问题。
答案2
你不能。解析器不是这样设计的。你必须编写自己的解析器并将其预加载到你的应用程序中,或者使用 NSS 先对其进行检查。