On modern Linux systems, /etc/resolv.conf is often auto-generated, so any manual edits get overwritten. This is expected behavior, not a bug.
Below is why it happens and how to control it, depending on what manages DNS on your system.
/etc/resolv.conf keeps changingOne (or more) of these services rewrites it:
systemd-resolved
NetworkManager
DHCP client (dhclient)
resolvconf / openresolv
You can’t safely edit /etc/resolv.conf directly unless you disable the manager that owns it.
Run:
ls -l /etc/resolv.conf
Common results:
/run/systemd/resolve/stub-resolv.conf → systemd-resolved
/run/NetworkManager/resolv.conf → NetworkManager
/etc/resolvconf/run/resolv.conf → resolvconf
Regular file → possibly dhclient or static
Option A: Set DNS properly (recommended)
Edit:
sudo nano /etc/systemd/resolved.conf
Example:
[Resolve] DNS=1.1.1.1 8.8.8.8 FallbackDNS=9.9.9.9
Apply:
sudo systemctl restart systemd-resolved
Option B: Disable systemd-resolved (advanced)
sudo systemctl disable --now systemd-resolved sudo rm /etc/resolv.conf
Create a static file:
sudo nano /etc/resolv.conf
nameserver 1.1.1.1 nameserver 8.8.8.8
⚠️ This removes DNS auto-management (not recommended on laptops).
Edit the connection:
nmcli connection show nmcli connection modify <connection-name> ipv4.ignore-auto-dns yes nmcli connection modify <connection-name> ipv4.dns "1.1.1.1 8.8.8.8" nmcli connection up <connection-name>
Prevent DNS overwrite:
sudo nano /etc/dhcp/dhclient.conf
Add:
supersede domain-name-servers 1.1.1.1, 8.8.8.8;
Edit:
sudo nano /etc/resolvconf.conf
Or add DNS to:
/etc/resolvconf/resolv.conf.d/head
Then apply:
sudo resolvconf -u
❌ Don’t edit /etc/resolv.conf directly unless you know it’s unmanaged
❌ Don’t chattr +i /etc/resolv.conf (breaks networking tools)
Desktop / laptop → Configure DNS via systemd-resolved or NetworkManager
Server → Either systemd-resolved config or static /etc/resolv.conf