我想让我的网络上的设备自动配置 ULA 地址,其前缀为由https://www.unique-local-ipv6.com/在我的网络上,该网络主要仅支持 IPv6。
我的主路由器正在运行 OpenBSD 7.4 并且我正在运行rad
具有以下配置:
dns {
nameserver {
fdd0:c720:85fa:100::1
}
}
interface igc1 {
prefix fdd0:c720:85fa:100::/64
}
interface igc3 {
prefix fdd0:c720:85fa:100::/64
}
我已经使用额外的 IPv6 ULA 地址设置了主接口,如下所示 (/etc/hostname.igc0):
inet autoconf
inet6 autoconf
inet6 alias fdd0:c720:85fa:100::1 64
我的客户端计算机(也是 OpenBSD 7.4)也设置为使用inet6 autoconf
.它在 fdd0:c720:85fa:100::/64 中获取 IPv6 ULA 地址,但在向 fdd0:c720:85fa:100::1 发送邻居请求时从未收到邻居通告:
router# tcpdump -i igc3 ip6
10:02:52.296838 fe80::6af7:28ff:fe64:348d > ff02::1:ff00:1: icmp6: neighbor sol: who has fdd0:c720:85fa:100::1
10:02:53.296831 fe80::6af7:28ff:fe64:348d > ff02::1:ff00:1: icmp6: neighbor sol: who has fdd0:c720:85fa:100::1
10:02:54.296897 fe80::6af7:28ff:fe64:348d > ff02::1:ff00:1: icmp6: neighbor sol: who has fdd0:c720:85fa:100::1
10:02:55.306817 fe80::6af7:28ff:fe64:348d > ff02::1:ff00:1: icmp6: neighbor sol: who has fdd0:c720:85fa:100::1
10:02:56.306761 fe80::6af7:28ff:fe64:348d > ff02::1:ff00:1: icmp6: neighbor sol: who has fdd0:c720:85fa:100::1
fdd0:c720:85fa:100::/64 中的地址当前不可路由。我认为ndp -a
证实了这一点(在路由器上运行时):
Neighbor Linklayer Address Netif Expire S Flags
...
fdd0:c720:85fa:100::1 a8:b8:e0:01:d0:51 igc0 permanent R l
fdd0:c720:85fa:100:222b:20ff:fef7:a413 (incomplete) igc0 expired N
fdd0:c720:85fa:100:6094:e251:66e6:7bc9 (incomplete) igc0 expired N
fdd0:c720:85fa:100:6754:e5:a200:1d9c (incomplete) igc0 expired N
fdd0:c720:85fa:100:bfbf:5645:c950:385f (incomplete) igc0 expired N
我相当确信我错过了一些简单的东西,但我不明白是什么。我尝试在两台机器上禁用 pf ,但没有效果。我已经阅读了 slaacd(8)、hostname.if(5)、ifconfig(8)、rad(8) 和 rad.conf(5) 的手册页,但没有找到任何看起来(对我来说)的内容具有相关性。
我的 ISP 返回的来自我的前缀委托的 GUA IPv6 地址在我的所有设备上都能正常工作。我想使用 ULA 进行内部寻址,因为我的 ISP 的前缀委托不是静态的,并且已经更改了两次。
更多详细信息(附加配置文件、dmesg 等)可以在OpenBSD 其他邮件列表存档,因为我也在那里寻求帮助。
我在这里做错了什么?
答案1
(转自我的 OpenBSD 邮件列表回复)
好吧,我想我已经明白了。
我的核心问题是我在 rad.conf 中手动分配前缀,然后为每个接口分配一个地址在相同的前缀中。这造成了某种冲突——我仍然不完全理解其本质。
这是我在 rad.conf(5) 中错过的关键行:
默认情况下,通过检查接口上配置的 IPv6 地址来发现要通告的前缀。
因此,只要我的接口在各自的前缀中分配了两个地址,rad 就可以为这些地址提供服务,而无需任何额外的配置。
这是我的最终 /etc/hostname.igc1:
inet 192.168.1.1 255.255.255.0 NONE
inet6 autoconf
inet6 alias fdd0:c720:85fa:100::1 64
我的最终 /etc/rad.conf:
interface igc1 {
dns {
nameserver {
fdd0:c720:85fa:100::1
}
}
}
现在,我网络上的设备将通过 SLAAC 自动分配 GUA 和 ULA 地址。