How to setup a host file, correctly.. in Linux.

What is a host file?

A host file or /etc/hosts in Linux, it’s a locally administrated text file which is used by the operating system to translate host names into IP addresses. Keep in mind that the hosts file has a bigger priority then DNS by default, consequently the hosts are first resolved from here. The behavior can be changed via /etc/nsswitch.conf.

Example:

cat /etc/hosts
127.0.0.1 myserver.example.com myserver
192.168.0.1 myrouter

In this example we have defined two hosts.
1) myserver with the IP address 127.0.0.1 and the FQDN is myserver.example.com.
2) myrouter with the IP address 192.168.0.1, without a domain name, this is not a FQDN.

Test:
Just use the simple ping command, as you see in the example from below, the host is successfully translated.

ping myserver -c 1
PING myserver (127.0.0.1) 56(84) bytes of data.
64 bytes from myserver (127.0.0.1): icmp_seq=1 ttl=64 time=0.045 ms

What is FQDN?

FQDN is the abbreviation for Fully Qualified Domain Name, a domain name which must include at least a second-level domain and a top-level domain.
In our example myserver.example.com:
– host name is myserver
– second level-domain is example
– top-level domain is .com.

So.. the correct entry of a FQDN would be:
ip_address hostname.domain hostname

Local system’s host name

Some apps or services like Kerberos requires that the local system’s host name to be FQDN.
/etc/hostname file stores the system’s host name, if is modified the change will be effective only after reboot.

cat /etc/hostname
myserver

Check if local system’s host name is FQDN

You need to make sure that the local host name has a valid FQDN entry in /etc/hosts.

cat /etc/hosts | grep `hostname`
127.0.0.1 myserver.example.com myserver

You can also check with the hostname command.

Display the host name

hostname
myserver

Display the domain name

hostname -d
example.com

Display the FQDN

hostname -f
myserver.example.com

Leave a Reply

Your email address will not be published.