Domain name in linux server

How to setup domain name in Linux server

Published: September 27, 2017 | Modified: June 20, 2020

Learn how to setup domain names in RedHat, Ubuntu, CentOS, Fedora like Linux servers. Also, see how to verify domain name in Linux and FQDN setup in Linux

Many companies have an internal domain for their IT infrastructure. This needs its servers to be configured with a domain name. This will ensure all servers will have FQDN (Fully Qualified Domain Name). For example, server12 is hostname and is its FQDN. In such setup, many tools, monitoring requires servers to be identified by FQDN only.

For such a scenario you have to configure the domain name for your Linux server. We will walk you through steps that need to be taken to the setup domain name on your Linux server.

First of all, check if your server is having domain name already set up or not using below command :

If you get output like above then your server is configured with the domain name. If your output is blank then you have to the setup domain name for your server.

Without further delay lets jump into steps to configure domain name.

Step 1.

How to setup FQDN in Linux?

First thing to be done is add FQDN to your hostname in /etc/hosts file.

To confirm your FQDN, run below command :

Output should be hostname.domain name

Step 2.

Configure domain name in Red Hat RHEL, Fedora and CentOS

Add below line in /etc/sysconfig/network

Add below parameter in /etc/sysctl.conf

Configure domain name in Ubuntu

Edit your hostname (not FQDN) in /etc/hostname file. and restart hostname service. If you see below error :

you can set hostname using :

Once done, confirm normal hostname (using hostname ) and FQDN (using hostname -f )

Step 3.

Add domain in /etc/resolv.conf . This file used for setting nameservers as well.

This addition makes sure that you can resolves hostnames within your domain.

Step 4.

Confirm that changes are working perfectly. Question is how to check the domain name of the Linux server?

Below are the commands to check hostname, FQDN, and domain name of your server.

hostname command shows your server’s hostname. hostname -f shows your FQDN. dnsdomainname command shows your domain name of the server!


Domain Name Service (DNS)

Domain Name Service (DNS) is an Internet service that maps IP addresses and fully qualified domain names (FQDN) to one another. In this way, DNS alleviates the need to remember IP addresses. Computers that run DNS are called name servers. Ubuntu ships with BIND (Berkley Internet Naming Daemon), the most common program used for maintaining a name server on Linux.


At a terminal prompt, enter the following command to install dns:

A very useful package for testing and troubleshooting DNS issues is the dnsutils package. Very often these tools will be installed already, but to check and/or install dnsutils enter the following:


There are many ways to configure BIND9. Some of the most common configurations are a caching nameserver, primary server, and secondary server.

When configured as a caching nameserver BIND9 will find the answer to name queries and remember the answer when the domain is queried again.

As a primary server, BIND9 reads the data for a zone from a file on its host and is authoritative for that zone.

As a secondary server, BIND9 gets the zone data from another nameserver that is authoritative for the zone.


The DNS configuration files are stored in the /etc/bind directory. The primary configuration file is /etc/bind/named.conf , which in the layout provided by the package just includes these files.

  • /etc/bind/named.conf.options : global DNS options
  • /etc/bind/named.conf.local : for your zones
  • /etc/bind/named.conf.default-zones : default zones such as localhost, its reverse, and the root hints
Читайте также:  Linux python3 by default

The root nameservers used to be described in the file /etc/bind/db.root . This is now provided instead by the /usr/share/dns/root.hints file shipped with the dns-root-data package, and is referenced in the named.conf.default-zones configuration file above.

It is possible to configure the same server to be a caching name server, primary, and secondary: it all depends on the zones it is serving. A server can be the Start of Authority (SOA) for one zone, while providing secondary service for another zone. All the while providing caching services for hosts on the local LAN.

Caching Nameserver

The default configuration acts as a caching server. Simply uncomment and edit /etc/bind/named.conf.options to set the IP addresses of your ISP’s DNS servers:

Replace and with the IP Addresses of actual nameservers.

To enable the new configuration, restart the DNS server. From a terminal prompt:

See dig for information on testing a caching DNS server.

Primary Server

In this section BIND9 will be configured as the Primary server for the domain . Simply replace with your FQDN (Fully Qualified Domain Name).

Forward Zone File

To add a DNS zone to BIND9, turning BIND9 into a Primary server, first edit /etc/bind/named.conf.local :

