如何在没有互联网访问的局域网上配置 DNSv6?

如何在没有互联网访问的局域网上配置 DNSv6?

我有一个启用 IPv6 的主机的 LAN。我想为本地 LAN 地址(没有互联网/隧道)设置一个 ubuntu 作为 DNSv6 服务器。

我可以手动编辑每个主机的 etc/hosts 文件,但我认为本地 DNSv6 服务器会更高效。有什么建议吗?

编辑:我发现 dnsmasq 出色地解决了我的问题;但是由于默认情况下运行包含许多 o 参数-no-resolv(这可能是因为主机 IPv4 配置),我需要手动停止并重新启动它。这可以避免吗?

答案1

首先:您不需要在 IPv6 上运行单独的 DNS 服务器。您的 DNS 服务器甚至不必侦听 IPv6 上的请求即可使用 AAAA 记录进行应答。因此,您甚至可以使用 DNS 并建立 IPv6 连接,同时通过 IPv4 进行所有 DNS 解析。效率不会更高或更低。

当然,实际上做所有事情,包括通过 IPv6 解析,都更酷 :-)

让 BIND 监听 IPv6 上的查询很容易(其他 DNS 服务器也类似):

options {
    listen-on-v6 {
        any;
    };
};

然后,您必须让客户端知道他们可以通过 IPv6 进行 DNS 解析。通常使用 DHCPv6 执行此操作,但您也可以将信息包含在路由器通告中。您的客户端将使用什么取决于他们运行的操作系统。

DHCPv6 可以以两种方式使用:有状态和无状态。无状态设置会为所有客户端提供额外信息,如 DNS 解析器等,而无需实际执行所有困难的工作,如分配地址和维护租约数据库。dibbler DHCPv6 服务器的示例配置(同样,其他 DHCP 服务器将类似):

iface eth0 {
    stateless
    option dns-server 2001:db8:0:1::53
    option domain example.com, test1.example.com
}

然后,您需要让客户端知道网络上有一个无状态 DHCPv6 服务器可用。我们还包括需要通过这种方式而不是通过 DHCPv6 获取 DNS 信息的客户端(是的,有两种方法可以设置相同的设置,这很烦人,但事实就是如此)。我在这里使用 RAdvD:

interface eth0 {
    AdvSendAdvert on;
    AdvDefaultPreference high;
    AdvManagedFlag off;
    AdvOtherConfigFlag on;
    prefix 2001:db8:0:1::/64 {};
    RDNSS 2001:db8:0:1::53 {};
    DNSSL example.com test1.example.com {};
};

现在,RA 会告知客户端 DNS 设置(如果它能在此处理解这些设置),并告知客户端存在无状态 DHCPv6 服务器(管理关闭,其他配置打开),DHCPv6 服务器也会提供 DNS 设置(对于在此处需要它们的客户端)。DNS 服务器会侦听 IPv4 和 IPv6,并且可以通过任一协议回答所有请求。答案(A 和/或 AAAA 记录)会告知客户端可以使用什么进行连接。大多数客户端在可以的情况下会首选 IPv6(AAAA 答案)。

PS:2001:db8:0:1::53当然要用你的DNS服务器的真实IPv6地址替换。

相关内容