我有一个启用 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地址替换。