If bind will be receiving automatic updates to the file as with DDNS, then use /var/lib/bind/ rather than /etc/bind/ both here and in the copy command below.

Now use an existing zone file as a template to create the /etc/bind/ file:

Edit the new zone file /etc/bind/ and change localhost. to the FQDN of your server, leaving the additional . at the end. Change to the nameserver’s IP Address and root.localhost to a valid email address, but with a . instead of the usual @ symbol, again leaving the . at the end. Change the comment to indicate the domain that this file is for.

Create an A record for the base domain, . Also, create an A record for , the name server in this example:

You must increment the Serial Number every time you make changes to the zone file. If you make multiple changes before restarting BIND9, simply increment the Serial once.

Now, you can add DNS records to the bottom of the zone file. See Common Record Types for details.

Many admins like to use the last date edited as the serial of a zone, such as 2020012100 which is yyyymmddss (where ss is the Serial Number)

Once you have made changes to the zone file BIND9 needs to be restarted for the changes to take effect:

Reverse Zone File

Now that the zone is setup and resolving names to IP Addresses, a Reverse zone needs to be added to allows DNS to resolve an address to a name.

Edit /etc/bind/named.conf.local and add the following:

Replace 1.168.192 with the first three octets of whatever network you are using. Also, name the zone file /etc/bind/db.192 appropriately. It should match the first octet of your network.

Now create the /etc/bind/db.192 file:

Next edit /etc/bind/db.192 changing the same options as /etc/bind/ :

The Serial Number in the Reverse zone needs to be incremented on each change as well. For each A record you configure in /etc/bind/ , that is for a different address, you need to create a PTR record in /etc/bind/db.192 .

After creating the reverse zone file restart BIND9:

Secondary Server

Once a Primary Server has been configured a Secondary Server is highly recommended in order to maintain the availability of the domain should the Primary become unavailable.

First, on the Primary server, the zone transfer needs to be allowed. Add the allow-transfer option to the example Forward and Reverse zone definitions in /etc/bind/named.conf.local :

Replace with the IP Address of your Secondary nameserver.

Restart BIND9 on the Primary server:

Next, on the Secondary server, install the bind9 package the same way as on the Primary. Then edit the /etc/bind/named.conf.local and add the following declarations for the Forward and Reverse zones:

Replace with the IP Address of your Primary nameserver.

Читайте также:  Astra linux как установить ald

Restart BIND9 on the Secondary server:

In /var/log/syslog you should see something similar to the following (some lines have been split to fit the format of this document):

Note: A zone is only transferred if the Serial Number on the Primary is larger than the one on the Secondary. If you want to have your Primary DNS notifying other Secondary DNS Servers of zone changes, you can add also-notify < ipaddress; >; to /etc/bind/named.conf.local as shown in the example below:

The default directory for non-authoritative zone files is /var/cache/bind/ . This directory is also configured in AppArmor to allow the named daemon to write to it. For more information on AppArmor see Security — AppArmor.


This section covers diagnosing problems with DNS and BIND9 configurations.



The first step in testing BIND9 is to add the nameserver’s IP Address to a hosts resolver. The Primary nameserver should be configured as well as another host to double check things. Refer to DNS client configuration for details on adding nameserver addresses to your network clients. In the end your nameserver line in /etc/resolv.conf should be pointing at and you should have a search parameter for your domain. Something like this:

To check which DNS server your local resolver is using, run:

You should also add the IP Address of the Secondary nameserver to your client configuration in case the Primary becomes unavailable.

If you installed the dnsutils package you can test your setup using the DNS lookup utility dig:

After installing BIND9 use dig against the loopback interface to make sure it is listening on port 53. From a terminal prompt:

You should see lines similar to the following in the command output:

If you have configured BIND9 as a Caching nameserver “dig” an outside domain to check the query time:

Note the query time toward the end of the command output:

After a second dig there should be improvement:

Now to demonstrate how applications make use of DNS to resolve a host name use the ping utility to send an ICMP echo request:

This tests if the nameserver can resolve the name to an IP Address. The command output should resemble:


A great way to test your zone files is by using the named-checkzone utility installed with the bind9 package. This utility allows you to make sure the configuration is correct before restarting BIND9 and making the changes live.

