Skip to content

Instantly share code, notes, and snippets.

@zoilomora
Last active March 23, 2024 17:30
Show Gist options
  • Save zoilomora/f7d264cefbb589f3f1b1fc2cea2c844c to your computer and use it in GitHub Desktop.
Save zoilomora/f7d264cefbb589f3f1b1fc2cea2c844c to your computer and use it in GitHub Desktop.
How to disable systemd-resolved in Ubuntu

How to disable systemd-resolved in Ubuntu

Stages

  • Disable and stop the systemd-resolved service:

      sudo systemctl disable systemd-resolved.service
      sudo systemctl stop systemd-resolved
    
  • Then put the following line in the [main] section of your /etc/NetworkManager/NetworkManager.conf:

      dns=default
    
  • Delete the symlink /etc/resolv.conf

      rm /etc/resolv.conf
    
  • Restart network-manager

      sudo service network-manager restart
      or
      sudo systemctl restart NetworkManager.service
    

Sources

@martijn
Copy link

martijn commented Jan 12, 2022

Thanks, this resolved VPN-issued DNS servers not being used in Docker containers for me on Pop_OS! 21.10.

@thekoma
Copy link

thekoma commented Mar 4, 2022

If anyone wants to do it extra quick I wrote a little playbook:

# apt/yum install ansible, then:
curl -L https://bit.ly/3MqjHO0 > disable-systemd-resolved.yaml
ansible-galaxy collection install community.general
ansible-playbook -v disable-systemd-resolved.yaml

@mdPlusPlus
Copy link

@thekoma: I'd advise everyone to no to use URL shorteners when it comes to blind code execution on user's machines. The content that hides behind that URL could change at any moment in time and could become malicious.

@thekoma
Copy link

thekoma commented Mar 7, 2022

It's not blind. I'm not piping into bash. I've just shortened the gist url which is marked in the first statement.
But if you prefer: https://gist.githubusercontent.com/thekoma/b0d28f96b0384d9c630c244e216a6e03/raw/b9a2be01d6d0a7521c2102a7ea2c0bb74c0365c1/disable-systemd-resolved.yaml

@leroy0211
Copy link

leroy0211 commented Mar 23, 2022

We did not have NetworkManager service installed (fresh ubuntu 20.04). We kept the systemd-resolved service running and changed the /etc/resolv.conf symlink to use another resolv.conf file.

Default symlink was this:

/etc/resolv.conf  ->  ../run/systemd/resolve/stub-resolv.conf

We changed it to:

/etc/resolv.conf  ->  ../run/systemd/resolve/resolv.conf

This means we don't use a 127.0.0.53 cached resolver, but we keep using the generated resolv.conf file from the systemd-resolved service. Which is overwritten/managed by netplan.

Original issue

We are running applications in docker which could not connect to any internally hosted applications on their local DNS name. Docker documentation about DNS:

By default, a container inherits the DNS settings of the host, as defined in the /etc/resolv.conf configuration file [..] If the container cannot reach any of the IP addresses you specify, Google’s public DNS server 8.8.8.8 is added, so that your container can resolve internet domains.

We discovered using journalctl -xeu docker that docker was using google's DNS, so we figured that docker was not able to reach the configured DNS service. Which is correct. The /etc/resolv.conf file which was using nameserver 127.0.0.53 also for docker, resolves to the docker container and not the guest host.

@kimboslice99
Copy link

Following these steps on a fresh Ubuntu 22.10 install completely breaks dns

Local dns servers are perfectly functional, Ubuntu sees them and they show in network config, but it refuses to use them, what gives?

@kyledrake
Copy link

kyledrake commented Dec 5, 2022

Don't forget to add back the resolv.conf:

echo 'search example.com' > /etc/resolv.conf
echo 'nameserver 1.1.1.1' >> /etc/resolv.conf
echo 'nameserver 1.0.0.1' >> /etc/resolv.conf

systemd-resolvwhatever broke after upgrading ubuntu, and it was easier to just switch back to the Thing That Always Worked than to try to figure it out.

@videni
Copy link

videni commented Apr 3, 2023

Following these steps on a fresh Ubuntu 22.10 install completely breaks dns

Local dns servers are perfectly functional, Ubuntu sees them and they show in network config, but it refuses to use them, what gives?

How do you solve the DNS issue for 22.10 please?

@euntae
Copy link

euntae commented Nov 30, 2023

root@www::> systemctl disable systemd-resolved
root@www:
:> systemctl stop systemd-resolved
root@www::> rm -f /etc/resolv.conf
root@www:
:> cat < /etc/resolv.conf
nameserver 9.9.9.9
nameserver 8.8.8.8
nameserver 1.1.1.1
EOF
root@www:~:> reboot

@andry81
Copy link

andry81 commented Jan 30, 2024

Why not just rename instead of remove?

mv /etc/resolv.conf /etc/resolv.conf.del

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment