I have a pi hole in my network and I set it as my primary DNS server, and my router (a Mikrotik) as secondary. DHCP sets the DNS servers as pihole, mikrotik in this exact order and I want to keep it that way. I know systemd-resolved uses some algorithm to set the fastest dns as current server, but I don’t want/need that. Is there some way to do configure it to just let it be?

I’m running Fedora 40.

  • nelsnelson [comrade/them, love/loves]@hexbear.net
    link
    fedilink
    English
    arrow-up
    1
    arrow-down
    4
    ·
    3 months ago

    Via ChatGPT 4 (accuracy unverified):

    Yes, you can configure systemd-resolved to use the DNS servers in the order provided without dynamically switching based on speed. Here’s how you can do it:

    1. Edit the resolved configuration file:

      Open the resolved.conf file in a text editor:

      sudo nano /etc/systemd/resolved.conf
      
    2. Modify or add the following line:

      DNS=`IP_of_pihole` `IP_of_mikrotik`
      DNSStubListener=no
      FallbackDNS=
      

      Replace IP_of_pihole and IP_of_mikrotik with your actual DNS IP addresses. This tells systemd-resolved to only use the DNS servers in the order you’ve specified.

    3. Prevent automatic DNS changes by network manager:

      If you’re using NetworkManager, create a drop-in configuration to prevent it from overriding DNS settings:

      sudo mkdir -p /etc/NetworkManager/conf.d/
      sudo nano /etc/NetworkManager/conf.d/dns.conf
      

      Add the following content:

      [main]
      dns=none
      
    4. Restart services:

      After making these changes, restart systemd-resolved and NetworkManager:

      sudo systemctl restart systemd-resolved
      sudo systemctl restart NetworkManager
      

    This should ensure that your system uses the DNS servers in the order provided without any automatic switching.