Brad Fitzpatrick
be921d1a95
net/dns/resolver: fix skipped DoH test that bitrot
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-08-02 15:26:27 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
7298e777d4
derp: reduce server memory by 30% by removing persistent bufio.Writer
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-08-02 10:17:56 -07:00
Brad Fitzpatrick
5a7ff2b231
net/dnsfallback: re-run go generate
2021-08-01 19:14:33 -07:00
Brad Fitzpatrick
b622c60ed0
derp,wgengine/magicsock: don't assume stringer is in $PATH for go:generate
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-08-01 19:14:08 -07:00
Brad Fitzpatrick
d37451bac6
cmd/derper: dial VPC address with right context
...
Fix bug from just-submitted e422e9f4c9 .
Updates #2414
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-29 14:29:31 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
e422e9f4c9
cmd/derper: mesh over VPC network
...
Updates #2414
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-29 14:08:16 -07:00
Brad Fitzpatrick
b6179b9e83
net/dnsfallback: add new nodes
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-29 10:50:49 -07:00
Brad Fitzpatrick
690ade4ee1
ipn/ipnlocal: add URL to IP forwarding error message
...
Updates #606
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-28 08:00:53 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
7b9f02fcb1
cmd/tailscale/cli: document that empty string disable exit nodes, routes
...
Updates #2529
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-27 13:00:50 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
d8d9036dbb
tailcfg: add Node.PrimaryRoutes
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-27 12:09:40 -07:00
Brad Fitzpatrick
1b14e1d6bd
version: bump date
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-27 08:05:17 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
68df379a7d
net/portmapper: rename ErrGatewayNotFound to ErrGatewayRange, reword text
...
It confused & scared people. And it was just bad.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-26 20:30:28 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
aaf2df7ab1
net/{dnscache,interfaces}: use netaddr.IP.IsPrivate, delete copied code
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-26 20:30:28 -07:00
Brad Fitzpatrick
c17d743886
net/dnscache: update a comment
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-26 16:16:08 -07:00
Brad Fitzpatrick and Denton Gentry
281d503626
net/dnscache: make Dialer try all resolved IPs
...
Tested manually with:
$ go test -v ./net/dnscache/ -dial-test=bogusplane.dev.tailscale.com:80
Where bogusplane has three A records, only one of which works.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-26 15:44:32 -07:00
Brad Fitzpatrick and Denton Gentry
dfa5e38fad
control/controlclient: report whether we're in a snap package
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-26 15:16:40 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
e299300b48
net/dnscache: cache all IPs per hostname
...
Not yet used in the dialer, but plumbed around.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-26 12:27:46 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
7428ecfebd
ipn/ipnlocal: populate Hostinfo.Package on Android
...
Fixes tailscale/corp#2266
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-26 10:35:37 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
5c266bdb73
wgengine: re-set DNS config on Linux after a major link change
...
Updates #2458 (maybe fixes it)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-26 08:01:27 -07:00
Brad Fitzpatrick
53a2f63658
net/dns/resolver: race well-known resolvers less aggressively
...
Instead of blasting away at all upstream resolvers at the same time,
make a timing plan upon reconfiguration and have each upstream have an
associated start delay, depending on the overall forwarding config.
So now if you have two or four upstream Google or Cloudflare DNS
servers (e.g. two IPv4 and two IPv6), we now usually only send a
query, not four.
This is especially nice on iOS where we start fewer DoH queries and
thus fewer HTTP/1 requests (because we still disable HTTP/2 on iOS),
fewer sockets, fewer goroutines, and fewer associated HTTP buffers,
etc, saving overall memory burstiness.
Fixes #2436
Updates tailscale/corp#2250
Updates tailscale/corp#2238
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-25 20:45:47 -07:00
Brad Fitzpatrick
e94ec448a7
net/dns/resolver: add forwardQuery type as race work prep
...
Add a place to hang state in a future change for #2436 .
For now this just simplifies the send signature without
any functional change.
Updates #2436
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-25 15:43:49 -07:00
Brad Fitzpatrick
064b916b1a
net/dns/resolver: fix func used as netaddr.IP in printf
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-25 15:21:51 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
7b295f3d21
net/portmapper: disable UPnP on iOS for now
...
Updates #2495
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-22 13:33:38 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
4a2c3e2a0a
control/controlclient: grow goroutine debug buffer as needed
...
To not allocate 1MB up front on iOS.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-22 13:18:05 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
1986d071c3
control/controlclient: don't use regexp in goroutine stack scrubbing
...
To reduce binary size on iOS.
Updates tailscale/corp#2238
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-22 13:18:05 -07:00
Brad Fitzpatrick
cecfc14875
net/dns: don't build init*.go on non-windows
...
To remove the regexp dep on iOS, notably.
Updates tailscale/corp#2238
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-22 11:58:42 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
2968893add
net/dns/resolver: bound DoH usage on iOS
...
Updates tailscale/corp#2238
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-22 10:54:24 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
95a9adbb97
wgengine/netstack: implement UDP relaying to advertised subnets
...
TCP was done in 662fbd4a09 .
This does the same for UDP.
Tested by hand. Integration tests will have to come later. I'd wanted
to do it in this commit, but the SOCKS5 server needed for interop
testing between two userspace nodes doesn't yet support UDP and I
didn't want to invent some whole new userspace packet injection
interface at this point, as SOCKS seems like a better route, but
that's its own bug.
Fixes #2302
RELNOTE=netstack mode can now UDP relay to subnets
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-21 22:32:26 -07:00
Brad Fitzpatrick
3daf27eaad
net/dns/resolver: fall back to IPv6 for well-known DoH servers if v4 fails
...
Should help with IPv6-only environments when the tailnet admin
only specified IPv4 DNS IPs.
See https://github.com/tailscale/tailscale/issues/2447#issuecomment-884188562
Co-Author: Adrian Dewhurst <adrian@tailscale.com >
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-21 12:45:25 -07:00
Brad Fitzpatrick
74eee4de1c
net/dns/resolver: use correct Cloudflare DoH hostnames
...
We were using the wrong ones for the malware & adult content
variants. Docs:
https://developers.cloudflare.com/1.1.1.1/1.1.1.1-for-families/setup-instructions/dns-over-https
Earlier commit which added them:
236eb4d04d
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-21 12:24:36 -07:00
Brad Fitzpatrick
ecac74bb65
wgengine/netstack: fix doc comment
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-21 08:25:05 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
e4fecfe31d
wgengine/{monitor,router}: restore Linux ip rules when systemd deletes them
...
Thanks.
Fixes #1591
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-20 15:52:22 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
ed8587f90d
wgengine/router: take a link monitor
...
Prep for #1591 which will need to make Linux's router react to changes
that the link monitor observes.
The router package already depended on the monitor package
transitively. Now it's explicit.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-20 13:43:40 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
a909d37a59
derp: rate limit how often same-key clients can kick each other off server
...
Updates #392
Updates #506
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-20 09:31:43 -07:00
Brad Fitzpatrick
e74d37d30f
net/dns{,/resolver}: quiet DNS output logging
...
It was a huge chunk of the overall log output and made debugging
difficult. Omit and summarize the spammy *.arpa parts instead.
Fixes tailscale/corp#2066 (to which nobody had opinions, so)
2021-07-19 22:24:43 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
b6d70203d3
ipn/ipnlocal: fix 'tailscale up' on Windows without GUI
...
With this, I can now:
* install Tailscale
* stop the GUI
* net stop Tailscale
* net start Tailscale
* tailscale up --unattended
(where the middle three steps simulate what would happen on a Windows
Server Core machine without a GUI)
Fixes #2137
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-19 15:52:47 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
7f7a81e5ae
cmd/tailscaled: add func to create ipnserver.Opts
...
To unify the Windows service and non-service/non-Windows paths a bit.
And provides a way to make Linux act like Windows for testing.
(notably, for testing the fix to #2137 )
One perhaps visible change of this is that tailscaled.exe when run in
cmd.exe/powershell (not as a Windows Service) no longer uses the
"_daemon" autostart key. But in addition to being naturally what falls
out of this change, that's also what Windows users would likely want,
as otherwise the unattended mode user is ignored when the "_daemon"
autostart key is specified. Notably, this would let people debug what
their normally-run-as-a-service tailscaled is doing, even when they're
running in Unattended Mode.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-19 15:52:47 -07:00
Brad Fitzpatrick
87244eda3f
cmd/tailscale/cli: allow effective GOOS to be changed for integration tests
...
Adds TS_DEBUG_UP_FLAG_GOOS for integration tests to make "tailscale
up" act like other OSes.
For an upcoming change to test #2137 .
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-19 15:41:35 -07:00
Brad Fitzpatrick
e41193ec4d
wgengine/monitor: don't spam about Linux RTM_NEWRULE events
...
The earlier 2ba36c294b started listening
for ip rule changes and only cared about DELRULE events, buts its subscription
included all rule events, including new ones, which meant we were then
catching our own ip rule creations and logging about how they were unknown.
Stop that log spam.
Updates #1591
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-19 14:30:15 -07:00
Brad Fitzpatrick
ec4d721572
cmd/tailscaled: use state key constant from ipn package
...
Rather than redefining it again.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-19 14:14:27 -07:00
Brad Fitzpatrick
e2eaae8224
cmd/derpprobe: add in a delay to wait for mesh info to sync
2021-07-19 07:52:55 -07:00
Brad Fitzpatrick
2ba36c294b
wgengine/monitor: subscribe to Linux ip rule events, log on rule deletes
...
For debugging & working on #1591 where certain versions of systemd-networkd
delete Tailscale's ip rule entries.
Updates #1591
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-18 14:50:47 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
6eecf3c9d1
ipn/ipnlocal: stay out of map poll when down
...
Fixes #2434
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-17 08:41:39 -07:00
Brad Fitzpatrick
171ec9f8f4
control/{controlknobs,controlclient}: simplify knobs API, fix controlclient crash
...
From integration tests elsewhere:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x70 pc=0x845c9b]
goroutine 226 [running]:
tailscale.com/control/controlclient.(*Direct).sendMapRequest(0xc00053e1e0, 0x16670f0, 0xc000353780, 0xffffffffffffffff, 0xc0003e5f10, 0x0, 0x0)
/home/runner/go/pkg/mod/tailscale.com@v1.1.1-0.20210715222212-1bb6abc604c1/control/controlclient/direct.go:803 +0x19bb
tailscale.com/control/controlclient.(*Direct).PollNetMap(...)
/home/runner/go/pkg/mod/tailscale.com@v1.1.1-0.20210715222212-1bb6abc604c1/control/controlclient/direct.go:574
tailscale.com/control/controlclient.(*Auto).mapRoutine(0xc00052a1e0)
/home/runner/go/pkg/mod/tailscale.com@v1.1.1-0.20210715222212-1bb6abc604c1/control/controlclient/auto.go:464 +0x571
created by tailscale.com/control/controlclient.(*Auto).Start
/home/runner/go/pkg/mod/tailscale.com@v1.1.1-0.20210715222212-1bb6abc604c1/control/controlclient/auto.go:151 +0x65
exit status 2
Also remove types/opt.Bool API addition which is now unnecessary.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-15 22:34:50 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
236eb4d04d
net/dns/resolver: upgrade forwarded MagicDNS queries to DoH when IP known
...
Recognize Cloudflare, Google, Quad9 which are by far the
majority of upstream DNS servers that people use.
RELNOTE=MagicDNS now uses DNS-over-HTTPS when querying popular upstream resolvers,
so DNS queries aren't sent in the clear over the Internet.
Updates #915 (might fix it?)
Updates #988 (gets us closer, if it fixes Android)
Updates #74 (not yet configurable, but progress)
Updates #2056 (not yet configurable, dup of #74?)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-15 12:03:52 -07:00
Brad Fitzpatrick
ee71c966fd
cmd/derpprobe: bound node pair probe duration
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-14 12:05:39 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
98ad7f279c
ipn/localapi: fix inability to receive taildrop files w/ escaped names
...
The localapi was double-unescaping: once by net/http populating
the URL, and once by ourselves later. We need to start with the raw
escaped URL if we're doing it ourselves.
Started to write a test but it got invasive. Will have to add those
tests later in a commit that's not being cherry-picked to a release
branch.
Fixes #2288
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-13 15:37:59 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
01e159b610
ipn/ipnlocal: save prefs to disk on UpdatePrefs
...
Regression from 6d10655dc3 , which added
UpdatePrefs but didn't write it out to disk.
I'd planned on adding tests to state_test.go which is why I'd earlier
added 46896a9311 to prepare for making
such persistence tests easier to write, but turns out state_test.go
didn't even test UpdatePrefs, so I'm staying out of there.
Instead, this is tested using integration tests.
Fixes #2321
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-13 15:01:38 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
1cedd944cf
cmd/tailscale/cli: diagnose missing tailscaled on 'up'
...
Fixes #2029
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-13 12:23:11 -07:00
Brad Fitzpatrick
61e8fd4698
cmd/derpprobe: move from cmd/derper/derpprobe
...
Because our corp build system is confused by nested
binaries.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-13 09:31:00 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
05da2691a5
cmd/derper/derpprobe: add derp prober
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-13 08:30:15 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
4c0494185b
derp: remove "fine for now" intentional slow memory leak from derp server
...
It was once believed that it might be useful. It wasn't. We never used it.
Remove it so we don't slowly leak memory.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-13 08:21:54 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
1072397375
go.mod: bump wireguard/windows to a version that still exists
...
Fixes #2381
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-12 12:14:31 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
46896a9311
ipn/ipnlocal: start to test whether all state transitions save prefs to disk
...
Updates #2321
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-12 07:42:22 -07:00
Brad Fitzpatrick
22cac33fe7
ipn: remove an unnecessary lazy map init on read path
...
It's okay to read from a nil map.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-11 19:53:23 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
7e7c4c1bbe
tailcfg: break DERPNode.DERPTestPort into DERPPort & InsecureForTests
...
The DERPTestPort int meant two things before: which port to use, and
whether to disable TLS verification. Users would like to set the port
without disabling TLS, so break it into two options.
Updates #1264
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-09 12:30:31 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
92077ae78c
wgengine/magicsock: make portmapping async
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-09 11:15:26 -07:00
Brad Fitzpatrick
440566c5d2
net/interfaces: trim getPACWindows whitespace before parsing URL
...
Fixes #2357
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-08 11:26:50 -07:00
Brad Fitzpatrick
a9fc583211
cmd/tailscale/cli: document the web subcommand a bit more
...
Fixes #2326
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-07 21:16:33 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
7d417586a8
tstest/integration: help bust cmd/go's test caching
...
It was caching too aggressively, as it didn't see our deps due to our
running "go install tailscaled" as a child process.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-07 13:14:21 -07:00
Brad Fitzpatrick
3dcd18b6c8
tailcfg: note RegionID 900-999 reservation
2021-07-07 12:23:41 -07:00
Brad Fitzpatrick
ddb8726c98
util/deephash: don't reflect.Copy if element type is a defined uint8
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-07 11:58:04 -07:00
Brad Fitzpatrick
df176c82f5
util/deephash: skip alloc test under race detector
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-07 11:40:28 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
6dc38ff25c
util/deephash: optimize hashing of byte arrays, reduce allocs in Hash
...
name old time/op new time/op delta
Hash-6 173µs ± 4% 101µs ± 3% -41.69% (p=0.000 n=10+9)
HashMapAcyclic-6 101µs ± 5% 105µs ± 3% +3.52% (p=0.001 n=9+10)
TailcfgNode-6 29.4µs ± 2% 16.4µs ± 3% -44.25% (p=0.000 n=8+10)
name old alloc/op new alloc/op delta
Hash-6 3.60kB ± 0% 1.13kB ± 0% -68.70% (p=0.000 n=10+10)
HashMapAcyclic-6 2.53kB ± 0% 2.53kB ± 0% ~ (p=0.137 n=10+8)
TailcfgNode-6 528B ± 0% 0B -100.00% (p=0.000 n=10+10)
name old allocs/op new allocs/op delta
Hash-6 84.0 ± 0% 40.0 ± 0% -52.38% (p=0.000 n=10+10)
HashMapAcyclic-6 202 ± 0% 202 ± 0% ~ (all equal)
TailcfgNode-6 11.0 ± 0% 0.0 -100.00% (p=0.000 n=10+10)
Updates tailscale/corp#2130
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-07 11:30:49 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
3962744450
util/deephash: prevent infinite loop on map cycle
...
Fixes #2340
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-07 10:57:46 -07:00
Brad Fitzpatrick
aceaa70b16
util/deephash: move funcs to methods
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-07 08:17:18 -07:00
Brad Fitzpatrick
14f901da6d
util/deephash: fix sync.Pool usage
...
Whoops.
From yesterday's 9ae3bd0939 (not yet
used by anything, fortunately)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-05 22:21:44 -07:00
Brad Fitzpatrick
e0258ffd92
util/deephash: use keyed struct literal, fix vet
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-05 21:31:30 -07:00
Brad Fitzpatrick
bf9f279768
util/deephash: optimize CPU a bit by by avoiding fmt in more places
...
name old time/op new time/op delta
Hash-6 179µs ± 5% 173µs ± 4% -3.12% (p=0.004 n=10+10)
HashMapAcyclic-6 115µs ± 3% 101µs ± 5% -11.51% (p=0.000 n=9+9)
TailcfgNode-6 30.8µs ± 4% 29.4µs ± 2% -4.51% (p=0.000 n=10+8)
name old alloc/op new alloc/op delta
Hash-6 3.60kB ± 0% 3.60kB ± 0% ~ (p=0.445 n=9+10)
HashMapAcyclic-6 2.53kB ± 0% 2.53kB ± 0% ~ (p=0.065 n=9+10)
TailcfgNode-6 528B ± 0% 528B ± 0% ~ (all equal)
name old allocs/op new allocs/op delta
Hash-6 84.0 ± 0% 84.0 ± 0% ~ (all equal)
HashMapAcyclic-6 202 ± 0% 202 ± 0% ~ (all equal)
TailcfgNode-6 11.0 ± 0% 11.0 ± 0% ~ (all equal)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-05 21:28:54 -07:00
Brad Fitzpatrick
58f2ef6085
util/deephash: add a benchmark and some benchmark data
...
No code changes.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-05 21:21:52 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
9ae3bd0939
util/deephash: export a Hash func for use by the control plane
...
name old time/op new time/op delta
Hash-6 69.4µs ± 6% 68.4µs ± 4% ~ (p=0.286 n=9+9)
HashMapAcyclic-6 115µs ± 5% 115µs ± 4% ~ (p=1.000 n=10+10)
name old alloc/op new alloc/op delta
Hash-6 2.29kB ± 0% 1.88kB ± 0% -18.13% (p=0.000 n=10+10)
HashMapAcyclic-6 2.53kB ± 0% 2.53kB ± 0% ~ (all equal)
name old allocs/op new allocs/op delta
Hash-6 58.0 ± 0% 54.0 ± 0% -6.90% (p=0.000 n=10+10)
HashMapAcyclic-6 202 ± 0% 202 ± 0% ~ (all equal)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-05 11:41:44 -07:00
Brad Fitzpatrick
700badd8f8
util/deephash: move internal/deephash to util/deephash
...
No code changes. Just a minor package doc addition about lack of API
stability.
2021-07-02 21:33:02 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
1e6d8a1043
version: don't allocate parsing unsupported versions, empty strings
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-07-01 14:25:50 -07:00
Brad Fitzpatrick
fd7fddd44f
control/controlclient: add debug knob to force node to only IPv6 self addr
...
Updates #2268
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-28 15:26:58 -07:00
Brad Fitzpatrick
722859b476
wgengine/netstack: make SOCKS5 resolve names to IPv6 if self node when no IPv4
...
For instance, ephemeral nodes with only IPv6 addresses can now
SOCKS5-dial out to names like "foo" and resolve foo's IPv6 address
rather than foo's IPv4 address and get a "no route"
(*tcpip.ErrNoRoute) error from netstack's dialer.
Per https://github.com/tailscale/tailscale/issues/2268#issuecomment-870027626
which is only part of the isuse.
Updates #2268
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-28 15:20:37 -07:00
Brad Fitzpatrick
15677d8a0e
net/socks5/tssocks: add a SOCKS5 dialer type, method-ifying code
...
https://twitter.com/bradfitz/status/1409605220376580097
Prep for #1970 , #2264 , #2268
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-28 13:12:42 -07:00
Brad Fitzpatrick
3910c1edaf
net/socks5/tssocks: add new package, move SOCKS5 glue out of tailscaled
...
Prep for #1970 , #2264 , #2268
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-28 11:34:50 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
5e19ac7adc
tstest/integration: always run SOCK5 server, parse out its listening address
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-28 11:34:41 -07:00
Brad Fitzpatrick
82e15d3450
cmd/tailscaled: log SOCKS5 port when port 0 requested
...
Part of #2158
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-28 08:32:50 -07:00
Brad Fitzpatrick
10d7c2583c
net/dnsfallback: don't depend on derpmap.Prod
...
Move derpmap.Prod to a static JSON file (go:generate'd) instead,
to make its role explicit. And add a TODO about making dnsfallback
use an update-over-time DERP map file instead of a baked-in one.
Updates #1264
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-27 22:07:40 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
8a4dffee07
types/logger: fix deadlock RateLimitedFn reentrancy
...
Fix regression from 19c3e6cc9e
which made the locking coarser.
Found while debugging #2245 , which ended up looking like a tswin/Windows
issue where Crawshaw had blocked cmd.exe's output.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-25 08:38:08 -07:00
Brad Fitzpatrick
c45bfd4180
wgengine: make dnsIPsOverTailscale also consider DefaultResolvers
...
Found during a failed experiment debugging something on Android.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-24 12:57:26 -07:00
Brad Fitzpatrick
7b8ed1fc09
net/netns: add Android implementation, allowing registration of JNI hook
...
Updates #2102
Updates #1809
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-24 12:50:47 -07:00
Brad Fitzpatrick
b92e2ebd24
wgengine/netstack: add Impl.DialContextUDP
...
Unused so far, but eventually we'll want this for SOCKS5 UDP binds (we
currently only do TCP with SOCKS5), and also for #2102 for forwarding
MagicDNS upstream to Tailscale IPs over netstack.
Updates #2102
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-23 22:12:17 -07:00
Brad Fitzpatrick
3d777c13b0
net/socks5: fix a typo
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-23 22:12:17 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
45e64f2e1a
net/dns{,/resolver}: refactor DNS forwarder, send out of right link on macOS/iOS
...
Fixes #2224
Fixes tailscale/corp#2045
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-23 16:04:10 -07:00
Brad Fitzpatrick
733d52827b
net/dns/resolver: skip test on macOS
...
Fixes #2229
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-23 08:13:55 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
bb363095a5
tailcfg: add Debug.RandomizeClientPort
...
Not yet used.
Updates #2187
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-22 12:07:53 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
38be964c2b
go.mod: update netstack
...
Fixes a atomic alignment crash on 32-bit machines.
Fixes #2129
Fixes tailscale/tailscale-synology#66 (same)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-22 10:34:14 -07:00
Brad Fitzpatrick
a0c632f6b5
tstest/integration: fix a race
...
Noticed on a CI failure.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-22 10:24:13 -07:00
Brad Fitzpatrick
2f4817fe20
tstest/integration: fix race flake
...
Fixes #2172
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-18 10:10:23 -07:00
Brad Fitzpatrick
1ae35b6c59
net/{interfaces,netcheck}: rename some fields, funcs
...
Split out of Denton's #2164 , to make that diff smaller to review.
This change has no behavior changes.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-17 17:50:13 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
03311bb0d6
hostinfo: add hostinfo package, move stuff out of controlclient
...
And make it cheaper, so other parts of the code can check the
environment.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-17 14:27:01 -07:00
Brad Fitzpatrick
b461ba9554
control/controlclient: fix typo/braino in error message
...
Thanks to @normanr for noticing.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-16 15:55:06 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
0debb99f08
tailcfg: add DNSConfig.ExtraRecords
...
Updates #1748
Updates #1235
Updates #2055
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-16 15:52:21 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
cd282ec00f
tailcfg: add DNSConfig.CertDomains
...
Updates #1235
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-15 14:05:46 -07:00
Brad Fitzpatrick
082cc1b0a7
tstest/integration: reenable TestAddPingRequest
...
Failure understood now; see:
https://github.com/tailscale/tailscale/pull/2088#issuecomment-859896598
As of 333e9e75d4 , PingRequest is
now safe for the server to send multiple times, without fear
of the client handling it multiple times.
Fixes #2079
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-15 12:41:08 -07:00
Brad Fitzpatrick
333e9e75d4
tailcfg, control/controlclient: clarify more, enforce PingRequest.URL is unique
...
Updates #2079
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-15 12:28:34 -07:00
Brad Fitzpatrick
cc6ab0a70f
ipn/ipnlocal: retry peerapi listen on Android, like we do on Windows
...
Updates #1960
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-14 08:59:09 -07:00
Brad Fitzpatrick
80a4052593
cmd/tailscale, wgengine, tailcfg: don't assume LastSeen is present [mapver 20]
...
Updates #2107
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-06-11 08:41:16 -07:00