解决库存 Debian 的域问题

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 个名称服务器,以便实用程序按顺序使用所有名称服务器?

Ani*_*nil 7

该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.