Changing the hostname and resolving a fully qualified domain name

In this recipe we will learn how to change the hostname and resolve the Fully Qualified Domain Name (FQDN) of your server.

The process of setting the hostname is typically associated with the installation process but on many occasions there comes a time when the name used is either incorrect for a technical reason or you just don't like it any more. For some people the name of the server lacks importance, but for many others, a good server demands a good name and so it is the purpose of this recipe is to show you how quickly the hostname can be changed with the intention to revise and resolve the resulting fully qualified domain name.

Getting ready

To complete this recipe you will require a working installation of the CentOS 6 operating system with root privileges and a console-based text editor of your choice.

How to do it...

To begin this recipe we shall start by accessing the system as root and opening the following file in order to name or rename your current server.

  1. To do this, log in as root and using your favorite text editor type:
    vi /etc/sysconfig/network
    
  2. Now change the hostname value to your preferred name and when finished save and close the file. For example, if you wanted to call your server henry, your configuration file will look like this:
    NETWORKING=yes
    HOSTNAME=henry

    Note

    CentOS is case sensitive, so it is best to avoid using capitals and irregular characters when giving your computer a hostname. Restrict yourself to using an Internet-friendly alpha-numeric. The overall length should be no longer than 63 characters but try to keep it much shorter.

  3. We will now confirm the settings for the server in order to complete the Fully Qualified Domain Name or FQDN. An FQDN consists of a hostname and the more familiar DNS-based domain name, and in order to do this we will need to open and edit the hosts file:
    vi /etc/hosts
  4. A typical file may look like this:
    127.0.0.1     localhostlocalhost.localdomain localhost4 localhost4.localdomain4
    ::1               localhostlocalhost.localdomain localhost6 localhost6.localdomain6
  5. So let's concentrate on confirming the correct order and setting the correct values with the intention of making our file look similar to the following:
    127.0.0.1              localhost.localdomain localhost
    XXX.XXX.XXX.XXX      hostname.domainname.suffix hostname
    ::1            localhost6.localdomain6 localhost6
  6. You should now replace the values of the second line with something more appropriate to your needs. For example, if your server was called henry, (with an IP address of 192.168.1.100 and domain name of henry.com) your final file will look like this:
    127.0.0.1          localhost.localdomain localhost
    192.168.1.100        henry.henry.com henry
    ::1            localhost6.localdomain6 localhost6

    Note

    For a server found on a local network, it advisable to use a non-Internet based address. For example, you could use .local or .lan or even .home; and by using these references you will avoid any confusion with the typical .com, .co.uk, or .net domain names.

  7. When complete, save and close your file before rebooting your server to allow the changes to take immediate effect. To do this, return to your console and type:
    reboot
    
  8. On a successful reboot you can now check your new hostname by typing the following command and waiting for the response:
    hostname
    
  9. To confirm the domain name, you should type the following command and wait for the response:
    hostname –f
    
  10. Finally, and as an alternative to the preceding method, to confirm the Fully Qualified Domain Name (FQDN), you can type the following command and wait for the response:
    hostname -fqdn
    

How it works...

A hostname is a unique label created to identify a machine on a network. They are restricted to alpha-numeric based characters, and making a change to your server's hostname can be achieved by simply changing the values found in two system configuration files and rebooting your server.

So what have we learned from this experience?

In the first stage of the recipe, our intention was to change the current hostname used by our server that is maintained by a configuration file located at /etc/sysconfig/network.

A typical example of this file would look like this:

NETWORKING=yes
HOSTNAME=your_computername_here

Based on the example shown, if you did change the name of your server to henry, then your resulting configuration file would look like this:

NETWORKING=yes
HOSTNAME=henry

However, if you wanted to use a slightly different name, then you can use this:

NETWORKING=yes
HOSTNAME=webserver

Following this, and having saved our work, we were then required to confirm the Fully Qualified Domain Name or FQDN of our server. This is achieved by updating the hosts file found at /etc/hosts.

A typical example of the hosts file can look like this:

127.0.0.1     localhostlocalhost.localdomain localhost4 localhost4.localdomain4
::1             localhostlocalhost.localdomain localhost6 localhost6.localdomain6

The hosts file is used by CentOS to map hostnames to IP addresses and it is often found to be incorrect on a new, un-configured, or recently installed server. For this reason our first task was to reorganize the references shown in order to support both, the relevant IPv4 and IPv6 values as well as a hostname and domain name reference.

As a consequence of this, we found that the entire file would need rewriting in order to look like this:

127.0.0.1          localhost.localdomain localhost
XXX.XXX.XXX.XXX      hostname.domainname.suffix hostname
::1            localhost6.localdomain6 localhost6

You were then informed that an FQDN should consist of both, a short hostname and the domain name. Based on the example shown in the main recipe, for a server named henry whose IP address is 192.168.1.100 and whose domain name is henry.com, the revised hosts file would now look like this:

127.0.0.1          localhost.localdomainlocalhost
192.168.1.100        henry.henry.com henry
::1            localhost6.localdomain6 localhost6

Whereas the alternative name suggested previously will look like this:

127.0.0.1          localhost.localdomainlocalhost
192.168.1.100        webserver.webserver.com webserver
::1            localhost6.localdomain6 localhost6

Saving this file would arguably complete this process. However, because the kernel makes a record of the hostname during the boot process, there is no choice but to reboot your server with the following command:

reboot

On a successful reboot, you were then shown three basic commands that would enable you to confirm your new settings, starting with a command to call your current hostname. You did this by typing:

hostname

To confirm the domain name, you were invited to use the following command:

hostname –f

Finally, the following command is used to confirm the Fully Qualified Domain Name or FQDN like so:

hostname -fqdn

So in conclusion you can say that this recipe has not only served to show you how to rename your server, but it has also served to dispel the many myths associated with your hostnames as opposed to domain names.

As we all know, a server is not only known by the use of a shorter, easier-to-remember, and quicker-to-type single-word based name, but it also consists of three values separated with a period. The relationship between these values may seem strange at first, especially where many people will see them as a single value, but by completing this recipe you have discovered that the domain name remains distinct from the hostname by the virtue that it is determined by the resolver subsystem and it is only by putting them together that your server will yield the Fully Qualified Domain Name or FQDN of the system as a whole.

There's more...

The hosts file consists of a list of IP addresses and corresponding hostnames and if your network contains computers whose IP addresses are not listed in an existing DNS record, then in order to speed up your network it is often recommended that you add them to the hosts file.

This can be achieved on any operating system, but to do this on CentOS, simply open the hosts file in your favorite text editor like so:

vi /etc/hosts

Now scroll down to the bottom of this file and add the following values by substituting the domain names and IP addresses shown here with something more appropriate to your own needs:

192.168.1.100    www.example1.lan
192.168.1.101    www.example2.lan
192.168.1.102    www.example3.lan
192.168.1.103    www.example4.lan

You can even use external address such as:

83.166.169.228  www.packtpub.com

This method provides you with the chance to create mappings between domain names and IP addresses without the need to use a DNS, and it can be applied to any workstation or server. The list is not restricted by size and you can even employ this method to block access to certain websites by simply repointing all requests to visit a known website to a different IP address. For example, if the real address of www.website.com is 192.168.1.200 and you want to restrict access to it, then simply make the following changes to the hosts file of the viewing computer:

192.168.1.201    www.website.com

It isn't failsafe, but in this instance, anyone trying to access www.website.com will automatically be sent to 192.168.1.201 instead of 192.168.1.200.

When you have finished, remember to save and close your file in the usual way before proceeding to enjoy the benefits of faster and safer domain name resolution across any available network.