You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/wgengine/magicsock
James Tucker 8d1249550a net/netcheck,wgengine/magicsock: add potential workaround for Palo Alto DIPP misbehavior
Palo Alto firewalls have a typically hard NAT, but also have a mode
called Persistent DIPP that is supposed to provide consistent port
mapping suitable for STUN resolution of public ports. Persistent DIPP
works initially on most Palo Alto firewalls, but some models/software
versions have a bug which this works around.

The bug symptom presents as follows:

- STUN sessions resolve a consistent public IP:port to start with
- Much later netchecks report the same IP:Port for a subset of
  sessions, most often the users active DERP, and/or the port related
  to sustained traffic.
- The broader set of DERPs in a full netcheck will now consistently
  observe a new IP:Port.
- After this point of observation, new inbound connections will only
  succeed to the new IP:Port observed, and existing/old sessions will
  only work to the old binding.

In this patch we now advertise the lowest latency global endpoint
discovered as we always have, but in addition any global endpoints that
are observed more than once in a single netcheck report. This should
provide viable endpoints for potential connection establishment across
a NAT with this behavior.

Updates tailscale/corp#19106

Signed-off-by: James Tucker <james@tailscale.com>
2 months ago
..
batching_conn.go wgengine/magicsock: improve don't fragment bit set/get support 9 months ago
blockforever_conn.go wgengine/magicsock: improve don't fragment bit set/get support 9 months ago
debughttp.go all: remove LenIter, use Go 1.22 range-over-int instead 4 months ago
debugknobs.go all: cleanup unused code, part 2 (#10670) 6 months ago
debugknobs_stubs.go wgengine/magicsock: replace CanPMTUD() with ShouldPMTUD() 9 months ago
derp.go health, wgengine/magicsock: remove last of health package globals 2 months ago
derp_test.go net/netcheck,wgengine/magicsock: align DERP frame receive time heuristics 3 months ago
discopingpurpose_string.go wgengine/magicsock: implement probing of UDP path lifetime (#10844) 5 months ago
endpoint.go wgengine/magicsock: prefer link-local addresses to private ones 4 months ago
endpoint_default.go all: adjust some build tags for plan9 10 months ago
endpoint_stub.go all: adjust some build tags for plan9 10 months ago
endpoint_test.go wgengine/magicsock: implement probing of UDP path lifetime (#10844) 5 months ago
endpoint_tracker.go wgengine/magicsock: only cache N most recent endpoints per-Addr 11 months ago
endpoint_tracker_test.go all: use Go 1.22 range-over-int 3 months ago
magicsock.go net/netcheck,wgengine/magicsock: add potential workaround for Palo Alto DIPP misbehavior 2 months ago
magicsock_default.go wgengine/magicsock: delete unused stuff 11 months ago
magicsock_linux.go wgengine/magicsock: simplify tryEnableUDPOffload() (#9872) 9 months ago
magicsock_test.go net/netcheck, wgengine/magicsock: make netmon.Monitor required 2 months ago
magicsock_unix_test.go all: update copyright and license headers 1 year ago
peermap.go wgengine/magicsock: allow disco communication without known endpoints 3 months ago
peermtu.go magicsock: mute noisy expected peer mtu related error (#10870) 5 months ago
peermtu_darwin.go wgengine/magicsock: improve don't fragment bit set/get support 9 months ago
peermtu_linux.go wgengine/magicsock: improve don't fragment bit set/get support 9 months ago
peermtu_stubs.go magicsock: mute noisy expected peer mtu related error (#10870) 5 months ago
peermtu_unix.go wgengine/magicsock: replace CanPMTUD() with ShouldPMTUD() 9 months ago
rebinding_conn.go wgengine/magicsock: improve don't fragment bit set/get support 9 months ago