To test our example Forward zone file enter the following from a command prompt:

If everything is configured correctly you should see output similar to:

Similarly, to test the Reverse zone file enter the following:

The output should be similar to:

The Serial Number of your zone file will probably be different.

Quick temporary query logging

With the rndc tool, you can quickly turn query logging on and off, without restarting the service or changing the configuration file.

To turn query logging on, run:

Likewise, to turn it off, run:

The logs will be sent to syslog and will show up in /var/log/syslog by default:

The amount of logs generated by enabling querylog could be huge!


BIND9 has a wide variety of logging configuration options available, but the two main ones are channel and category, which configure where logs go, and what information gets logged, respectively.

If no logging options are configured the default configuration is:

Let’s instead configure BIND9 to send debug messages related to DNS queries to a separate file.

We need to configure a channel to specify which file to send the messages to, and a category. In this example, the category will log all queries. Edit /etc/bind/named.conf.local and add the following:

The debug option can be set from 1 to 3. If a level isn’t specified, level 1 is the default.

Since the named daemon runs as the bind user the /var/log/named directory must be created and the ownership changed:

Now restart BIND9 for the changes to take effect:

You should see the file /var/log/named/query.log fill with query information. This is a simple example of the BIND9 logging options. For coverage of advanced options see More Information.

Читайте также:  Sql client для postgresql


Common Record Types

This section covers some of the most common DNS record types.

A record: This record maps an IP Address to a hostname.

CNAME record: Used to create an alias to an existing A record. You cannot create a CNAME record pointing to another CNAME record.

MX record: Used to define where email should be sent to. Must point to an A record, not a CNAME .

NS record: Used to define which servers serve copies of a zone. It must point to an A record, not a CNAME . This is where Primary and Secondary servers are defined.

More Information

DNS and BIND is a popular book now in it’s fifth edition. There is now also a DNS and BIND on IPv6 book.

A great place to ask for BIND9 assistance, and get involved with the Ubuntu Server community, is the #ubuntu-server IRC channel on freenode.


Creating custom domain name instead of localhost in Ubuntu

In ubuntu, the local server by default is referred by the name “localhost”. However, you can also create a custom domain name for your local server instead of using localhost. This article explains the process to create your own custom domain name instead of using localhost. Here ‘’ is created as our domain, which can be taken as per need.

Note: This article is compiled focusing on Linux users but the process is similar for windows user with some minor changes.

Below are the steps to create your own custom domain name instead of using localhost, in Ubuntu:

    Step 1: If you are new to Linux you can install apache server and PHP as given below otherwise skip this step. Apache is used to host PHP script. If you have already installed then also skip this step.

sudo apt-get update
sudo apt-get install apache2 php

You can check your server by typing ‘localhost’ into your browser. If you get apache ubuntu default page i.e you have successfully installed apache2 server.

Step 2:Create a folder which you want to use as root directory of your server. Here I am using /home/md/www as my root directory. You can name it anything you like, naming www is not mandatory.

Step 3: Now one of important step to create domain name in your hosts file under ‘/etc/hosts’. Open your terminal and type the following.

    Install ‘xed’ if not already done using:

Step 4: Now copy default apache2 configuration file for your new domain name configuration as given below. You can do for as many domain as you want. This step is required so that you can see your newly created domain at or your own domain. You can also add in default conf but creating new file is recommended as you may mess up with original default file.

This can be done with the below command:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/

Step 5: Now add entries to our configuration file ‘’ as given in the figure. We are creating /home/md/www as root directory and giving as domain name or server name. All different domain can also be added to this file if you want to create at a different location. Like /home/md/sample etc, a corresponding entry must exist in the /etc/hosts file.

sudo xed /etc/apache2/sites-available/

Step 6:Disable the default configuration and enable our new configuration for newly created domain

sudo a2dissite 000-default.conf
sudo a2ensite
sudo systemctl reload apache2

Step 7:update apache2 config file also in case you get forbidden error. You may get this error because apache2 is not recognizing new root document location /home/md/www, by adding these lines apache know about the root location.

Run this command to edit apache2.conf

Add these lines to your apache2.conf file as given in the figure.

Step 8: Finally, reload the apcahe2 service put this command in your terminal.

Now you can put your files in www directory and enjoy using the PHP server.


Поделиться с друзьями