CentOS7: Network Manager is using wrong search domain

After a few hours of poking around, I was able to resolve this. It turns out, this was being set via DHCP:

nmcli -f ip4 device show eth0
IP4.ADDRESS[1]:                         172.31.53.162/20
IP4.GATEWAY:                            172.31.48.1
IP4.DNS[1]:                             172.31.0.2
IP4.DOMAIN[1]:                          ec2.internal

I was able to override IP4.DOMAIN[1] by overriding a network interface's ipv4.dns-search value:

nmcli connection modify uuid \`nmcli connection show --active | grep 802-3-ethernet | awk '{print $(NF-2)}' | tail -n 1` ipv4.dns-search d.sample.com

Or more simply,

nmcli connection modify System\ eth0 ipv4.dns-search "d.sample.com"

Then you have to restart NetworkManager

systemctl restart NetworkManager.service

I also found that because I was working with an Amazon instance, I needed to update my cloud.cfg file.


The /etc/resolv.conf file will always be overwritten when there is a change or update to the network. You can control what is written by editing files in the /etc/resolvconf/resolv.conf.d/ folder... namely the head file.

Place this in the /etc/resolvconf/resolv.conf.d/head file:

nameserver 172.31.0.2
search testing01.d.sample.com

Now this will be the header of the /etc/resolv.conf each time it's updated.

Update

For Redhat based systems, use these steps:

Edit your network script which is located at: /etc/sysconfig/network-scripts. You will see an entry for the network devices detected (i.e. ifcfg-eth0 for the network adapter eth0).

Edit this file (/etc/sysconfig/network-scripts/ifcfg-eth0):

Append this line:

DOMAIN=sample.com

Also run this command:

$ sudo hostnamectl set-hostname --static "testing01.d.sample.com"

You'll most likely have to reboot the system to make the changes take effect.