I tried both Mullvad and Mozilla VPN and when I do a dns test, both are still using my ISP’s DNS instead of the VPN’s. This only happens on my Arch systems, works fine on my phone.
EDIT: Turns out these VPN clients depend on systemd-resolved in order to change your DNS. Enabling the service makes it work properly. A bit scary that they don’t give you a warning that you’re leaking DNS if you don’t have systemd-resolved enabled.
Are you using
systemd-resolved
andsystemd-networkd
? If so, have you checked and double checked you set up your config with the appropriate lines in/etc/systemd/resolved.conf
and/etc/systemd/network/*.network
?Also make sure to reload the appropriate
systemd
unit files after changing network and DNS configuration (you don’t have to restart).Maybe this can help?
https://wiki.archlinux.org/title/Domain_name_resolution
No, I am not using either of those. Both are shown as disabled in
systemctl
.Then are you using NetworkManager? Or dhcpcd? As there are a few ways to resolve DNS on Linux so it depends on what you’re using.
Have you looked into
/etc/resolv.conf
? Whichever method you’re using for your network configuration might be overwriting the defaults in there.edit: letter
So after doing some digging, I found out that Mozilla VPN depends on systemd-resolved in order to change DNS: https://github.com/mozilla-mobile/mozilla-vpn-client/issues/3003#issuecomment-1067898610
At first, I saw no need to use systemd-resolved so I never enabled it. After enabling the service, VPNs change the DNS resolution just fine. Thanks for your help!
Yes I am using Network manager and it writes to /etc/resolv.conf. The entries in my resolve.conf all just point to my router IP. Is the VPN supposed to add entries into this? I remember it used to work automatically. I never had to manually change resolv.conf before.