fe3b1ab747
net/dns: refactor dbus connection setup in resolved manager.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-13 17:19:00 -07:00
854d5d36a1
net/dns: return error from NewOSManager, use it to initialize NM.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-12 15:51:37 -07:00
9aa33b43e6
net/dns: support split and unsplit DNS in NetworkManager.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-12 14:34:08 -07:00
87eb8384f5
net/dns: fix up NetworkManager configurator a bit.
...
Clear LLMNR and mdns flags, update reasoning for our settings,
and set our override priority harder than before when we want
to be primary resolver.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-11 23:19:50 -07:00
3d81e6260b
net/dns: set resolved DefaultRoute setting according to split-dns mode.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-11 20:53:28 -07:00
cca230cc23
net/dns: fix staticcheck errors.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-11 20:53:28 -07:00
4b47393e0c
net/dns: pacify staticcheck for now
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-04-11 20:43:15 -07:00
a7340c2015
net/dns: support split DNS in systemd-resolved.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-11 18:14:23 -07:00
84430cdfa1
net/dns: improve NetworkManager detection, using more DBus.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-11 15:22:06 -07:00
9a48bac8ad
net/dns: rename resolvconf.go to debian_resolvconf.go.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-10 23:31:14 -07:00
9831f1b183
net/dns: also include 'tail' and 'base' files when fixing up resolv.conf.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-10 23:01:11 -07:00
e43afe9140
net/dns: implement prior config reading for debian resolvconf.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-10 22:37:13 -07:00
143e5dd087
net/dns: rename script variable.
...
Debian resolvconf is not legacy, it's alive and well,
just historically before the other implementations.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-10 21:28:27 -07:00
55b39fa945
net/dns: add documentation to openresolv's config fetch.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-10 20:21:05 -07:00
61b361bac0
net/dns: teach the openresolv manager to read DNS config.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-10 19:37:11 -07:00
58760f7b82
net/dns: split resolvconfManager into a debian and an openresolv manager.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-10 18:55:05 -07:00
5480189313
net/dns: implement a DNS override workaround for legacy resolvconf.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-10 17:58:13 -07:00
1a371b93be
util/dnsname: add FQDN type, use throughout codebase.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-10 17:58:13 -07:00
e638a4d86b
net/dns: make directManager support split DNS, and work in sandboxes.
...
Fixes #1495 , #683 .
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-09 02:52:21 -07:00
2685260ba1
net/dns: add temporary fallback to quad-9 resolver for split-DNS testing.
...
This allows split-DNS configurations to not break clients on OSes that
haven't yet been ported to understand split DNS, by falling back to quad-9
as a global resolver when handed an "impossible to implement"
split-DNS config.
Part of #953 . Needs to be removed before shipping 1.8.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-08 23:26:22 -07:00
b9e194c14b
net/dns: add missing FQDN qualification.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-08 23:07:16 -07:00
b74a8994ca
net/dns: make FQDN dot style consistent in more places.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-08 22:03:32 -07:00
6def647514
net/dns/resolver: don't avoid tailscale routes for DNS forwarding.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-08 12:20:42 -07:00
4a64d2a603
net/dns: some post-review cleanups.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-07 15:40:31 -07:00
720c1ad0f0
net/dns: insert OS base config when emulating split DNS.
...
Part of #953 .
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-07 15:40:31 -07:00
e560be6443
net/dns: sort matchDomains to avoid test flake.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-07 15:40:31 -07:00
68f76e9aa1
net/dns: add GetBaseConfig to OSConfigurator interface.
...
Part of #953 , required to make split DNS work on more basic
platforms.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-07 15:40:31 -07:00
fe9cd61d71
net/dns: add tests for DNS config generation.
...
Part of #953 .
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-07 15:40:31 -07:00
0ba6d03768
net/dns/resolver: add a test helper to get at the resolver config.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-07 15:40:31 -07:00
da4cc8bbb4
net/dns: handle all possible translations of high-level DNS config.
...
With this change, all OSes can sort-of do split DNS, except that the
default upstream is hardcoded to 8.8.8.8 pending further plumbing.
Additionally, Windows 8-10 can do split DNS fully correctly, without
the 8.8.8.8 hack.
Part of #953 .
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-07 15:40:31 -07:00
e0e677a8f6
net/dns: split out search domains and match domains in OSConfig.
...
It seems that all the setups that support split DNS understand
this distinction, and it's an important one when translating
high-level configuration.
Part of #953 .
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-06 15:27:09 -07:00
a8dcda9c9a
net/dns: start of compat hacks for Windows 7.
...
Correctly reports that Win7 cannot do split DNS, and has a helper to
discover the "base" resolvers for the system.
Part of #953
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-06 15:27:09 -07:00
3e915ac783
net/dns: implement OS-level split DNS for Windows.
...
Part of #953 .
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-05 22:53:10 -07:00
c16a926bf2
net/dns: set OSConfig.Primary.
...
OS implementations are going to support split DNS soon.
Until they're all in place, hardcode Primary=true to get
the old behavior.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-05 22:53:10 -07:00
de6dc4c510
net/dns: add a Primary field to OSConfig.
...
Currently ignored.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-05 13:05:47 -07:00
b2a597b288
net/dns: rename Set to SetDNS in OSConfigurator.
...
wgengine/router.CallbackRouter needs to support both the Router
and OSConfigurator interfaces, so the setters can't both be called
Set.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-05 10:55:35 -07:00
7d84ee6c98
net/dns: unify the OS manager and internal resolver.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-05 10:55:35 -07:00
1bf91c8123
net/dns/resolver: remove unused err return value.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-05 10:55:35 -07:00
6a206fd0fb
net/dns: rename impl to os.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-05 10:55:35 -07:00
c4530971db
net/dns/resolver: remove leftover debug print.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-05 10:55:35 -07:00
4c61ebacf4
wgengine: move DNS configuration out of wgengine/router.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-05 10:55:35 -07:00
748670f1e9
net/dns: fix typo in docstring.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-02 18:44:02 -07:00
a39d2403bc
net/dns: disable NetworkManager and resolved configurators temporarily.
...
They need some rework to do the right thing, in the meantime the direct
and resolvconf managers will work out.
The resolved implementation was never selected due to control-side settings.
The networkmanager implementation mostly doesn't get selected due to
unforeseen interactions with `resolvconf` on many platforms.
Both implementations also need rework to support the various routing modes
they're capable of.
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-02 02:41:33 -07:00
befd8e4e68
net/dns: replace managerImpl with OSConfigurator in code.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-02 02:34:40 -07:00
077d4dc8c7
net/dns: add an OSConfigurator interface.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-02 01:49:17 -07:00
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
2edb57dbf1
net/dns: add new Config that captures tailscale+OS DNS config.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-02 00:59:44 -07:00
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
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
0ca04f1e01
net/dns: put noop.go back, limit with build tags for staticcheck.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-04-01 23:14:13 -07:00