我有一个网络,并且radvd
服务器kea-dhcp6
正在运行。客户端正在运行systemd-networkd
(目前 Debian 稳定)并且:
[Network]
IPv6AcceptRA=true
DHCP=yes
所需的行为是为客户端配置来自 DHCPv6 的地址以及来自 RA 的路由。目前,通过此配置,客户端从 DHCP 获取正确的 IP 地址、自动生成/自动分配的global dynamic mngtmpaddr noprefixroute
地址以及正确的路由
default proto static metric 1024
nexthop via fe80::20d:b9ff:fe54:2d18 dev eno1 weight 1 pref medium
出于无聊的原因,我希望系统更喜欢 DHCPv6 分配的地址作为源地址。据我所知,可以通过将此地址设置为“家庭”地址或使其成为唯一可用的地址来实现此目的。我发现当前systemd-networkd
无法home
在 DHCP 获得的地址上设置标志,因此我试图找出如何执行后者。
问题是,通过设置IPv6AcceptRA=false
,这确实删除了地址,但它也删除了默认的 LL 地址路由,这破坏了许多其他事情。
有没有办法让我拥有 RA 分配的 LL 路由,但不拥有随之而来的自动配置地址?
答案1
最佳解决方案取决于您是要禁用整个网络的地址自动配置还是仅针对一台设备禁用地址自动配置。
对于整个网络,您可以告诉radvd
不要在其公告中设置“自治”标志。这将阻止网络上的所有系统自动生成自己的地址。您可以使用该AdvAutonomous
选项。
如果你想在内核级别的客户端上设置这个,你需要告诉内核不要生成它自己的地址。最简单的方法是使用/etc/sysctl.d/10-ipv6-autoconf.conf
以下内容进行创建:
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
每次重新启动后都会处理此文件。您可以通过 runnint 手动激活新设置sudo sysctl --system
。
当你想使用systemd-networkd
以下应该可行的时候,但我自己还没有尝试过:
[Network]
IPv6AcceptRA=true
DHCP=yes
[IPv6AcceptRA]
UseAutonomousPrefix=false