kar*_*dog 2 networking dns debian
我在 Virtualbox 中使用 Debian 作为来宾进行了简单安装。我安装了这个resolvconf包。resolv.conf 文件是这样的:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 10.3.x.x
nameserver 10.219.x.x
Run Code Online (Sandbox Code Playgroud)
我通过 GUI(应用程序/系统工具/网络工具)添加了名称服务器。
8.8.8.8 是谷歌的DNS,我想用它来解析互联网地址。需要 10.3.xx 和 10.219.xx 来解析像 teleportal.company.intra 这样的内部域。
当我在 resolv.conf 中有这些名称服务器(并且 8.8.8.8 是第一个)时,在查询内部地址时出现错误:
> host teleportal.company.intra
Host teleportal.company.intra not found: 3(NXDOMAIN)
Run Code Online (Sandbox Code Playgroud)
但是,如果我将第二个nameserver地址显式设置为 nslookup 的名称服务器,它会起作用:
» nslookup teleportal.company.intra 10.3.x.x
Server: 10.3.x.x
Address: 10.3.x.x#53
teleportal.company.intra canonical name = proxy.dummy1.dummy2.private.
Name: proxy.dummy1.dummy2.private
Address: 172.27.x.x
Name: proxy.dummy1.dummy2.private
Address: 172.27.x.x
Run Code Online (Sandbox Code Playgroud)
resolv.conf 文档指出,如果nameserver条目之一无法解析查询,则将按顺序尝试这些条目。但是,如果我在使用时打开调试,nslookup我看到它nslookup甚至不会尝试其他条目,只有第一个。
如果我更改 的顺序nameservers,则内部地址将被正确解析(nslookup 仍然只使用第一个条目)。
如何设置 3 个名称服务器,以便实用程序按顺序使用所有名称服务器?
该resolv.conf域名服务器的列表只在超时的情况下,接触一前一后。当一个域名服务器权威地说“没有这样的域”(NXDOMAIN)时不会。在您的情况下,DNS8.8.8.8显然不知道teleportal.company.intra并且解析器在获得NXDOMAIN.
如果可能,您应该配置一台 DNS 服务器并将其用于所有解析,并让 DNS 服务器决定如何解析名称。如果10.3.x.x是您的 Intranet DNS 服务器,它也可能能够解析 Internet 主机名。
话虽如此,如果您真的想根据名称将请求中继到不同的 DNS 服务器,您可以尝试pdnsd。它是一种可以在本地运行的缓存 DNS 代理程序。安装它 ( apt-get install pdnsd) 并将您的 localhost ( 127.0.0.1)添加到 resolv.conf。在pdnsd.conf配置文件中,您可以根据名称匹配指定要联系的 DNS 服务器。您的示例段落/etc/pdnsd.conf:
server {
label= "google";
exclude = ".company.intra";
ip = 8.8.8.8;
}
server {
label= "intra";
include = ".company.intra";
ip = 10.3.x.x;
}
Run Code Online (Sandbox Code Playgroud)
我已经剪掉了上面文件中的许多其他参数。您应该按照 debian 软件包附带的文档和示例配置文件来设置您的pdnsd.conf.