8.3. Setting the Hostname and Configuring the Name Service
The purpose of assigning names to IP numbers is to make them easier for people to remember. In reality, an IP address identifies a network interface associated with a device such as a network card. Since each machine can have several network cards, and several interfaces on each card, one single computer can have several names in the domain name system.
Each machine is, however, identified by a main (or “canonical”) name, stored in the /etc/hostname
file and communicated to the Linux kernel by initialization scripts through the hostname
command. The current value is available in a virtual filesystem, and you can get it with the cat /proc/sys/kernel/hostname
command.
Surprisingly, the domain name is not managed in the same way, but comes from the complete name of the machine, acquired through name resolution. You can change it in the /etc/hosts
file; simply write a complete name for the machine there at the beginning of the list of names associated with the address of the machine, as in the following example:
The mechanism for name resolution in Linux is modular and can use various sources of information declared in the /etc/nsswitch.conf
file. The entry that involves host name resolution is hosts
. By default, it contains files dns
, which means that the system consults the /etc/hosts
file first, then DNS servers. NIS/NIS+ or LDAP servers are other possible sources.
8.3.1.1. Configuring DNS Servers
DNS (Domain Name Service) is a distributed and hierarchical service mapping names to IP addresses, and vice-versa. Specifically, it can turn a human-friendly name such as www.eyrolles.com
into the actual IP address, 213.244.11.247
.
To access DNS information, a DNS server must be available to relay requests. Falcot Corp has its own, but an individual user is more likely to use the DNS servers provided by their ISP.
The DNS servers to be used are indicated in the /etc/resolv.conf
, one per line, with the nameserver
keyword preceding an IP address, as in the following example:
nameserver 212.27.32.176
nameserver 212.27.32.177
nameserver 8.8.8.8
Note that the /etc/resolv.conf
file may be handled automatically (and overwritten) when the network is managed by NetworkManager or configured via DHCP.
8.3.1.2. The /etc/hosts
file
If there is no name server on the local network, it is still possible to establish a small table mapping IP addresses and machine hostnames in the /etc/hosts
file, usually reserved for local network stations. The syntax of this file as described in hosts(5) is very simple: each line indicates a specific IP address followed by the list of any associated names (the first being “completely qualified”, meaning it includes the domain name).
This file is available even during network outages or when DNS servers are unreachable, but will only really be useful when duplicated on all the machines on the network. The slightest alteration in correspondence will require the file to be updated everywhere. This is why /etc/hosts
generally only contains the most important entries.
This file will be sufficient for a small network not connected to the Internet, but with 5 machines or more, it is recommended to install a proper DNS server.