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.