From d349582c0769aa4b9c48e7921e5510072dd37c74 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Wed, 16 Dec 2020 21:35:12 +0100 Subject: [PATCH] nixos/network-interfaces-systemd: fix IPv6 privacy extensions networkd seems to be buggy with IPv6PrivacyExtensions=kernel being set, and the addresses don't appear anymore. In fact, the corresponding sysctl seems to be set to -1 again. Fixes https://github.com/NixOS/nixpkgs/issues/106858. Upstream Issue: https://github.com/systemd/systemd/issues/18003 --- nixos/modules/tasks/network-interfaces-systemd.nix | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/nixos/modules/tasks/network-interfaces-systemd.nix b/nixos/modules/tasks/network-interfaces-systemd.nix index 23e1e611a71e..088bffd7c508 100644 --- a/nixos/modules/tasks/network-interfaces-systemd.nix +++ b/nixos/modules/tasks/network-interfaces-systemd.nix @@ -93,7 +93,17 @@ in (if i.useDHCP != null then i.useDHCP else false)); address = forEach (interfaceIps i) (ip: "${ip.address}/${toString ip.prefixLength}"); - networkConfig.IPv6PrivacyExtensions = "kernel"; + # IPv6PrivacyExtensions=kernel seems to be broken with networkd. + # Instead of using IPv6PrivacyExtensions=kernel, configure it according to the value of + # `tempAddress`: + networkConfig.IPv6PrivacyExtensions = { + # generate temporary addresses and use them by default + "default" = true; + # generate temporary addresses but keep using the standard EUI-64 ones by default + "enabled" = "prefer-public"; + # completely disable temporary addresses + "disabled" = false; + }.${i.tempAddress}; linkConfig = optionalAttrs (i.macAddress != null) { MACAddress = i.macAddress; } // optionalAttrs (i.mtu != null) {