My DNS changes on its own but its changes can't be observed through /etc/resolv.conf

I made a script to print /etc/resolv.conf and ping result of www.reddit.com for every second. I used Cloudflare’s DNS (1.1.1.1) because reddit is blocked in my country but bypassable using DNS. It seems that after around 10 seconds of logging into my desktop, my DNS goes back to my default gateway (192.168.1.1). What can I do to keep my DNS at 1.1.1.1?

My script:

#! /bin/bash

while true
do
    cat /etc/resolv.conf
    ping -c 1 www.reddit.com | grep "ping statistics" | sed "s/--- /$(date) /" | sed "s/ ping statistics ---//"
    sleep 1
done

Result of running it immediately after reboot and login:

# Generated by NetworkManager
nameserver 1.1.1.1
nameserver 1.0.0.1
Sat Aug 19 11:19:49 AM WIB 2023 reddit.map.fastly.net
# Generated by NetworkManager
nameserver 1.1.1.1
nameserver 1.0.0.1
Sat Aug 19 11:19:58 AM WIB 2023 reddit.map.fastly.net
# Generated by NetworkManager
nameserver 1.1.1.1
nameserver 1.0.0.1
Sat Aug 19 11:20:07 AM WIB 2023 reddit.map.fastly.net
# Generated by NetworkManager
nameserver 1.1.1.1
nameserver 1.0.0.1
Sat Aug 19 11:20:16 AM WIB 2023 trustpositif.kominfo.go.id
# Generated by NetworkManager
nameserver 1.1.1.1
nameserver 1.0.0.1
Sat Aug 19 11:20:17 AM WIB 2023 trustpositif.kominfo.go.id
# Generated by NetworkManager
nameserver 1.1.1.1
nameserver 1.0.0.1
Sat Aug 19 11:20:18 AM WIB 2023 trustpositif.kominfo.go.id

More info:

❯ nslookup www.reddit.com 1.1.1.1
Server:     1.1.1.1
Address:    1.1.1.1#53

Non-authoritative answer:
www.reddit.com  canonical name = reddit.map.fastly.net.
Name:   reddit.map.fastly.net
Address: 151.101.129.140
Name:   reddit.map.fastly.net
Address: 151.101.1.140
Name:   reddit.map.fastly.net
Address: 151.101.65.140
Name:   reddit.map.fastly.net
Address: 151.101.193.140

❯ nslookup www.reddit.com 192.168.1.1
Server:     192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
www.reddit.com  canonical name = trustpositif.kominfo.go.id.
Name:   trustpositif.kominfo.go.id
Address: 27.54.116.70

❯ grep hosts /etc/nsswitch.conf
hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns

❯ resolvectl
Global
           Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
    resolv.conf mode: foreign
  Current DNS Server: 1.0.0.1
         DNS Servers: 1.1.1.1 1.0.0.1
Fallback DNS Servers: 1.1.1.1#cloudflare-dns.com 9.9.9.9#dns.quad9.net 8.8.8.8#dns.google 2606:4700:4700::1111#cloudflare-dns.com 2620:fe::9#dns.quad9.net
                      2001:4860:4860::8888#dns.google

Link 2 (enp5s0)
    Current Scopes: none
         Protocols: -DefaultRoute +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 4 (wlan0)
    Current Scopes: DNS LLMNR/IPv4 mDNS/IPv4
         Protocols: +DefaultRoute +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
       DNS Servers: 192.168.1.1

Your system is using systemd-resolved as its primary DNS resolver (as the keyword resolve is before dns in nsswitch.conf), so /etc/resolv.conf only gets used if systemd-resolved is not running.

Run resolvectl to see your real DNS settings.

/etc/resolv.conf is effectively obsolete on your system.

Answered By: telcoM
Categories: Answers Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.