109.4. Configure client side DNS

Weight: 2

Description: Candidates should be able to configure DNS on a client host.

Key Knowledge Areas:

  • Query remote DNS servers

  • Configure local name resolution and use remote DNS servers

  • Modify the order in which name resolution is done

Terms and Utilities:

  • /etc/hosts

  • /etc/resolv.conf

  • /etc/nsswitch.conf

  • host

  • dig

  • getent

We have seen all of these topics in previous lessons, so in this lesson first we take a quick look at them and then we will talk about steps of Name Resolution on client side.


The DNS (Domain Name System) resolves the names of internet sites with their underlying IP addresses .

Query remote DNS servers


Dig (Domain Information Groper) is a powerful command-line tool for querying DNS name servers. It is the most commonly used tool among system administrators for troubleshooting DNS problems because of its flexibility and ease of use.

In its simplest form, when used to query a single host (domain) without any additional options, the dig command is pretty verbose.

[email protected]:~# dig lpi.org
; <<>> DiG 9.10.3-P4-Ubuntu <<>> lpi.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23520
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
; EDNS: version: 0, flags:; udp: 512
;lpi.org. IN A
lpi.org. 599 IN A
;; Query time: 501 msec
;; WHEN: Sat Feb 29 17:16:01 +0330 2020
;; MSG SIZE rcvd: 52

don't forget, by default, dig sends the DNS query to name servers listed in the resolver(/etc/resolv.conf), how ever, we can query different DNS server usnig @.


the host command is a DNS lookup utility, finding the IP address of a domain name. It also performs reverse lookups, finding the domain name associated with an IP address.

[email protected]:~# host yahoo.com
yahoo.com has address
yahoo.com has address
yahoo.com has address
yahoo.com has address
yahoo.com has address
yahoo.com has address
yahoo.com has IPv6 address 2001:4998:c:1023::4
yahoo.com has IPv6 address 2001:4998:58:1836::10
yahoo.com has IPv6 address 2001:4998:44:41d::4
yahoo.com has IPv6 address 2001:4998:58:1836::11
yahoo.com has IPv6 address 2001:4998:44:41d::3
yahoo.com has IPv6 address 2001:4998:c:1023::5
yahoo.com mail is handled by 1 mta6.am0.yahoodns.net.
yahoo.com mail is handled by 1 mta7.am0.yahoodns.net.
yahoo.com mail is handled by 1 mta5.am0.yahoodns.net.

And vica-versa To find out the hostname of the host with the IP address:

[email protected]:~# host domain name pointer media-router-fp2.prod1.media.vip.bf1.yahoo.com.

If no arguments or options are given, host prints a short summary of its command line arguments and options:

Client Name Resolution

When client wants to access any other computers in the network, first it needs to know about target ip address. There are different places inside os which keeps information, lets review them togther :


If we don’t want to use a DNS server for name resolution, we can use the /etc/hosts file for the purpose of name resolution. This is a simple text file that contains IP addresses to hostnames mappings. Each line consists of an IP address, followed by one or more hostnames(ubuntu16):

[email protected]:~# cat /etc/hosts localhost ybyntu16-1
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

you can see the typical default content of the hosts file that contains entries for the loopback addresses. To set up our own mappings, add the entries in the form of IP_ADDRESS HOSTNAME :

[email protected]:~# ping thisismyexample.com
ping: unknown host thisismyexample.com
[email protected]:~# vim /etc/hosts
[email protected]:~# cat /etc/hosts localhost ybyntu16-1
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# this is my example: thisismyexample

The line thisismyexample.com will map the IP address of to the thisismyexample.com hostname . We can now use the thisismyexample hostname to communicate with the remote machine:

[email protected]:~# ping thisismyexample -c3
PING thisismyexample ( 56(84) bytes of data.
64 bytes from thisismyexample ( icmp_seq=1 ttl=63 time=281 ms
64 bytes from thisismyexample ( icmp_seq=2 ttl=63 time=324 ms
64 bytes from thisismyexample ( icmp_seq=3 ttl=63 time=262 ms
--- thisismyexample ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 262.673/289.474/324.462/25.881 ms


/etc/resolv.conf contain information about current system DNS server. Altough we can manually modify it but don't forget our settings would not be permanent in last until next reboot.

[email protected]:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
search mydomain.local


The /etc/nsswitch.conf file defines the order in which to contact different name services. For Internet use, it is important that dns shows up in the "hosts" line:

[email protected]:~# cat /etc/nsswitch.conf | grep hosts
hosts: files mdns4_minimal [NOTFOUND=return] dns

The hosts line specifies the order in which various name resolution services will be tried. The default is to:

  • files reads /etc/hosts

  • mdns4_minimal resolves IPv4 addresses with multicast DNS ONLY if the requested hostname ends with .local.

  • [NOTFOUND=return] stops the resolving process if that .local hostname was not found

  • dns probably does DNS resolution

you can change the the order of name resolution here.


As we said getent is a Linux command that helps the user to get the entries in a number of important text files called databases. This includes the passwd and the group of databases which stores the user information. The fact is that The getent command displays entries from databases supported by the Name Service Switch libraries, which are configured in /etc/nsswitch.conf.

[email protected]:~# getent hosts thisismyexample thisismyexample