sysctl: force use_tempaddr=0 to beat Ubuntu's 55-ipv6-privacy.conf default

Root cause of the flow-selective IPv6 heartbeat loss investigated
2026-07-12/13: Ubuntu ships /usr/lib/sysctl.d/55-ipv6-privacy.conf with
use_tempaddr=2 system-wide. Nothing on wlan0 overrode it before this
morning's netplan fix, so the interface carried a rotating privacy
address alongside the stable one. hbc's long-lived flow eventually
straddled a temp-address deprecation event mid-flight, which looked
exactly like random upstream packet loss (in-transit, IPv6-only,
flow-selective) and cost a day of packet captures before the cause
turned out to be this default fighting the WAN config instead.

The netplan/NM ipv6.ip6-privacy=false fix already forces this per
connection, but that's a timing-dependent override racing a package
default. This makes it explicit and permanent: 99- loads after (and
wins over) 55- the next time sysctl --system runs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Andreas Wrede
2026-07-13 12:06:33 -04:00
co-authored by Claude Sonnet 5
parent daa545f15c
commit 09259eb6cc
+11
View File
@@ -1 +1,12 @@
net.ipv4.ip_forward=1 net.ipv4.ip_forward=1
# Ubuntu ships /usr/lib/sysctl.d/55-ipv6-privacy.conf with use_tempaddr=2
# (prefer rotating privacy addresses) system-wide. That default fought the
# WAN uplinks' need for one stable IPv6 source address per interface (hbc,
# DNS, van-failover all key off it) — a long-lived flow using a source
# address that later got deprecated mid-flight looked like random upstream
# packet loss and cost a day of packet-capture debugging (2026-07-12/13)
# before the cause turned out to be this file loading before ours. 99- beats
# 55- lexically so this wins the second `sysctl --system` re-reads it.
net.ipv6.conf.all.use_tempaddr=0
net.ipv6.conf.default.use_tempaddr=0