tailscale/cmd
Brad Fitzpatrick 58abae1f83 net/dns/{publicdns,resolver}: add NextDNS DoH support
NextDNS is unique in that users create accounts and then get
user-specific DNS IPs & DoH URLs.

For DoH, the customer ID is in the URL path.

For IPv6, the IP address includes the customer ID in the lower bits.

For IPv4, there's a fragile "IP linking" mechanism to associate your
public IPv4 with an assigned NextDNS IPv4 and that tuple maps to your
customer ID.

We don't use the IP linking mechanism.

Instead, NextDNS is DoH-only. Which means using NextDNS necessarily
shunts all DNS traffic through 100.100.100.100 (programming the OS to
use 100.100.100.100 as the global resolver) because operating systems
can't usually do DoH themselves.

Once it's in Tailscale's DoH client, we then connect out to the known
NextDNS IPv4/IPv6 anycast addresses.

If the control plane sends the client a NextDNS IPv6 address, we then
map it to the corresponding NextDNS DoH with the same client ID, and
we dial that DoH server using the combination of v4/v6 anycast IPs.

Updates #2452

Change-Id: I3439d798d21d5fc9df5a2701839910f5bef85463
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2022-09-08 12:50:32 -07:00
..
addlicense cmd/addlicense: add command to add licenseheaders to generated code 2021-07-19 15:31:56 -07:00
cloner cmd/{cloner,viewer}: add support for map values with pointers 2022-08-03 13:02:17 -07:00
derper cmd/derper: filter out useless HTTP error logs (#5563) 2022-09-07 16:31:06 -04:00
derpprobe net/stun: convert to use net/netip.AddrPort 2022-08-15 12:46:01 -04:00
gitops-pusher cmd/gitops-pusher: standardize hujson before posting to validate (#5525) 2022-09-01 13:38:32 -04:00
hello net/netaddr: start migrating to net/netip via new netaddr adapter package 2022-07-25 16:20:43 -07:00
mkpkg cmd/mkpkg: use package flag (#4373) 2022-04-07 16:38:33 -04:00
nginx-auth cmd/nginx-auth/nginx-auth: update auth to allow for new domains 2022-08-31 20:18:13 -07:00
printdep Docker: add ALPINE.txt to manage alpine versions 2022-06-29 11:47:09 -07:00
proxy-to-grafana all: gofmt for Go 1.19 2022-08-02 10:08:05 -07:00
speedtest cmd: upgrade to ffcli v3 2021-09-14 13:21:55 -07:00
tailscale cmd/tailscale/cli: add backwards compatibility 'up' processing for legacy client 2022-09-01 14:21:48 -07:00
tailscaled net/dns/{publicdns,resolver}: add NextDNS DoH support 2022-09-08 12:50:32 -07:00
testcontrol all: use any instead of interface{} 2022-03-17 11:35:09 -07:00
tsconnect cmd/tsconnect: temporarily switch to xterm.js fork that handles popup windows 2022-09-08 09:30:52 -07:00
tsshd cmd/tsshd: add a package line to appease gofmt 2022-07-25 20:52:04 -07:00
viewer cmd/viewer: add flag to support Clone generation without Views 2022-08-17 15:15:27 -07:00