Set DNS or Nameservers

From Manjaro Linux
Jump to: navigation, search

What's this all about?

Generally, if you are using a different Domain Name Server (DNS) than that provided by your ISP, or you are using the likes of Google's nameservers from your Google account you will find that your DNS or other non-standard nameserver addresses will, after you have set them up, get lost on reboot as /etc/resolv.conf can be overwritten by NetworkManager or during the boot process. Here we will look at 2 techniques to preserve your settings; resolvconf.conf from openresolv, resolv.conf.head/tail using DHCPD.

openresolv and /etc/resolvconf.conf

The resolvconf.conf file is a shell script that is sourced by resolvconf, meaning that resolvconf.conf must contain valid shell commands. Take a look at its man page for more details and commands. The file is located at /etc/resolvconf.conf and will require root privelege to edit. After making any changes simply update and apply your settings with the following command

sudo resolvconf -u

(note - changes will take effect immediately)

Example

For this example we will prepend OpenDNS nameservers to the top of our resolvconf file whenever called. We can achieve this by adding the following lines to the bottom of resolvconf.conf and running the update command.

# OpenDNS servers
name_servers="208.67.222.222 208.67.220.220"

DHCPD and resolv.conf.head/tail

We can input our settings to the /etc/resolv.conf.head file. If this file does not exist then create it. The contents of /etc/resolv.conf.head get sent to the top of /etc/resolv.conf during the boot process.

Examples

To use the Google nameservers associated with your Google account, you would add the following to /etc/resolv.conf.head

# Google nameservers
nameserver 8.8.8.8
nameserver 8.8.4.4

You would add any DNS entries that you had the need to. So those that want to use OpenDNS for example you would add the following:

# OpenDNS servers
nameserver 208.67.222.222
nameserver 208.67.220.220

The Swiss Privacy Foundation's nameserver addresses:

# Swiss Privacy Foundation's servers
nameserver 77.109.138.45
nameserver 77.109.139.29

/etc/resolv.conf.tail (for when pacman times out)

You can create the /etc/resolv.conf.tail file & add the following to it, (I'm using the OpenDNS address, you could use any other DNS or nameserver that you have access to):

options timeout:1

# OpenDNS servers, used as alternative when default DNS is too slow:
nameserver 208.67.222.222
nameserver 208.67.220.220

After you have saved the edited file you will need to restart your network service. The one reliable way that works for everyone is to warm boot your machine.

NetworkManager

If you when you fiddle with your DNS finds that your resolv.conf is overwritten by NetworkManager there is a few tricks available. The NetworkManager's config drop folder is placed in /etc/NetworkManager/confg.d. In this folder you can place snippets which controls how NetworkManager works. The files should be named with a number and a description of its purpose and always end with .conf. The files are then applied in numerical order from the lowest to the highest. A configuration in a file with a higher number will override what could have been configured in a lower numbered file.

Use resolvconf

To have the resolvconf script handle the resolv.conf file for NetworkManager. Create a configuration file in NetworkManager's config drop folder

/etc/NetworkManager/conf.d/20-rc-manager.conf

Save the file with this content

[main]
rc-manager=resolvconf

To effectively make DNS handling a manual task create a file named

/etc/NetworkManager/conf.d/99-dont-touch-my-dns.conf

Save the file with this content

[main]
dns=none

Support

Create a thread on the forum if you have any need for further information on this topic: Manjaro Forum

Further reading

- NetworkManager for Administrators - Using resolvconf with NetworkManager