David Anderson and Dave Anderson
6ad44f9fdf
wgengine: take in dns.Config, split out to resolver.Config and dns.OSConfig.
...
Stepping stone towards having the DNS package handle the config splitting.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-02 00:59:44 -07:00
David Anderson and Dave Anderson
8af9d770cf
net/dns: rename Config to OSConfig.
...
Making way for a new higher level config struct.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-02 00:59:44 -07:00
David Anderson
fcfc0d3a08
net/dns: remove ManagerConfig, pass relevant args directly.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-01 23:26:52 -07:00
David Anderson
f77ba75d6c
wgengine/router: move DNS cleanup into the DNS package.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-01 22:35:34 -07:00
David Anderson
15875ccc63
wgengine/router: don't store unused tunname on windows.
2021-04-01 22:28:24 -07:00
Josh Bleecher Snyder and Josh Bleecher Snyder
34d4943357
all: gofmt -s
...
The code is not obviously better or worse, but this makes the little warning
triangle in my editor go away, and the distraction removal is worth it.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2021-04-01 11:06:14 -07:00
Josh Bleecher Snyder and Josh Bleecher Snyder
1df162b05b
wgengine/magicsock: adapt CreateEndpoint signature to match wireguard-go
...
Part of a temporary change to make merging wireguard-go easier.
See https://github.com/tailscale/wireguard-go/pull/45 .
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2021-04-01 09:55:45 -07:00
Brad Fitzpatrick
e64383a80e
wgengine/router: document some fields a bit more
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-04-01 07:50:50 -07:00
Denton Gentry and Denton Gentry
35ab4020c7
wgengine/monitor: Linux fall back to polling
...
Google Cloud Run does not implement NETLINK_ROUTE RTMGRP.
If initialization of the netlink socket or group membership
fails, fall back to a polling implementation.
Signed-off-by: Denton Gentry <dgentry@tailscale.com >
2021-04-01 07:29:11 -07:00
David Anderson
90f82b6946
net/dns/resolver: add live reconfig, plumb through to ipnlocal.
...
The resolver still only supports a single upstream config, and
ipn/wgengine still have to split up the DNS config, but this moves
closer to unifying the DNS configs.
As a handy side-effect of the refactor, IPv6 MagicDNS records exist
now.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-01 01:44:03 -07:00
David Anderson
f185d62dc8
net/dns/resolver: unexport Packet, only use it internally.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-31 23:12:31 -07:00
David Anderson
5fb9e00ecf
net/dns/resolver: remove Start method, fully spin up in New instead.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-31 23:12:31 -07:00
David Anderson
075fb93e69
net/dns/resolver: remove the Config struct.
...
In preparation for reintroducing a runtime reconfig Config struct.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-31 23:12:31 -07:00
David Anderson
bc81dd4690
net/dns/resolver: rename ResolverConfig to just Config.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-31 23:12:31 -07:00
David Anderson
d99f5b1596
net/dns/resolver: factor the resolver out into a sub-package.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-31 23:12:30 -07:00
Naman Sood and GitHub
31c7745631
wgengine/netstack: stop re-adding IPs registered by active TCP connections ( #1629 )
...
Signed-off-by: Naman Sood <mail@nsood.in >
2021-03-31 15:32:33 -04:00
Brad Fitzpatrick
7f03c0f8fe
wgengine/wgcfg/nmcfg: reduce some logging when a /0 route skipped
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-31 09:51:55 -07:00
Josh Bleecher Snyder and Josh Bleecher Snyder
7b907615d5
wgengine/wgcfg/nmcfg: remove dead code
...
The call to appendEndpoint updates cpeer.Endpoints.
Then it is overwritten in the next line.
The only errors from appendEndpoint occur when
the host/port pair is malformed, but that cannot happen.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2021-03-31 09:09:19 -07:00
Josh Bleecher Snyder and Josh Bleecher Snyder
36a85e1760
wgengine/magicsock: don't call t.Fatal in magicStack.IP
...
It can end up executing an a new goroutine,
at which point instead of immediately stopping test execution, it hangs.
Since this is unexpected anyway, panic instead.
As a bonus, it makes call sites nicer and removes a kludge comment.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2021-03-30 11:48:13 -07:00
Brad Fitzpatrick
4c83bbf850
wgengine: add IsNetstack func and test
...
So we have a documented & tested way to check whether we're in
netstack mode. To be used by future commits.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-30 09:53:12 -07:00
Brad Fitzpatrick
91bc723817
wgengine: add temp workaround for netstack WhoIs registration race
...
Updates #1616
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-30 09:50:54 -07:00
Brad Fitzpatrick
41e4e02e57
net/{packet,tstun}: send peerapi port in TSMP pongs
...
For discovery when an explicit hostname/IP is known. We'll still
also send it via control for finding peers by a list.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-29 15:18:23 -07:00
Naman Sood and GitHub
662fbd4a09
wgengine/netstack: Allow userspace networking mode to expose subnets ( #1588 )
...
wgengine/netstack: Allow userspace networking mode to expose subnets
Updates #504
Updates #707
Signed-off-by: Naman Sood <mail@nsood.in >
2021-03-29 14:33:05 -04:00
Brad Fitzpatrick and Brad Fitzpatrick
a4c679e646
wgengine/monitor: on wall time jump, synthesize network change event
...
... to force rebinds of TCP connections
Fixes #1555
Updates tailscale/felicity#4
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-28 21:56:50 -07:00
David Anderson
07bf4eb685
wgengine: rename Fake to RespondToPing.
...
"Fake" doesn't mean a lot any more, given that many components
of the engine can be faked out, including in valid production
configurations like userspace-networking.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-28 21:45:02 -07:00
David Anderson
0fb738760f
wgengine: make Tun optional again, default to fake.
...
This makes setup more explicit in prod codepaths, without
requiring a bunch of arguments or helpers for tests and
userspace mode.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-28 21:45:02 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
e18c3a7d84
wgengine: optimize isLocalAddr a bit
...
On macOS/iOS, this removes a map lookup per outgoing packet.
Noticed it while reading code, not from profiles, but can't hurt.
BenchmarkGenLocalAddrFunc
BenchmarkGenLocalAddrFunc/map1
BenchmarkGenLocalAddrFunc/map1-4 16184868 69.78 ns/op
BenchmarkGenLocalAddrFunc/map2
BenchmarkGenLocalAddrFunc/map2-4 16878140 70.73 ns/op
BenchmarkGenLocalAddrFunc/or1
BenchmarkGenLocalAddrFunc/or1-4 623055721 1.950 ns/op
BenchmarkGenLocalAddrFunc/or2
BenchmarkGenLocalAddrFunc/or2-4 472493098 2.589 ns/op
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-28 21:23:25 -07:00
David Anderson
93a4aa697c
wgengine: default Router to a no-op router.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-28 18:59:48 -07:00
David Anderson
440effb21a
wgengine: remove Config.TUN argument.
2021-03-28 18:45:17 -07:00
Josh Bleecher Snyder and Josh Bleecher Snyder
4954fbfda6
wgengine: extend TestWatchdog timeout on macOS
...
This works around the close syscall being slow.
We can revert this if we find a fix or if Apple makes close fast again.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2021-03-27 09:27:11 -07:00
David Anderson
2df8adef9d
wgengine: make the tun.Device required at construction.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-27 00:33:09 -07:00
David Anderson
016de16b2e
net/tstun: rename TUN to Wrapper.
...
The tstun packagen contains both constructors for generic tun
Devices, and a wrapper that provides additional functionality.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-26 23:15:22 -07:00
David Anderson
82ab7972f4
net/tstun: rename NewFakeTUN to NewFake.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-26 22:46:47 -07:00
David Anderson and Dave Anderson
588b70f468
net/tstun: merge in wgengine/tstun.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-26 22:31:54 -07:00
David Anderson and Dave Anderson
2b4bfeda1a
wgengine: pass in an explicit router.Router, rather than a generator.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-26 22:01:55 -07:00
David Anderson and Dave Anderson
44d9929208
wgengine: remove Config.TUNName, require caller to create device.
...
Also factors out device creation and associated OS workarounds to
net/tun.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-26 21:08:11 -07:00
David Anderson and Dave Anderson
0a84aaca0a
wgengine/router: remove unused wireguard *Device argument.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-26 19:43:13 -07:00
Brad Fitzpatrick
bcf571ec97
wgengine/monitor: fix OpenBSD build
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-26 09:16:43 -07:00
Brad Fitzpatrick
7f174e84e6
net/interfaces: remove mutating methods, add EqualFiltered instead
...
Now callers (wgengine/monitor) don't need to mutate the state to remove
boring interfaces before calling State.Equal. Instead, the methods
to remove boring interfaces from the State are removed, as is
the reflect-using Equal method itself, and in their place is
a new EqualFiltered method that takes a func predicate to match
interfaces to compare.
And then the FilterInteresting predicate is added for use
with EqualFiltered to do the job that that wgengine/monitor
previously wanted.
Now wgengine/monitor can keep the full interface state around,
including the "boring" interfaces, which we'll need for peerapi on
macOS/iOS to bind to the interface index of the utunN device.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-26 09:11:48 -07:00
David Anderson
672731ac6f
many: gofmt.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-25 17:41:51 -07:00
David Anderson
6521f02ff6
Move DNS flush logic to net/dns.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-25 17:40:52 -07:00
David Anderson and Dave Anderson
9f7f2af008
wgengine/router/dns: move to net/dns.
...
Preparation for merging the APIs and whatnot.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-25 16:25:30 -07:00
David Anderson and Dave Anderson
8432999835
Move wgengine/tsdns to net/dns.
...
Straight move+fixup, no other changes. In prep for merging with
wgengine/router/dns.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-03-25 16:25:30 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
81143b6d9a
ipn/ipnlocal: start of peerapi between nodes
...
Also some necessary refactoring of the ipn/ipnstate too.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-25 16:00:35 -07:00
Josh Bleecher Snyder and Josh Bleecher Snyder
28af46fb3b
wgengine: pass logger as a separate arg to device.NewDevice
...
Adapt to minor API changes in wireguard-go.
And factor out device.DeviceOptions variables.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2021-03-24 10:39:58 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
2384c112c9
net/packet, wgengine/{filter,tstun}: add TSMP ping
...
Fixes #1467
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-24 09:50:01 -07:00
Josh Bleecher Snyder and Josh Bleecher Snyder
4b77eca2de
wgengine/magicsock: check returned error in addTestEndpoint
...
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2021-03-24 09:46:36 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
c99f260e40
wgengine/magicsock: prefer IPv6 transport if roughly equivalent latency
...
Fixes #1566
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-23 17:34:01 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
e2b3d9aa5f
all: s/Magic DNS/MagicDNS/ for consistency
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-23 14:25:28 -07:00
Brad Fitzpatrick
9643d8b34d
wgengine/magicsock: add an addrLatency type to combine an IPPort+time.Duration
...
Updates #1566 (but no behavior changes as of this change)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-03-23 10:09:10 -07:00