tailscale/util
Brendan Creane 77d2c87b17
wgengine/router/osrouter,util/linuxfw: remove orphaned tailnet addrs (#20199)
Router.Set reconciled tailscale0's addresses only against the in-memory
r.addrs map, which starts empty each run. After a restart the kernel can
still hold the addresses a previous profile put on tailscale0. With no
record of them, Set never removed them, leaving two tailnets' CGNAT
addresses on the interface. That broke connectivity, because the kernel
could source traffic from the wrong IP.

Fix this by scanning the addresses actually on the interface and, after
reconciling the desired set, removing any in Tailscale's CGNAT/ULA ranges
that aren't in the config. Non-Tailscale addresses are never touched,
and IPv6 addresses are skipped when IPv6 is unavailable, since delAddress
no-ops there. To avoid a netlink dump on every Set, the scan runs only on
the first Set and when the desired address set changes.

This also needs the iptables DelLoopbackRule to tolerate a missing rule:
an orphan left by a previous instance never went through AddLoopbackRule
here, and iptables (unlike nftables) errors when deleting an absent
rule, which would otherwise block the address delete.

Fixes #19974

Signed-off-by: Brendan Creane <bcreane@gmail.com>
2026-06-24 13:41:36 -07:00
..
backoff all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
bufiox derp,types,util: use bufio Peek+Discard for allocation-free fast reads (#19067) 2026-03-24 10:52:20 -04:00
checkchange all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
cibuild util/cibuild, cache_key_test: skip TestTsgoRevInCacheKey outside Tailscale CI 2026-05-14 15:55:05 -07:00
clientmetric all: fix six tests that failed with -count=2 2026-04-13 18:52:57 -07:00
cloudenv util/cloudenv: detect Hetzner Cloud 2026-06-23 11:10:59 -07:00
cloudinfo all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
cmpver cmd/vet: add subtestnames analyzer; fix all existing violations 2026-04-05 15:52:51 -07:00
codegen all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
ctxkey all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
deephash cmd/vet/lowerell, drive/driveimpl: forbid variables named "l" or "I" 2026-05-04 14:03:28 -07:00
def util: add parse fallback helpers (#20022) 2026-06-15 15:58:51 -07:00
dirwalk all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
dnsname all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
eventbus all: don't repeat the the word "the" unnecessarily 2026-06-18 16:32:08 +01:00
execqueue all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
goroutines all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
groupmember all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
hashx all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
httphdr all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
httpm util/httpm: open .git/index to defeat Go test caching 2026-04-15 15:44:19 -07:00
limiter all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
lineiter all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
lineread all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
linuxfw wgengine/router/osrouter,util/linuxfw: remove orphaned tailnet addrs (#20199) 2026-06-24 13:41:36 -07:00
lru all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
mak all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
multierr all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
must all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
nocasemaps all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
osdiag util/osdiag: fix typo in comment (reciever -> receiver) 2026-03-23 12:54:38 +00:00
osshare all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
osuser util/osuser: extend id command fallback for group IDs to freebsd 2026-03-09 08:39:07 +00:00
precompress all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
progresstracking all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
prompt all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
qrcodes all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
quarantine all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
race all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
racebuild all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
rands all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
reload all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
ringlog all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
safediff all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
set util/set: add iterator support to Set[T] (#20159) 2026-06-18 00:12:56 -07:00
singleflight all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
slicesx all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
stringsx all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
syspolicy cmd/vet: add subtestnames analyzer; fix all existing violations 2026-04-05 15:52:51 -07:00
testenv all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
truncate all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
usermetric all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
vizerror all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
winutil all: don't repeat the the word "the" unnecessarily 2026-06-18 16:32:08 +01:00
zstdframe all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00