tailscale/net/tstun
Maisem Ali 1f51bb6891 net/tstun: do SNAT after filterPacketOutboundToWireGuard
In a configuration where the local node (ip1) has a different IP (ip2)
that it uses to communicate with a peer (ip3) we would do UDP flow
tracking on the `ip2->ip3` tuple. When we receive the response from
the peer `ip3->ip2` we would dnat it back to `ip3->ip1` which would
then not match the flow track state and the packet would get dropped.

To fix this, we should do flow tracking on the `ip1->ip3` tuple instead
of `ip2->ip3` which requires doing SNAT after the running filterPacketOutboundToWireGuard.

Updates tailscale/corp#19971, tailscale/corp#8020

Signed-off-by: Maisem Ali <maisem@tailscale.com>
2024-05-14 17:19:09 -04:00
..
fake.go cmd/tailscaled,net/tstun: fix data race on start-up in TUN mode 2023-10-14 08:54:30 -07:00
ifstatus_noop.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
ifstatus_windows.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
linkattrs_linux.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
linkattrs_notlinux.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
mtu.go disco,net/tstun,wgengine/magicsock: probe peer MTU 2023-10-09 01:57:12 -07:00
mtu_test.go disco,net/tstun,wgengine/magicsock: probe peer MTU 2023-10-09 01:57:12 -07:00
tap_linux.go go.mod,*: bump gvisor 2023-09-28 16:17:16 -07:00
tap_unsupported.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
tstun_stub.go cmd/tailscaled, net/tstun: build for aix/ppc64 2024-04-13 11:03:22 -07:00
tun.go net/tstun: implement env var for disabling UDP GRO on Linux (#11924) 2024-04-30 09:14:02 -07:00
tun_features_linux.go net/tstun: implement env var for disabling UDP GRO on Linux (#11924) 2024-04-30 09:14:02 -07:00
tun_features_notlinux.go net/tstun: implement env var for disabling UDP GRO on Linux (#11924) 2024-04-30 09:14:02 -07:00
tun_linux.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
tun_macos.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
tun_notwindows.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
tun_windows.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
wrap.go net/tstun: do SNAT after filterPacketOutboundToWireGuard 2024-05-14 17:19:09 -04:00
wrap_test.go net/tstun: refactor peerConfig to allow storing more details 2024-05-06 15:15:30 -07:00