使用 systemd-networkd 提供稳定的私有 IPv6 地址

使用 systemd-networkd 提供稳定的私有 IPv6 地址

我正在尝试设置一个IPv6稳定隐私地址在一个盒子上systemd-networkd

盒子是一个转速跑步archlinux-arm但这与架构Linux

所以遵循维基@archlinux.org,我已经设置了一个稳定的秘密并用于addr_gen_mode=2内核配置,然后告诉systemd-networkd使用内核配置(还有其他方法吗?)

# cat /etc/sysctl.d/40-ipv6.conf 
net.ipv6.conf.eth0.use_tempaddr=2
net.ipv6.conf.eth0.stable_secret=dead:beaf:dead:beaf:dead:beaf:dead:beaf
net.ipv6.conf.eth0.addr_gen_mode=2

# cat /etc/systemd/network/eth0.network 
[Match]
Name=eth0

[Network]
DHCP=ipv4
IPv6PrivacyExtensions=kernel

但这是行不通的。 stable-privacy甚至没有启用。

所以我添加了一个[Address]部分eth0.network

[Address]
ManageTemporaryAddress=false

最后,由于本地链接(“范围链接”)被标记,因此启用了稳定隐私稳定的隐私 为了以太网0

$ ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether b8:27:eb:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.44.106/24 brd 192.168.44.255 scope global dynamic eth0
       valid_lft 42796sec preferred_lft 42796sec
    inet6 xxxx:xxx:xxx:xxxx:80c1:77d4:f72b:b132/64 scope global temporary dynamic 
       valid_lft 85998sec preferred_lft 85829sec
    inet6 xxxx:xxx:xxx:xxxx:baxx:xxff:fxxx:xxxx/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 85998sec preferred_lft 85998sec
    inet6 fe80::24e2:14e:ad9e:df8/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

然而,我期望临时动态地址我有不是改变在每个重启。不是这种情况。

是我错了,还是有什么配置错误?

答案1

我只是想使用 systemd-networkd,你的帖子非常有帮助,谢谢。使用 arch linux x64 需要输入默认设备内核名称,例如:

# cat /etc/systemd/network/25-wireless.network 
[Match]
Name=wlp3s0u1  

[Network]
DHCP=yes
IPv6PrivacyExtensions=kernel

因为我设置的 udev 名称(eth0、wlan0)不适用于 wpa_supplicant。也许是稳定的隐私依赖于本地链接和私人分机在临时动态链接?这里我选择使用临时动态地址运行 ipv6,并且还需要更改 40-ipv6.conf(现在具有稳定的隐私):

# cat /etc/sysctl.d/40-ipv6.conf
# Enable IPv6 Privacy Extensions
net.ipv6.conf.all.use_tempaddr=2
net.ipv6.conf.default.use_tempaddr=2
net.ipv6.conf.wlp3s0u1.use_tempaddr=2
net.ipv6.conf.enp5s0.use_tempaddr=2  

# Enable IPv6 stable privacy mode
net.ipv6.conf.wlp3s0u1.stable_secret=66e5:0a06:9d23:15f7:xxxx:xxxx:xxxx:xxxx
net.ipv6.conf.wlp3s0u1.addr_gen_mode=2

好吧,重新启动了一些,现在我得到了隐私扩展。和稳定的隐私具有相同的本地地址,但不在临时动态。也许这就是它的运作方式。再次感谢你。

# ip addr show dev wlp3s0u1
3: wlp3s0u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 90:f6:52:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.3/24 brd 192.168.0.255 scope global dynamic wlp3s0u1
       valid_lft 15550560sec preferred_lft 15550560sec
    inet6 2804:d51:ef9:5d00:xxxx:xxxx:xxxx:xxxx/64 scope global temporary dynamic 
       valid_lft 86381sec preferred_lft 84583sec
    inet6 2804:d51:ef9:5d00:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 86381sec preferred_lft 86381sec
    inet6 fe80::7902:xxxx:xxxx:xxxx/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

答案2

由于systemd-networkd能够配置为使用隐私扩展来生成临时全局地址(实际上是通过告诉它使用内核配置),我认为 SOII 又名 RFC 7217 也是如此。

但不是。systemd-networkd做不到:https://github.com/systemd/systemd/issues/4625

相关内容