[Dnsmasq-discuss] Problem with dynamic upstream nameservers in dnsmasq 2.87

Geert Stappers stappers at stappers.nl
Mon Oct 10 19:58:36 UTC 2022


On Sun, Oct 09, 2022 at 06:21:53PM -0500, Christopher J. Madsen wrote:
> I have configured dnsmasq and openresolv as described in
> https://unix.stackexchange.com/a/575449/2421 so that the DNS servers
> provided by the VPN are only used for the domains on that network.
> 
> With dnsmasq 2.86 and openresolv 3.12.0 this was working great, but I was
> setting up a new computer the same way and discovered that DNS lookups broke
> when I disconnected from the VPN (causing resolvconf to remove the private
> DNS servers).  I soon realized that the new machine had gotten dnsmasq 2.87,
> which I hadn't yet upgraded to on the old machine (it had dnsmasq 2.86).
> 
> The symptom is that all DNS requests (except those for other machines on my
> LAN) are refused by dnsmasq:
> 
>     $ nslookup www.google.com
>     Server:        ::1
>     Address:    ::1#53
> 
>     ** server can't find www.google.com: REFUSED
> 
> Restarting dnsmasq fixes the problem until the next time I disconnect the
> VPN.
> 
> I installed dnsmasq 2.86 on the new machine and the problem went away.  If I
> put 2.87 back, the problem also comes back.  It seems that something in 2.87
> breaks with my setup.

Interresting ...


> BTW, openresolv 3.12.0 uses DBus to add/remove nameservers instead of
> editing the dnsmasq config files.
> 
> I turned on debug logging.  When I connect the VPN, I see this in the log:
> 
> Oct  9 16:40:15 dnsmasq[105349]: setting upstream servers from DBus
> Oct  9 16:40:15 dnsmasq[105349]: using nameserver 192.168.1.1#53
> Oct  9 16:40:15 dnsmasq[105349]: using nameserver fd...::1#53
> Oct  9 16:40:15 dnsmasq[105349]: using nameserver 10.3.10.24#53 for domain example.com
> Oct  9 16:40:15 dnsmasq[105349]: using nameserver 10.3.10.26#53 for domain example.com
> Oct  9 16:40:15 dnsmasq[105349]: using nameserver 10.3.10.25#53 for domain example.com
> Oct  9 16:40:15 dnsmasq[105349]: using nameserver 10.3.10.24#53 for domain example.org
> Oct  9 16:40:15 dnsmasq[105349]: using nameserver 10.3.10.26#53 for domain example.org
> Oct  9 16:40:15 dnsmasq[105349]: using nameserver 10.3.10.25#53 for domain example.org
> Oct  9 16:40:15 dnsmasq[105349]: using nameserver 192.168.1.1#53 for domain lan.example.net
> Oct  9 16:40:15 dnsmasq[105349]: using nameserver fd...::1#53 for domain lan.example.net
> Oct  9 16:40:15 dnsmasq[105349]: read /etc/hosts - 0 addresses
> 
> I have redacted the IPv6 address, but it is exactly the same in all log
> entries.  I have also redacted the domains.  The VPN provides example.com
> and example.org, and lan.example.net is my LAN.  This part of the log looks
> exactly the same in 2.86 and 2.87; only the timestamps change.
> 
> Here is what dnsmasq 2.86 reports when I disconnect the VPN:
> 
> Oct  9 16:40:43 dnsmasq[105349]: setting upstream servers from DBus
> Oct  9 16:40:43 dnsmasq[105349]: using nameserver 192.168.1.1#53
> Oct  9 16:40:43 dnsmasq[105349]: using nameserver fd...::1#53
> Oct  9 16:40:43 dnsmasq[105349]: using nameserver 192.168.1.1#53 for domain lan.example.net
> Oct  9 16:40:43 dnsmasq[105349]: using nameserver fd...::1#53 for domain lan.example.net
> Oct  9 16:40:43 dnsmasq[105349]: read /etc/hosts - 0 addresses
> 
> Here is what dnsmasq 2.87 reports when I disconnect the VPN:
> 
> Oct  9 16:46:21 dnsmasq[105730]: setting upstream servers from DBus
> Oct  9 16:46:21 dnsmasq[105730]: using nameserver 192.168.1.1#53 for domain lan.example.net
> Oct  9 16:46:21 dnsmasq[105730]: using nameserver fd...::1#53 for domain lan.example.net
> Oct  9 16:46:21 dnsmasq[105730]: read /etc/hosts - 0 addresses
> Oct  9 16:46:22 dnsmasq[105730]: query[A] ipv4only.arpa from ::1
> Oct  9 16:46:22 dnsmasq[105730]: config error is REFUSED (EDE: not ready)
> 
> Notice that 2.87 does not show any "using nameserver" lines that don't also
> say "for domain".  As a result, I can only look up hosts under the
> lan.example.net domain.  Everything else is refused.
> 
> I don't know how to see the DBus messages that openresolv is sending to
> dnsmasq, but I would assume they're the same in both cases.  The only thing
> that changed is the version of dnsmasq. But for whatever reason, dnsmasq
> 2.87 isn't setting up generic nameservers when the VPN disconnects, but 2.86
> is.

Possible direction for further hunting:  interfaces.


Yeah, that is somewhat vague, it is because "gut feeling".
The (wired?) idea is upon shutdown of the VPN is an interface gone.
And the gone I/F was the one with access to upstream DNS.


Groeten
Geert Stappers

P.S.
It will be a good thing that follow-up message provides
a completer picture of the setup.
-- 
Silence is hard to parse



More information about the Dnsmasq-discuss mailing list