1

在我的家庭局域网上,我有许多计算机。它们连接到将我连接到 Internet 并充当 LAN 上的 DHCP 服务器和名称服务器的路由器。

我的一些计算机是 Ubuntu 计算机,我正在尝试在它们上设置一个好的 /etc/resolv.conf。问题是我的路由器作为名称服务器真的很糟糕(非常非常慢),所以我更喜欢使用外部名称服务器,例如 Google 的名称服务器或 OpenDNS。

但是这些公共域名服务器显然不知道我本地机器的 IP 地址。

所以这是我的问题:有没有办法配置 /etc/resolv.conf 以便某些主机名由一个名称服务器解析,而其他主机名由另一个名称服务器解析?

(我的猜测是否定的,在这种情况下,我将不得不设置固定的 IP 地址。但我希望避免这种情况。)

4

1 回答 1

3

在需要在本地名称服务器和 Internet 名称服务器之间进行选择的计算机上安装本地转发名称服务器。使用Unbound,因为它是轻量级且易于为此任务配置的。

将其放入未绑定配置中:

stub-zone:
        name: "internal.example.com"
        stub-host: internal.nameserver.ip.address
forward-zone:
        name: "."
        forward-host: internet.nameserver.ip.address

放入以便本地主机上的应用程序nameserver 127.0.0.1/etc/resolv.conf使用此 Unbound 实例。

现在,当您尝试解析时myhost.internal.example.com,它会将查询发送到internal.nameserve.ip.address,当您尝试解析www.google.com时,它将查询发送到internet.nameserver.ip.address

希望您的所有本地主机都归类在上面的单个本地域 ( internal.example.com) 下。不幸的是,您的廉价路由器+DHCPserver+DNSserver 很可能会将它知道的所有主机名都粘贴到其合成的根区域中。如果是这种情况,那么您必须将它们一一列出,如下所示:

stub-zone:
        name: "hostname1"
        stub-host: internal.nameserver.ip.address
stub-zone:
        name: "hostname2"
        stub-host: internal.nameserver.ip.address
stub-zone:
        name: "hostname3"
        stub-host: internal.nameserver.ip.address
forward-zone:
        name: "."
        forward-host: internet.nameserver.ip.address

这个问题当然是现在你在不同的机器上有一堆 Unbound 实例,你必须配置和设置。您可以通过让 LAN 上的一台主机提供此服务并充当所有其他主机的递归名称服务器来避免这种情况,但如果您要这样做,那么您最好将该主机设置为 DHCP 服务器和权威名称服务器也适用于本地主机,并首先摆脱缓慢的嵌入式 DHCP+DNS 服务器。

于 2012-07-05T20:09:30.207 回答