如何在出现 SLAAC 客户端时更新 DNS AAAA 记录

ts9*_*s90 6 router dns dhcp ipv6 radvd

我有一个来自 ISP 的路由 /64 并且我正在运行 radvd。我的客户端(Linux、Windows)在插入路由器时运行良好,无需任何额外配置。它们都通过 SLAAC 为自己分配带有 ISP /64 前缀的唯一地址,用于临时和永久 (1) 地址分配。

我没有运行 DHCPv6,也不打算这样做。正如我在此处了解到的,对于 SLAAC 客户端来说,它是非常无用的,除非他们有使用分配的 DHCP 地址的特殊配置,因为他们很可能会在默认情况下忽略它 (2),这无论如何都很好且首选。我绝对不想在插入网络的“库存”客户端机器上做任何工作。

那么,上面的第 (1) 点:客户端使用的 SLAAC IPv6 地址并不是真正永久的。将这些放在 Bind for DNS AAAA 记录中可以工作......一段时间。这是我问题的症结所在。

我无法弄清楚如何让 DNS 服务器根据 SLAAC IP 填充其记录。

题:

1) radvd 可以在 RA 上运行脚本,然后将其带到第 2 步...

2) 我从上一步知道,我有一个新客户端的新 FE80 地址。如何获取该客户端使用其 FE80 地址分配给自己的全局 IPv6 地址?

3) 然后,我想用他在步骤 2 中获得的全球 IPv6 地址更新绑定 DNS 记录。

我试图完成的上述事情似乎应该遍布整个互联网 - 我正在努力找出我做错了什么,使我的用例如此罕见。是否已经有一种机制可以自动完成我所缺少的(记住 DHCPv6 是不可能的)?

问候和感谢

(2) SLAAC Ubuntu 客户端肯定会忽略 DHCPv6 分配,即使 radvd 告诉了它们。事实上,Ubuntu(也许更多)在这种配置中使用时甚至有一个旧错误,它实际上不会添加路由,从而在没有手动干预的情况下使连接无用。我认为这个错误的优先级非常低,因为 DHCPv6 与 radvd 结合使用无论如何都不是真正推荐的解决方案,我对此非常满意。

San*_*ann 3

Radvd 发送带有网络信息的多播消息,它不会从客户端获得有关他们如何处理该信息的回复。所以(1)不起作用。

链路本地地址(fe80:地址)与客户端使用的全球单播地址无关。因此步骤(2)也是不可能的。

您想要做的事情的常见解决方案是:

  • 并行使用 SLAAC 和 DHCPv6。DHCPv6 服务器将基于 DHCPv6 的地址放入 DNS 中以用于与客户端的连接,并且 SLAAC 地址不会放入 DNS 中以维护客户端出站连接的隐私。
  • 使用不带 SLAAC 的 DHCPv6(关闭ARA 中的标志)并让 DHCPv6 服务器将地址放入 DNS 中。不过,基于 Android 的设备无法在这样的环境中工作,所以这不是一个好主意。
  • 使用 SLAAC 并让客户端将自己的地址放入 DNS 中。在托管环境中(我记得很久以前在 Win2k 和 Win2k3 时代)这可以自动配置。

除此之外,您还可以在可以看到网络上使用的 MAC 地址和 IPv6 地址的设备上编写脚本,例如在交换机和默认网关路由器上。您可以编写一个脚本来监视正在使用哪些 IPv6 地址,查看 MAC 地址以确定它是哪个物理设备,在数据库中查找该设备的主机名,然后根据该主机名更新 DNS。我认为没有标准软件可以为您做到这一点。