使用 systemd-networkd 获取 ipv6 稳定隐私地址

使用 systemd-networkd 获取 ipv6 稳定隐私地址

我正在尝试获取我的盒子上生成的稳定隐私地址作为路由器通告前缀。

如果我只是像下面这样设置内核参数,我确实会得到一个良好稳定的隐私地址。

sysctl net.ipv6.conf.eth0.stable_secret="aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111"
sysctl net.ipv6.conf.eth0.use_tempaddr=0
sysctl net.ipv6.conf.eth0.addr_gen_mode=2 

17: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 10:82:86:05:dc:36 brd ff:ff:ff:ff:ff:ff
    inet6 fd01:abcd:efab:cdef:170e:bc6c:b50b:383f/64 scope global dynamic mngtmpaddr stable-privacy
       valid_lft 86397sec preferred_lft 14397sec
    inet6 fe80::11f:e820:cf87:4238/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

不过,我计划使用 systemd-networkd,这样我也可以通过 RA 获取 DNS。

现在,对于 systemd-networkd,无论我尝试什么,我似乎都无法获得内核生成的全局稳定隐私地址。虽然下面配置的地址不是 eui64,但它不会被内核显示为稳定隐私,并且完全不受我指定的稳定秘密的影响。

[Match]
Name=eth0
                                                                                                                                                                                                                                                                                                            
[Network]
IPv6AcceptRA=true
IPv6LinkLocalAddressGenerationMode=stable-privacy
IPv6StableSecretAddress=aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111
IPv6PrivacyExtensions=kernel
IPv6Token=prefixstable

[IPv6AcceptRA]
UseDNS=true

有没有办法生成和控制由 systemd-networkd 生成的稳定隐私地址?

或者有什么我可以使用的服务可以让我从内核获得稳定的隐私地址,但让我通过 RA 执行 DNS 操作。

谢谢浸

答案1

IPv6PrivacyExtensions=设置涉及 RFC 4941 无状态临时地址,而不是 RFC 7217 稳定隐私地址。

正如您所指定的IPv6PrivacyExtensions=kernel,您可能会获得 RFC 4941 样式的地址。随着时间的推移它会改变,这似乎不是你想要的。

的文档IPv6AcceptRA=表明 systemd 必须使用自己的 IPv6 RA 协议实现,而不是内核中的协议,才能访问 RA 中的 DNS 信息。也许设置IPv6PrivacyExtensions=kernel也与此冲突?

相关内容