If you are working on cloud environments like AWS, OCI you might have come across a requirement where you need to add custom settings on DNS like name servers, search domains and so on. Any changes to /etc/resolv.conf or the network configuration files will be reverted by the DNS server associated with the cloud virtual network.
There are many ways to set custom DNS settings and make sure it’s not overridden by DHCP. Using Dhclient supersede option is one of the best methods.
The dhclient.conf
file
allows you to configure various options for the DHCP client (dhclient) that
controls how your system obtains IP addresses and network configuration
information from DHCP servers. The supersede
directive is used to override and modify DHCP options that are provided by the
DHCP server. It allows you to replace or supplement the DHCP options with your
own settings.
Below, I'll explain how to use the supercede
directive in the dhclient.conf
file.
Config file: /etc/dhcp/dhclient.conf
Basic Syntax with usage:
interface "<INTERFACE>" {
supersede domain-search "<OPTION-NAME>", "OPTION-VALUE";
}
Example: If you want to set a custom DNS server on Oracle Linux 8.8, you may use dhclient supersede option as follows:
interface "ens3" {
supersede domain-name-servers 8.8.8.8;
}
You should reboot the server to see this is action or you can manually set the /etc/resolv.conf file with the required DNS but during the next DHCP renewal, dhclient will check the configuration file and update the superseded value for the DNS name server in /etc/resolv.conf.
You can supersede a number of DHCP options in the dhclient.conf
file. Here's a list of DHCP options
that can be superseded, along with their descriptions:
1. subnet-mask: Specifies the subnet mask for the client's IP address.
2. broadcast-address: Defines the broadcast address for the client's subnet.
3. routers: Sets the default gateway or router for the client.
4. domain-name-servers: Specifies the DNS servers used by the client.
5. domain-name: Specifies the domain name for the client's network.
6. domain-search: Specifies the domain search list for the client.
7. host-name: Sets the hostname for the client.
8. ntp-servers: Specifies the Network Time Protocol (NTP) servers used for time synchronization.
9. netbios-name-servers: Specifies the NetBIOS name servers for Windows networking.
10. netbios-scope: Defines the NetBIOS scope for Windows networking.
11. interface-mtu: Sets the Maximum Transmission Unit (MTU) for the client's network interface.
12. domain-name-servers-append: Appends DNS servers to the list provided by the DHCP server.
13. classless-static-routes: Specifies static routes for the client.
14. nis-domain: Sets the Network Information Service (NIS) domain.
15. nis-servers: Specifies NIS servers for the client.
16. nisplus-domain: Sets the NIS+ domain.
17. nisplus-servers: Specifies NIS+ servers for the client.
18. nisplus-client: Configures the NIS+ client settings.
19. slp-directory-agent: Specifies Service Location Protocol (SLP) directory agents.
20. slp-service-scope: Defines the SLP service scope.
21. ldap-servers: Specifies LDAP (Lightweight Directory Access Protocol) servers.
22. ldap-base-dn: Sets the LDAP base domain name.
23. ldap-raid-info: Configures LDAP RAID (Redundant Array of Independent Disks) information.
24. vivso: Supports Vendor-Identifying Vendor Specific Options (VIVSO).
These options can be superseded in the dhclient.conf
file to customize the client's network
configuration. Keep in mind that not all of these options may be present in
your DHCP server's response. It's essential to understand which options are
provided by your DHCP server and which ones you need to supersede to meet your
network's specific requirements.