Latest Post

Fix NordVPN Breaking Your Network on Linux After Disconnecting

If disconnecting NordVPN on Linux leaves you without internet access - no name resolution, no ping, apt update failing - the culprit is often the nordvpnd daemon fighting with NetworkManager, not NordVPN itself.

Solution found and shared on the Debian Forums.

The Problem

Stopping NordVPN from the console (nordvpn d) doesn’t fully release control of the network. The nordvpnd daemon keeps running in the background even after the VPN connection itself is closed, and it can leave the system unable to resolve names, ping hosts, or reach the internet at all.

Diagnosing It

First, list running services to confirm the daemon is still active even after stopping NordVPN from the console:

1
systemctl list-units --type=service

Look for:

1
nordvpnd.service                loaded active running NordVPN Daemon

The Fix

Stop the daemon directly:

1
sudo systemctl stop nordvpnd

Then restart NetworkManager to restore connectivity:

1
sudo systemctl restart NetworkManager

After this, internet access, name resolution, and apt update should work again.

What Was Confirmed

Testing the cycle further showed:

  • Restarting nordvpnd and then connecting via nordvpn c worked fine, with the network staying up.
  • Disconnecting again via nordvpn d reproduced the same network breakage as before.
  • Stopping the daemon (sudo systemctl stop nordvpn) alone fixed it - no NetworkManager restart needed at that point.

Takeaway

The workaround is to manually stop the nordvpnd daemon after disconnecting NordVPN, and start it again (or just let nordvpn c restart it) before reconnecting. It’s a bit annoying to do by hand every time, but it reliably avoids the broken-network state. This could be scripted into a small wrapper around nordvpn c / nordvpn d if you want to automate it.

How to provide non-free firmware files to the Debian Stretch Installer

When I attempted to install Debian (9.3) on my laptop / pc, I could not get a network connection, because the installer told me that it was missing the required firmware files for my network interfaces:

1
2
3
4
5
6
7
Some of your hardware needs non-free firmware files to operate.  The firmware can be loaded from
removable media, such as a USB stick or floppy.

The missing firmware files are: iwlwifi-6000g2b-6.ucode iwlwifi-6000g2b-5.ucode

If you have such media available now, insert it, and continue.
Load missing firmware from removable media?

As I have been in this situation several times when I do not have a easy access to internet using a wired connection and I have a wireless card where the driver is not recognized by debian, and I have decided to write these lines to remind me how to fix it.

Faster solution

Use the unofficial ISO images with the non-free firmware already included (My normal option): http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/

Longer solution

Download the non-free firmware, store it within an usb drive and mount it during the installation; you can check this post out, it is very well explained. Below is a summary from above post:

  • First, of course, I had to actually find the required firmware files. To that end:
  • I went to the Debian site.
  • I clicked the Debian Packages link, to continue to the Debian Packages page.
  • Under the Packages header, I selected the Search the contents of packages link.
  • In the Keyword: field, I entered: iwlwifi.
  • Under Display:, I selected the option labelled packages that contain files whose names contain the keyword.
  • I left the Distribution: value unchanged at stable.
  • I changed the Architecture: value to 64-bit PC (amd64).
  • I clicked the Search button.
  • In the list of search results that appeared next, I looked for the two files that I needed: iwlwifi-6000g2b-5.ucode and iwlwifi-6000g2b-6.ucode. Both files were present in the firmware-iwlwifi package.
  • I clicked one of the firmware-iwlwifi links, to move on to the Binary firmware for Intel Wireless cards page.
  • Under the Download firmware-iwlwifi header, I clicked the all architecture link to continue.
  • On the next page, I clicked the link to the site from which I wanted to download the file.

The Debian package firmware-iwlwifi_20161130-3_all.deb got downloaded for me.

Next, it was time to extract the contents of the downloaded packages:

I opened a command-line terminal window, and went to the directory where the packages were downloaded―which, in my case, was my personal download directory: Code:

1
cd ~/Downloads
  • I extracted the contents of both packages into the current directory:
1
dpkg-deb --extract firmware-iwlwifi_20161130-3_all.deb .
  • I copied the entire contents of the firmware subdirectory to a USB stick that was formatted with a FAT filesystem.

Note, in particular, that the USB stick included the contents of the firmware directory, not the directory itself!

Finally, the time had come to retry the Debian installation. I simply booted the computer off the Debian 8.0.0 medium, and when it complained again about the missing firmware files, I took the following steps:

  • Inserted the USB stick.
  • pressed the <CTRL>+<Alt>+<F2> key combination, to switch to the second virtual terminal.
  • ran either the blkid or the fdisk -l command, to find out under which device name the USB stick was known: /dev/sdc. Its FAT filesystem, which contained the firmware files, then, was /dev/sdc1.
  • mounted the FAT filesystem under the /lib/firmware mountpoint―which, however, I had to create first:
1
2
mkdir /lib/firmware
mount /dev/sdc1 /lib/firmware
  • I pressed <Ctrl>+<Alt>+<F5> to continue the installation process.

The firmware files were successfully loaded, and I got prompted for my wireless networking parameters.