Linux – Why are IPV6 privacy extensions not working in Arch Linux

arch linuxipv6systemd-networkd

I have native IPv6 via my ISP, with a routed /64 block. IPv6 is working on my internal network. (ie. I can ping ipv6.google.com)

All devices on the network have IPv6 addresses allocated, and with the exception on my Arch Linux desktop seem to be using temporary addresses as per IPv6 Privacy extensions recommendations.

The Arch Linux machine is using systemd-networkd for networking with the following config:

[Match]
Name=en*

[Network]
DHCP=yes
IPv6PrivacyExtensions=true

Reported network config is:

» ip addr show dev enp4s0
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
     link/ether XX:XX:XX:df:cd brd ff:ff:ff:ff:ff:ff
     inet XX.XX.XX.XX/24 brd XX.XX.XX.255 scope global enp4s0
         valid_lft forever preferred_lft forever
     inet6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:dfcd/64 scope global noprefixroute dynamic
         valid_lft 86387sec preferred_lft 14387sec
     inet6 fe80::XXXX:XXXX:XXXX:dfcd/64 scope link
         valid_lft forever preferred_lft forever

# use_tempaddr appears to be set correctly.
» cat /proc/sys/net/ipv6/conf/enp4s0/use_tempaddr
2

Why is the arch machine using the address derived from the MAC address of the NIC? I would expect there to be an additional address with a short lifetime?

The IPv6 network setup is via radvd running on a dd-wrt box. The radvd config is:

interface br0 { 
  AdvSendAdvert on;
  MinRtrAdvInterval 30;
  MaxRtrAdvInterval 100;
  prefix ::/64 {
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr on;
  };
};

Testing on http://ipv6-test.com/ on the arch machine tells me that I need to enable privacy extensions, and gives a score of 18/20. On other machines on the same network I get a 20/20 score.

Best Answer

This is a bug in systemd. The entry in systemd bug tracker is issue #2242, the one in Arch Linux' flyspray is FS#47557.

Related Question