How To Assign Static DNS Server To EC2 Instances

The manul configuration of DNS server addresses in the EC2 instance are lost when the instances are restarted.

In this blog post , We will see how to configure Static DNS Server addresses on the Linux EC2 Instances.

Important Note:

Before making any modifications to the Instance’s , Take a backup of instance using AMI or EBS Snapshots.

Assigning Static DNS Servers

We will see , how to configure static DNS server addresses on the Linux EC2 instance of different distributions.

Setting DNS : Amazon Linux , Amazon Linux 2

Login to the Amazon Linux EC2 instance using the SSH client.

make sure you have root or sudo privileges to perform this.

Open the /etc/dhcp/dhclient.conf file

vi /etc/dhcp/dhclient.conf

Add add the below line , Replace xxx.xxx.xxx.xxx with the IP address with the DNS server addresses.

supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;

Once added Save and Close the file.

Set the PEERDNS=yes (If not) in all the network interfaces attached with the EC2 instance , Such as : /etc/sysconfig/network-scripts/ifcfg-eth0

Once added , Save and close the file.

We need to reboot the instance for the changes to take effect.

After reboot , The DNS addresses will be reflected in /etc/resolv.conf.

Setting DNS : Ubuntu 18.04

On Ubuntu 18.04 EC2 instances , The network interface configurations are handled by netpack.io packages.

Also the systemd-resolved service is enabled to handle DNS queries using stub resolver.

So in order to change the DNS servers , We need to follow the below procedures.

Netplan stores the configurations in /etc/netplan folder.We need a create a file inside this folder and setup DNS configurations there.

Create a file named 99-custom-dns.yaml and add the below contents into the file and don’t forget to replace x.x.x.x with the DNS server addresses

network:
     version: 2
     ethernets:
       eth0:
         nameservers:
              addresses: [x.x.x.x, x.x.x.x]
         dhcp4-overrides:
              use-dns: false

Once the configurations ate added , Save and close the file.

For the changes to take effect , We need to reboot the instance.

After the instance reboot , We should verify whether the DNS records are updated by running the below command.

systemd-resolve --status

For the network interface (eth0) , You should see that the DNS records are updated properly.

Setting DNS : Ubuntu 16.04

Login to the Ubuntu 16.04 EC2 instance using the SSH client.

Make sure you have root or sudo privileges to perform this operation.

Open the /etc/dhcp/dhclient.conf file

vi /etc/dhcp/dhclient.conf

Add add the below line , Replace xxx.xxx.xxx.xxx with the IP address with the DNS server addressess.

supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;

Once added Save and Close the file.

Set the PEERDNS=yes in all the network interfaces attached with the EC2 instance , Such as : /etc/sysconfig/network-scripts/ifcfg-eth0

Once added , We need to reboot the instance for the changes to take effect.

After reboot , The DNS addresses will be reflected in /etc/resolv.conf.

Setting DNS : RHEL 7.5

Login to the Redhat Linux EC2 instance using the SSH client.

Open the /etc/dhcp/dhclient.conf file

vi /etc/dhcp/dhclient.conf

Add add the below line , Replace xxx.xxx.xxx.xxx with the IP address with the DNS addressess of the Directory services.

supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;

Once added Save and Close the file.

Set the PEERDNS=yes in all the network interfaces attached with the EC2 instance , Such as : /etc/sysconfig/network-scripts/ifcfg-eth0

Once added , We need to reboot the instance for the changes to take effect.

After reboot , The DNS addresses will be reflected in /etc/resolv.conf.

Conclusion

Now we have learnt to configure Static DNS server addresses on the Linux EC2 Instances across distributions.

Hope you find it helpful.

Please do check out my other publications.