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/net
Tom DNetto c8f4dfc8c0 derp/derphttp,net/netcheck: improve netcheck behavior under MITM proxies
In cases where tailscale is operating behind a MITM proxy, we need to consider
that a lot more of the internals of our HTTP requests are visible and may be
used as part of authorization checks. As such, we need to 'behave' as closely
as possible to ideal.

 - Some proxies do authorization or consistency checks based the on Host header
   or HTTP URI, instead of just the IP/hostname/SNI. As such, we need to
   construct a `*http.Request` with a valid URI everytime HTTP is going to be
   used on the wire, even if its over TLS.
   Aside from the singular instance in net/netcheck, I couldn't find anywhere
   else a http.Request was constructed incorrectly.

 - Some proxies may deny requests, typically by returning a 403 status code. We
   should not consider these requests as a valid latency check, so netcheck
   semantics have been updated to consider >299 status codes as a failed probe.

Signed-off-by: Tom DNetto <tom@tailscale.com>
2 years ago
..
dns net/dns: schedule DoH upgrade explicitly, fix Resolver.Addr confusion 2 years ago
dnscache net/dns/resolver: make DoH dialer use existing dnscache happy eyeball dialer 2 years ago
dnsfallback net/dnsfallback: update from 'go generate' 2 years ago
flowtrack all: use any instead of interface{} 2 years ago
interfaces net/interfaces: add FreeBSD default route lookup (portmapping, etc) 2 years ago
netcheck derp/derphttp,net/netcheck: improve netcheck behavior under MITM proxies 2 years ago
neterror net/{neterror,dns/resolver}: move PacketWasTruncated to neterror from DNS code 2 years ago
netknob all: disable TCP keep-alives on iOS/Android 3 years ago
netns net/netns: remove a useless probe of the "ip" command 2 years ago
netstat all: gofmt with Go 1.17 3 years ago
nettest net/nettest: deflake TestPipeTimeout 3 years ago
netutil net/netutil: add CheckIPForwardingLinux (#4301) 2 years ago
packet net/packet, wgengine/netstack: remove workaround for old gvisor ECN bug 2 years ago
portmapper all: use any instead of interface{} 2 years ago
proxymux net/proxymux: add a listener mux that can run SOCKS and HTTP on a single socket. 3 years ago
socks5 all: use any instead of interface{} 2 years ago
speedtest all: fix spelling mistakes 3 years ago
stun all: gofmt with Go 1.17 3 years ago
tlsdial envknob: add new package for all the strconv.ParseBool(os.Getenv(..)) 2 years ago
tsaddr net/tsaddr, wgengine/netstack: add IPv6 range that forwards to site-relative IPv4 2 years ago
tsdial cmd/tailscale: write fewer known_hosts, resolve ssh host to FQDN early 2 years ago
tshttpproxy net/tshttpproxy: ensure we pass the correct flags to WinHttpOpen on Win7 and Win8.0 2 years ago
tstun wgengine: inject packetbuffers rather than bytes (#4220) 2 years ago