David Anderson
5455c64f1d
wgengine/magicsock: add a test for two facing endpoint-independent NATs.
...
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-07-27 14:09:54 -07:00
David Anderson
f794493b4f
wgengine/magicsock: explicitly check path discovery, add a firewall test.
...
The test proves that active discovery can traverse two facing firewalls.
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-07-27 14:09:54 -07:00
David Anderson
f582eeabd1
wgengine/magicsock: add a test for active path discovery.
...
Uses natlab only, because the point of this active discovery test is going to be
that it should get through a lot of obstacles.
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-07-27 14:09:54 -07:00
David Anderson
a2b4ad839b
net/netcheck: lower the hairpin check timeout to 100ms.
...
This single check is the long pole for netcheck, and significantly slows down magicsock
tests.
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-07-27 14:09:54 -07:00
David Anderson
25288567ec
net/netcheck: centralize all clock values in one place.
...
This makes it easier to see how long a netcheck might take, and what
the slow bits might be.
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-07-27 14:09:54 -07:00
David Anderson
5a370d545a
tstest/natlab: drop packets that can't be routed in a LAN.
...
LANs are authoritative for their prefixes, so we should not bounce
packets back and forth to the default gateway in that case.
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-07-27 14:09:54 -07:00
Brad Fitzpatrick
37903a9056
wgengine/magicsock: fix occasional deadlock on Conn.Close on c.derpStarted
...
The deadlock was:
* Conn.Close was called, which acquired c.mu
* Then this goroutine scheduled:
if firstDerp {
startGate = c.derpStarted
go func() {
dc.Connect(ctx)
close(c.derpStarted)
}()
}
* The getRegion hook for that derphttp.Client then ran, which also
tries to acquire c.mu.
This change makes that hook first see if we're already in a closing
state and then it can pretend that region doesn't exist.
2020-07-27 12:27:10 -07:00
Elias Naur
bca9fe35ba
logtail: return correct write size from logger.Write
...
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-07-27 11:06:41 -07:00
Brad Fitzpatrick
38b0c3eea2
version: new week, new version
2020-07-27 10:20:58 -07:00
Brad Fitzpatrick
43e2efe441
go mod tidy
2020-07-27 10:20:30 -07:00
Brad Fitzpatrick
fe68841dc7
wgengine/magicsock: log better with less spam on transition to stopped state
...
Required a minor test update too, which now needs a private key to get far
enough to test the thing being tested.
2020-07-27 10:19:17 -07:00
Brad Fitzpatrick
69f3ceeb7c
derp/derphttp: don't return all nil from dialRegion when STUNOnly nodes
2020-07-27 10:10:10 -07:00
David Crawshaw
990e2f1ae9
tailcfg: generate some Clone methods
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-07-27 11:08:09 +10:00
David Crawshaw
961b9c8abf
cmd/cloner: tool to generate Clone methods
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-07-27 11:08:09 +10:00
Brad Fitzpatrick
e298327ba8
wgengine/magicsock: remove overkill, slow reflect.DeepEqual of NetworkMap
...
No need to allocate or compare all the fields we don't care about.
2020-07-25 19:37:08 -07:00
Brad Fitzpatrick
be3ca5cbfd
control/controlclient: remove unused, slow, often-not-what-you-want NetworkMap.Equal
2020-07-25 19:36:39 -07:00
Brad Fitzpatrick
4970e771ab
wgengine: add debug knob to disable the watchdog during debugging
...
It launches goroutines and interferes with panic-based debugging,
obscuring stacks.
2020-07-25 12:59:53 -07:00
David Anderson
3669296cef
wgengine/magicsock: refactor twoDevicePing to make stack construction cleaner.
...
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-07-24 15:12:15 -07:00
Elias Naur
0a42b0a726
ipn: add OSVersion, DeviceModel fields to Prefs and propagate to Hostinfos
...
Needed for Android.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-07-24 14:12:29 -07:00
Brad Fitzpatrick
16a9cfe2f4
wgengine: configure wireguard peers lazily, as needed
...
wireguard-go uses 3 goroutines per peer (with reasonably large stacks
& buffers).
Rather than tell wireguard-go about all our peers, only tell it about
peers we're actively communicating with. That means we need hooks into
magicsock's packet receiving path and tstun's packet sending path to
lazily create a wireguard peer on demand from the network map.
This frees up lots of memory for iOS (where we have almost nothing
left for larger domains with many users).
We should ideally do this in wireguard-go itself one day, but that'd
be a pretty big change.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-07-24 12:50:15 -07:00
Brad Fitzpatrick
5066b824a6
wgengine/magicsock: don't log about disco ping timeouts if we have a working address
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-07-24 11:21:50 -07:00
Brad Fitzpatrick
648268192b
go.mod: bump wireguard-go
2020-07-24 08:54:17 -07:00
Brad Fitzpatrick
a89d610a3d
wgengine/tstun: move sync.Pool to package global
...
sync.Pools should almost always be packate globals, even though in this
case we only have exactly 1 TUN device anyway, so it matters less.
Still, it's unusual to see a Pool that's not a package global, so move it.
2020-07-24 08:29:36 -07:00
Dmytro Shynkevych
318751c486
cmd/tailscaled: always flush logs properly
...
Signed-off-by: Dmytro Shynkevych <dmytro@tailscale.com>
2020-07-23 19:08:17 -04:00
Dmytro Shynkevych
4957360ecd
cmd/tailscale: rename use-dns to accept-dns
...
Signed-off-by: Dmytro Shynkevych <dmytro@tailscale.com>
2020-07-23 16:09:33 -04:00
Dmytro Shynkevych
dd4e06f383
cmd/tailscale: add corpDNS flag
...
Signed-off-by: Dmytro Shynkevych <dmytro@tailscale.com>
2020-07-23 15:28:53 -04:00
Dmytro Shynkevych
c53ab3111d
wgengine/router: support legacy resolvconf
...
Signed-off-by: Dmytro Shynkevych <dmytro@tailscale.com>
2020-07-23 15:01:46 -04:00
Brad Fitzpatrick
05a79d79ae
control/controlclient: rewrite, test NetworkMap.ConciseDiffFrom
...
It stood out a lot in hello.ipn.dev's profiles for generating a lot of
garbage (and thus GC CPU).
2020-07-23 10:50:06 -07:00
Brad Fitzpatrick
48fc9026e9
tailcfg: optimize Node.Equal allocs a bit
...
Noticed while working on something else.
2020-07-23 10:47:49 -07:00
Brad Fitzpatrick
3b0514ef6d
control/controlclient: rename uflags, give it a type, remove dead code
2020-07-23 08:38:14 -07:00
Brad Fitzpatrick
32ecdea157
control/controlclient: generate wireguard config w/o WgQuick text indirection
2020-07-23 08:30:09 -07:00
Brad Fitzpatrick
2545575dd5
cmd/tailscale: default to not reporting daemon version
...
That's what I meant to do when I added "tailscale version" but
apparently I didn't.
2020-07-22 14:05:51 -07:00
David Anderson
189d86cce5
wgengine/router: don't use 88 or 8888 as table/rule numbers.
...
We originally picked those numbers somewhat at random, but with the idea
that 8 is a traditionally lucky number in Chinese culture. Unfortunately,
"88" is also neo-nazi shorthand language.
Use 52 instead, because those are the digits above the letters
"TS" (tailscale) on a qwerty keyboard, so we're unlikely to collide with
other users. 5, 2 and 52 are also pleasantly culturally meaningless.
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-07-22 11:59:54 -07:00
Dmytro Shynkevych
218de6d530
ipn: load hostname in Start.
...
This prevents hostname being forced to os.Hostname despite override
when control is contacted for the first time after starting tailscaled.
Signed-off-by: Dmytro Shynkevych <dmytro@tailscale.com>
2020-07-22 13:37:41 -04:00
Brad Fitzpatrick
de11f90d9d
ipn: remove unused parameter to func LoadPrefs, fix godoc subject
2020-07-22 10:35:35 -07:00
David Anderson
972a42cb33
wgengine/router: fix router_test to match the new marks.
...
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-07-22 01:31:49 +00:00
David Anderson
d60917c0f1
wgengine/router: switch packet marks to avoid conflict with Weave Net.
...
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-07-22 01:24:46 +00:00
Brad Fitzpatrick
f26b409bd5
tempfork: add lite fork of net/http/pprof w/o html/template or reflect
2020-07-21 16:17:03 -07:00
Brad Fitzpatrick
6095a9b423
cmd/tailscale: add "version" subcommand
...
Fixes #448
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-07-21 12:23:33 -07:00
Brad Fitzpatrick
f745e1c058
version: new week, new version
2020-07-20 20:55:47 -07:00
Brad Fitzpatrick
ca2428ecaf
tailcfg: add Hostinfo.OSVersion, DeviceModel
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-07-20 16:10:06 -07:00
Brad Fitzpatrick
d8e67ca2ab
safesocket: gofmt
...
gofmt differences between versions :(
2020-07-20 14:40:19 -07:00
Brad Fitzpatrick
f562c35c0d
safesocket: support connecting to Mac TCP server from within App Sandbox
2020-07-20 14:23:50 -07:00
Brad Fitzpatrick
f267a7396f
metrics: add LabelMap.GetFloat
2020-07-19 12:31:12 -07:00
Brad Fitzpatrick
c06d2a8513
wgengine/magicsock: fix typo in comment
2020-07-18 13:57:26 -07:00
Brad Fitzpatrick
bf195cd3d8
wgengine/magicsock: reduce log verbosity of discovery messages
...
Don't log heartbeat pings & pongs. Track the reason for pings and then
only log the ping/pong traffic if it was for initial path discovery.
2020-07-18 13:54:00 -07:00
Brad Fitzpatrick
7cf50f6c84
go.sum: update
2020-07-18 13:43:11 -07:00
Dmytro Shynkevych
3efc29d39d
go.mod: bump netaddr.
...
Closes #567 .
Signed-off-by: Dmytro Shynkevych <dmytro@tailscale.com>
2020-07-18 04:28:03 -04:00
Dmytro Shynkevych
a3e7252ce6
wgengine/router: use better NetworkManager API
...
Signed-off-by: Dmytro Shynkevych <dmytro@tailscale.com>
2020-07-18 04:03:45 -04:00
Eduardo Kienetz
5df6be9d38
Use LittleEndian for correct byte order on DNS IPs
...
Nameserver IP 10.11.12.13 would otherwise get written to resolv.conf as 13.12.11.10, as was happening on my client.
Signed-off-by: Eduardo Kienetz <eduardo@kienetz.com>
2020-07-17 23:34:28 -07:00