Set custom DNS servers on Linux with resolv.conf

resolv.conf is the configuration file for DNS resolvers for all Linux distributions, including Debian, Mint, Ubuntu, RedHat, CentOS, etc. Usually we change the DNS resolvers list by editing resolv.conf. However, depends on your dhcp client configuration, resolv.conf may be rewrite after reboot. Without deep Linux experience, setting customs DNS servers on Linux maybe time consuming. But one thing we can do is make /etc/resolv.conf immutable to other program after you changed it. This will be the easier setup with no side effects on system.

Change the DNS server

Below example we will set DNS resolver to ( is a privacy-first consumer DNS service provided by Cloudflare.)

sudo echo 'nameserver' > /etc/resolv.conf

Run the chattr +i command to sets the immutable filesystem attribute on resolv.conf, so it can’t be modified any anyone else.

sudo chattr +i /etc/resolv.conf

Reboot your system and test if your change to DNS server succeed. You can test it via DNS leak test. If you want to make change to resolv.conf again, you need to remove the attribute.

sudo chattr -i /etc/resolv.conf

Some free public DNS server list:

Google Public DNS / 2001:4860:4860::8888 / 2001:4860:4860::8844

OpenDNS / 2620:0:ccc::2 / 2620:0:ccd::2

Comodo Secure DNS

Norton ConnectSafe

Level 3:

Verisign Public DNS

DNS.WATCH 2001:1608:10:25::1c04:b12f 2001:1608:10:25::9249:d69b

AdGuard Default 2a00:5a60::ad1:0ff 2a00:5a60::ad2:0ff

Family protection 2a00:5a60::bad1:0ff 2a00:5a60::bad2:0ff

Quad9 2620:fe::fe 2620:fe::10

Cloudflare DNS Resolver 2606:4700:4700::1111 2606:4700:4700::1001

CleanBrowsing Family Filter 2a0d:2a00:1:: 2a0d:2a00:2::

Easy Dual WAN Load Balancing with MikroTik RouterOS PCC Protect your WordPress from Automated Comment Spam and Brute Force Login Attack