c185e6b4b0
stunner: support IPv6, add latency info to callbacks, use unique TxIDs per retry
...
And some more docs.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-27 09:23:51 -08:00
44670d0da9
wgengine: revert wgdev.Close on Close from last commit
...
Causes as-yet-unknown problems in some tests.
Signed-off-by: David Crawshaw <crawshaw@tailscale.com >
2020-02-25 17:00:37 -05:00
9390a3ef55
wgengine: properly clean up freebsd routes and interfaces on close
...
Signed-off-by: wardn <wardn@users.noreply.github.com >
2020-02-25 16:40:10 -05:00
7a3be96199
wgengine: add pinger to generate initial spray packets
...
For 3 seconds after a successful handshake, wgengine will send a
ping packet every 300ms to its peer. This ensures the spray logic
in magicsock has something to spray.
Signed-off-by: David Crawshaw <crawshaw@tailscale.com >
2020-02-25 15:09:08 -05:00
a6ad3c46e2
magicsock: spray some normal packets after a handshake
...
In particular, this is designed to catch the case where a
HandshakeInitiation packet is sent out but the intermediate NATs
have not been primed, so the packet passes over DERP.
In that case, the HandshakeResponse also comes back over DERP,
and the connection proceeds via DERP without ever trying to punch
through the NAT.
With this change, the HandshakeResponse (which was sprayed out
and so primed one NAT) triggers an UpdateDst, which triggers
the extra spray logic.
(For this to work, there has to be an initial supply of packets
to send on to a peer for the three seconds following a handshake.
The source of these packets is left as a future exercise.)
Signed-off-by: David Crawshaw <crawshaw@tailscale.com >
2020-02-24 17:29:35 -05:00
8696b17b5f
wgengine/magicsock: turn off DERP log spamminess by default
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-24 10:24:12 -08:00
7a3b91390b
wgengine/magicsock: fix crash in Send when Endpoint isn't an AddrSet
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-24 08:47:20 -08:00
868cfae84f
wgengine, magicsock: adjust for wireguard-go conn/device package split
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com >
2020-02-24 07:30:14 -05:00
c51b8c206d
wgengine: resolv.conf spelling corrections
...
Signed-off-by: wardn <wardn@users.noreply.github.com >
2020-02-22 06:44:56 -08:00
cc7b9b0dff
control/controlclient: fix priority of DERP server, add comment
2020-02-21 14:47:05 -08:00
c02f4b5a1f
control/controlclient: add temporary mechanism to force derp on
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-21 14:09:24 -08:00
525bf1f3d2
wgengine/magicsock: remember fixed port number preference
...
So LinkChange events rebind to the same port when possible.
2020-02-21 13:51:18 -08:00
379a3125fd
derp, wgengine/magicsock: support more than just packets from Client.Recv
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-20 22:08:13 -08:00
4ebc0fa70f
wgengine: incremental update of peers on network map change
...
This is the first, and easier, part of incremental wireguard-go
reconfiguration. It means that a new node appearing on the
network does not cause all existing nodes to re-handshake with
the other nodes they are talking to.
(This code has been running on hello.ipn.dev for a few weeks and
peers have successfully reconnected to it through many network
map updates.)
Signed-off-by: David Crawshaw <crawshaw@tailscale.com >
2020-02-20 13:48:34 -05:00
d298d5b1f8
wgengine/magicsock: support multiple derp servers, and not just for handshakes
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-20 08:10:12 -08:00
a9bff99a9b
wgengine: add OpenBSD router DNS update handling
...
Also removes validated TODO comments.
Signed-off-by: Martin Baillie <martin@baillie.email >
2020-02-20 08:03:07 -08:00
45d687e213
wgengine: fix build on linux/freebsd/openbsd/windows
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com >
2020-02-19 11:58:59 -05:00
d0f697ee07
wgengine: update for wgcfg changes
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com >
2020-02-19 11:44:37 -05:00
fd1aa4f7f6
wgengine/magicsock: add a reSTUN method
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-18 10:55:36 -08:00
e06ca40650
wgengine, magicsock, derp: misc cleanups, docs
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-18 08:58:00 -08:00
5d79530caa
wgengine: create freebsd-specific implementation
...
Signed-off-by: wardn <wardn@users.noreply.github.com >
2020-02-17 19:16:08 -08:00
259406e797
derp: move away from [32]byte key types
...
And some minor cleanup in the process.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-17 14:18:09 -08:00
4d09316f9a
wgengine/monitor: use RTMGRP_* consts from x/sys/unix
...
Bump golang.org/x/sys/unix to get the RTMGRP_* consts and use them.
Signed-off-by: Tobias Klauser <tklauser@distanz.ch >
2020-02-17 14:15:08 -08:00
997678f540
wgengine/monitor: make Close not block forever on Linux
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-17 11:39:33 -08:00
7f5e3febe5
wgengine: move link monitor to be owned by the engine, not the router
...
And make the monitor package portable with no-op implementations on
unsupported operating systems.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-17 09:53:17 -08:00
79295b1138
wgengine: simplify, change some signatures
...
* make RouterGen return an error, not take both tunname and tundev
* also remove RouteGen taking a wireguard/device.Device; currently unused
* remove derp parameter (it'll work differently)
* unexport NewUserspaceRouter in per-OS impls, add documented wrapper
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-17 08:04:31 -08:00
2896be60db
Move "logger" package to under types, now that we have it.
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-14 20:23:05 -08:00
587c3fcac4
control/controlclient, wgengine/magicsock: misc cleanups
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-14 09:50:08 -08:00
58ce50389e
wgengine: build for freebsd
...
Signed-off-by: wardn <wardn@users.noreply.github.com >
2020-02-14 08:40:04 -08:00
2cafbd74c7
monitor: refactor for architecture-specific connection implementations
...
Signed-off-by: wardn <wardn@users.noreply.github.com >
2020-02-13 09:46:17 -08:00
c773abde77
wgengine: fix nil pointer deref crash from earlier change
...
Fixes #45
2020-02-13 08:59:31 -08:00
745c8c92b1
wgengine: fix windows build for winipcfg-go
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-12 22:05:13 -08:00
36f5433476
wgengine: fix the build on darwin, windows, openbsd.
...
7e5e3277
changed the Router interface definition, but forgot to
fix up these platform files.
Signed-off-by: David Anderson <dave@natulte.net >
2020-02-12 16:16:05 -08:00
5c2deb66be
wgengine: remove MTU TODO.
...
The MTU is currently set when creating the tun device,
elsewhere in the code. Maybe someday we'll want some kind
of per-platform MTU configuration here, but not in the
short-medium term.
Signed-off-by: David Anderson <dave@natulte.net >
2020-02-12 15:59:13 -08:00
afa83358f7
wgenging: use logger.Logf type in openbsd router.
...
Signed-off-by: David Anderson <dave@natulte.net >
2020-02-12 15:58:49 -08:00
15f8c8dde4
wgengine: add initial rough OpenBSD implementation
...
Signed-off-by: Martin Baillie <martin@baillie.email >
2020-02-12 15:57:49 -08:00
7e5e32775a
wgengine: flesh out some docs, minor cleanups
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-12 13:37:45 -08:00
819daf10e2
wgengine: flesh out some docs
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-12 13:37:45 -08:00
490e586eac
wgengine: add required NewFakeRouter parameter
...
Signed-off-by: wardn <wardn@users.noreply.github.com >
2020-02-12 13:09:33 -08:00
a59dc5f155
Use logger.Logf consistently. It was used in most places.
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-02-11 09:38:32 -08:00
2f9cdd0aac
wgengine: fix error string.
...
Signed-off-by: David Anderson <dave@natulte.net >
2020-02-11 00:01:58 -08:00
43becc4334
wgengine/packet: fix minor lint errors.
...
Signed-off-by: David Anderson <dave@natulte.net >
2020-02-11 00:01:14 -08:00
a07906d1d8
wgengine: make SetRoutesFunc less appealing to use.
...
It exists as a way to glue the mac-specific xcode logic with the OSS
logic, and shouldn't be used by anything but the xcode glue.
2020-02-10 21:40:00 -08:00
87334fb332
wgengine, controlclient: fewer pointers in wgcfg key types
...
Signed-off-by: David Crawshaw <david@zentus.com >
2020-02-10 22:09:59 -05:00
a8d8b8719a
Move Linux client & common packages into a public repo.
2020-02-09 09:32:57 -08:00