在我家的局域网上,我有很多电脑。它们连接到路由器,该路由器将我连接到互联网,并在LAN上充当DHCP服务器和名称服务器。
我的一些计算机是Ubuntu计算机,我正在尝试在它们上面建立一个好的/etc/resolv.conf。问题是我的路由器真的糟糕的名称服务器(非常非常慢),所以我更喜欢使用外部名称服务器,如谷歌的名称服务器或OpenDNS。
但是这些公共域名服务器显然不知道本地计算机的IP地址。
所以这是我的问题:有没有办法配置/etc/resolv.conf,以便某个名称服务器解析某些主机名,而另一个名称服务器解析其他主机名?
(我的猜测是否定的,在这种情况下,我将不得不设置固定的IP地址。但我希望避免这种情况。)
答案 0 :(得分:3)
在需要在本地名称服务器和Internet名称服务器之间进行选择的计算机上安装本地转发名称服务器。使用Unbound因为它轻量级且易于配置此任务。
将此信息放入Unbound config:
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
)。不幸的是,您的廉价路由器+ DHCP服务器+ DNS服务器很可能将它知道的所有主机名都粘贴到其合成的根区域中。如果是这种情况,那么你必须逐一列出它们,如下所示:
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服务器。