tailscale/ipn
Brad Fitzpatrick bd90781b34 ipn/ipnlocal, wgengine/netstack: use netstack for peerapi server
We're finding a bunch of host operating systems/firewalls interact poorly
with peerapi. We either get ICMP errors from the host or users need to run
commands to allow the peerapi port:

https://github.com/tailscale/tailscale/issues/3842#issuecomment-1025133727

... even though the peerapi should be an internal implementation detail.

Rather than fight the host OS & firewalls, this change handles the
server side of peerapi entirely in netstack (except on iOS), so it
never makes its way to the host OS where it might be messed with. Two
main downsides are:

1) netstack isn't as fast, but we don't really need speed for peerapi.
   And actually, with fewer trips to/from the kernel, we might
   actually make up for some of the netstack performance loss by
   staying in userspace.

2) tcpdump / Wireshark etc packet captures will no longer see the peerapi
   traffic. Oh well. Crawshaw's been wanting to add packet capture server
   support to tailscaled, so we'll probably do that sooner now.

A future change might also then use peerapi for the client-side
(except on iOS).

Updates #3842 (probably fixes, as well as many exit node issues I bet)

Change-Id: Ibc25edbb895dc083d1f07bd3cab614134705aa39
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2022-01-31 14:20:08 -08:00
..
ipnlocal ipn/ipnlocal, wgengine/netstack: use netstack for peerapi server 2022-01-31 14:20:08 -08:00
ipnserver ipn/ipnserver: add TS_PERMIT_CERT_UID envknob to give webservers cert access 2022-01-25 12:12:41 -08:00
ipnstate ipn/ipnstate: add TailnetName to status 2022-01-26 10:08:39 -08:00
localapi ipn/ipnserver: add TS_PERMIT_CERT_UID envknob to give webservers cert access 2022-01-25 12:12:41 -08:00
policy ipn/policy: treat DNS service as interesting so it's not filtered out 2021-12-03 12:55:54 -08:00
store/aws ipn/store/aws: support using sub-paths in parameters 2021-11-29 07:48:01 -08:00
backend.go ipn: use key.NodePublic instead of tailcfg.NodeKey 2021-11-01 20:32:10 -07:00
doc.go Move Linux client & common packages into a public repo. 2020-02-09 09:32:57 -08:00
fake_test.go ipn{,/ipnlocal}, cmd/tailscale/cli: don't check pref reverts on initial up 2021-04-18 08:12:18 -07:00
handle.go ipn: another controlplane synonym 2021-07-13 08:22:10 -07:00
message_test.go ipn: allow b to be nil in NewBackendServer 2021-05-19 09:33:19 -07:00
message.go ipn: don't log IPN messages that may contain an authkey. 2021-09-22 20:32:49 -07:00
prefs_clone.go wgengine/netstack: add an SSH server experiment 2022-01-24 19:14:13 -08:00
prefs_test.go wgengine/netstack: add an SSH server experiment 2022-01-24 19:14:13 -08:00
prefs.go wgengine/netstack: add an SSH server experiment 2022-01-24 19:14:13 -08:00
store_test.go ipn: test TestFileStore in a fresh subdirectory 2021-09-24 15:05:10 -07:00
store.go ipn: remove mention of wgkey in comment. 2021-10-28 10:40:44 -07:00