]> git.ipfire.org Git - thirdparty/wireguard-tools.git/commit
wg-quick: openbsd: set DNS with resolvd(8)
authorMatt Dunwoodie <ncon@noconroy.net>
Tue, 7 Sep 2021 11:48:53 +0000 (21:48 +1000)
committerJason A. Donenfeld <Jason@zx2c4.com>
Mon, 13 Sep 2021 22:40:51 +0000 (00:40 +0200)
commit84ac6add7eaa08a95081933d016eebcf132499d0
tree1c4cc7edb9d87759e5d996a9eee35573052d667a
parentaf260d529eaa4387632c3d8dc8b02fd11c54f6bb
wg-quick: openbsd: set DNS with resolvd(8)

OpenBSD has introduced a new daemon named resolvd(8) to manage
resolv.conf. This creates problems with the old "horrible way" of
completely replacing resolv.conf. Resolvd will attempt to merge manual
changes with DNS servers discovered through dhcpleased(8) and slaacd(8).
Unfortunately, resolvd puts any manual modifications at the end of
resolv.conf, meaning that the wg-quick name servers will be queried
last.

The process for handling multiple name servers (at least with libc) is
to try a name server, and if the query times out, try the next, until
out of name servers, then repeat trying all name servers until a maximum
number of retries are performed. The name servers are queried in the
order listed in resolv.conf and the timeout is 5 seconds.

With this patch, we ensure the wg-quick name server is first in
resolv.conf (as route creates the name server with "static" priority),
but cannot ensure it is exclusive. Therfore, it may be possible that
queries are leaked to other name servers if the wg-quick name server
doesn't respond within 5 seconds.

We have another problem however, and that is if resolvd detects unwind
is running, it will set 127.0.0.1 as the only name server in
resolv.conf. unwind does not have deterministic name server selection in
the default configuration.  This means, all a user would need to do to
inadvertently cause persistent query leaks would be to run `rcctl enable
unwind`.

There are warnings added when these situations may occur.

The next step is to add an exclusive flag and search to route and
resolvd.

Reported-by: Matthieu Herrb <matthieu@herrb.eu>
Signed-off-by: Matt Dunwoodie <ncon@noconroy.net>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
src/wg-quick/openbsd.bash