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/derp
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
..
derphttp derp/derphttp,net/netcheck: improve netcheck behavior under MITM proxies 2 years ago
testdata derp: add debug traffic handler 3 years ago
wsconn cmd/derper, derp/derphttp: add websocket support 3 years ago
derp.go derp: add new health update and server restarting frame types 3 years ago
derp_client.go derp: add Client.LocalAddr method 2 years ago
derp_server.go derp: add (*Server).IsClientConnectedForTest func. (#4331) 2 years ago
derp_test.go derp: set Basic Constraints on metacert 2 years ago
dropreason_string.go derp: accept dup clients without closing prior's connection 3 years ago