IM Blog Projects AS213339 Contact
Back

Mullvad VPN and multi-user.target

Published 2024-01-29 2 min read

I’ve been using Mullvad VPN for a couple years now. It’s by far and away the best VPN I’ve used. It’s reliable, decently fast, and has pretty fair pricing (and transparency!).

Today I ran into an issue with Mullvad on Linux and I thought I’d detail the issue and solution I found in case anyone else ever runs into it.

I commonly use multi-user.target when I want to reduce the load on my GPU as much as possible, either for libvirt GPU Passthrough or just to reduce VRAM usage. Normally it’s a pretty simple process:

Terminal window
sudo systemctl isolate multi-user.target

However, I tried it today and my networking suddenly died with Operation not permitted on everything that tried to access it, even with sudo. I spent a good 30 minutes trying to figure out what was going on, including messing with netplan and destroying/recreating my network interfaces. I finally discovered it was Mullvad VPN.

It seems they have a mullvad-early-boot-blocker.service that runs at boot. As far as I can tell, this service blocks all network access until the mullvad-daemon.service starts, mainly for people that need to tunnel all traffic via Mullvad at all costs. This is great… but it also seems to activate when you switch to multi-user.target and doesn’t unblock things when you switch back to graphical.target.

Assuming you don’t care about blocking all network access until Mullvad starts, you can just disable the service:

Terminal window
sudo systemctl disable mullvad-early-boot-blocker.service

And voila! Networking in multi-user.target is works again.