【问题标题】:Separate nameserver for certain hostnames某些主机名的单独名称服务器
【发布时间】:2012-07-05 19:03:41
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ubuntu dns nameservers


    【解决方案1】:

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

    将其放入 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 服务器。

    【讨论】:

    • 谢谢你,Celada,这正是我需要的。
    猜你喜欢
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多