如何在家庭网络中设置 IPv6 ULA 广告和 -DHCPv6?

如何在家庭网络中设置 IPv6 ULA 广告和 -DHCPv6?

我使用的是 ArchLinux,并在本地家庭网络中运行 IPv6。IPv6-Internet 随我的 fritz.box 一起提供,并且与所有客户端配合良好。

在我的家庭服务器上,我设置了radvd宣传我的本地 ULA 前缀。

  prefix fd04::/64 {  # 
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr on;
  };

这与 配合得很好::/64,所有客户端都会得到一些 ULA 地址,比如fd04::aa:bb:cc:dd/64

但我真正想要的是“人类可读”的/112网络,地址如下fd04::abcd。如果我radvd.conf改成

  prefix fd04::/112 {  
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr on;
  };

...没有客户端会获得任何 ULA 地址。日志文件指出radvd (909949): eth0 prefix length should be: 64 有谁看到这出了什么问题吗?

我的第二个问题是:我想为一些客户端提供一些静态 ULA 地址。目前,我对客户端进行了硬编码,以便自己获得这些静态地址。但是,我想为我的家庭网络设置一个“小型”DHCPv6 服务器,将这些静态 ULA 分配给客户端(例如,通过识别它们的 MAC 地址)。

我该如何使用 Linux 来设置它?

答案1

我自己研究这些主题时,发现了一个“小型” dhcpv6 服务器:dhcpy6d它确实会根据客户端的 MAC 为其分配地址。您可以灵活地为不同类别的地址配置模式,如果名称服务器是 bind9,它甚至可以执行 DDNS。

这样的模式可能看起来像 pattern = fd04::fab:$id$ ,你可以在类中使用它,比如 alpha_client

并且您有一个配置为

[beatles]
hostname = beatles
mac = 11:22:33:aa:bb:cc
class = alpha_client
id = 4

您可以让您的 RA 通告 /64 并仍然提供短地址,例如 fd04::fab:4

运行 DDNS 后,您可以

$ host beatles
beatles.intern has IPv6 address fd04::fab:4

猜想这个例子暴露了我的年龄。该示例忽略了几个相关的 RFC,因此如果发生合并,您可能必须重新编号。

另一件事可能是将 IPv6Token 与 systemd-networkd 一起使用,但这会迫使您在每个客户端上进行配置。

相关内容