20.5 Objective 5: Set Up and
Configure Basic DNS Services
The Domain Name Service (DNS) is the
distributed database of name-to-IP-address translations.
Technically, it isn't necessary to use host and domain names
such as www.lpi.org, because it's the actual IP address that the computer requires
to establish communications. DNS was created to allow the use
of more convenient global domain names instead. For example,
when a user enters a DNS name as part of a URL in a browser,
the name portion is sent to a DNS server to be resolved into
an IP address. Once the address is found, it is used to
rewrite the URL and directly fetch the web page.
You must be familiar with the concept
of name resolution on the Internet using DNS.
|
The server daemon that implements DNS is
named, the name daemon
, which is part of the Berkeley Internet Name Daemon package
(BIND). It is named's job to
respond to requests from the resolver and return an IP
address.
20.5.1 The resolver
The code that
resolves names to IP addresses using DNS for client programs
is implemented in system libraries collectively called the
resolver. The resolver uses one of several
means to determine an IP address from a hostname or domain
name:
- Static local files
-
The local file /etc/hosts can
contain name-to-address mapping for a few systems on a
network. However, for large enterprises, using static local
files to manage IP address resolution is problematic due to
the frequent changes required in the data. Updating all of
the client systems would be impractical. This resolution
method is sometimes referred to as the files method.
- Network Information Service
(NIS)
-
Some private
networks use a shared information service that can include
address resolution. This is NIS, or a later version of it
called NIS+, and is referred to as the nis method
of resolution. Both services are beyond the scope of the
LPIC Level 1 exams.
- Domain Name Service
(DNS)
-
Because addresses
and domains on the public Internet change frequently and are
so numerous, static local files can't handle resolution far
outside the enterprise. As already mentioned, DNS is a
distributed database. That is, small portions of the DNS are
managed by local authorities that are responsible only for
their particular slice of the system. As you'd expect, using
DNS for name resolution is called the dns method.
In most cases, /etc/hosts will be used
for name resolution of the local host and perhaps a few other
nearby systems. DNS, perhaps together with NIS in enterprise
environments, will handle everything else.
/etc/hosts and the other files used to
configure the resolver are described in Section
19.2 but here's a quick recap:
- /etc/hosts
-
This file lists statically defined
name-to-address translations.
- /etc/nsswitch.conf (or
/etc/host.conf on older Linux systems)
-
The "name service switch" file
(nsswitch.conf ) defines the order of name server
methods to be used in succession by the resolver (it can
also control other things such as passwords, but those don't
apply here). Typically, this single entry is used to control
name resolution: hosts: files dns
This entry instructs the resolver to resolve
names using /etc/hosts first, and if a match isn't
found, to make a DNS query.
- /etc/resolv.conf
-
This file lists
the IP addresses of name servers: nameserver 127.0.0.1
nameserver 192.168.1.5
nameserver 192.168.250.2
Be sure that you understand how
/etc/nsswitch controls the resolution order, that
/etc/resolv.conf identifies DNS servers by
address, and that /etc/hosts is for local,
statically resolved addresses. Also remember that older
versions of Linux used /etc/host.conf to
configure the resolution order instead of
/etc/nsswitch.conf. |
When the resolver determines that a DNS query
is required, it sends a request containing a domain name to
one of the DNS servers listed in /etc/resolv.conf. The
DNS server uses its own records to find the domain or may
resort to escalating to other DNS servers if the information
isn't readily available. When a result is found by the DNS
servers, the IP address corresponding to the requested name is
returned to the originating client.
20.5.1.1 Domain registration
Domain names are
assigned through a registration process with one of the domain
name registrars available on the Internet (http://www.internic.net/regist.html).
Originally, a single authority managed domain names. As
commercial uses for domain names spread, additional entities
sought the ability to charge for the service of domain
registration, and today there are a number of qualified
registrars (a search for "domain registrar" on one of the
popular search engines will yield a daunting list). Once a
domain name is registered, it is listed in a worldwide
database along with contact information for the owners or
their agents. The name servers that contain DNS information
for the domain can go along with this record.
Most registrants offer a domain name search
service, so you can test desired domain names for
availability. If the domain name you're seeking is available,
you can provide payment information to a registrant and
purchase rights to use the name, usually for one or two years.
20.5.1.2 Using named as a local
caching-only name server
named is often configured to serve DNS
requests even when it does not have local information for a
domain. Instead, it is used for its caching ability. When a
client program requests an address resolution from the local
named
, the daemon first checks its local
cache. If it doesn't find the domain there, it goes to other
DNS servers as usual. If the cache does contain the domain, it
is returned immediately to the client from the cache, which
speeds the resolution process.
Some Linux distributions come with a
caching-only named
configuration pre-installed. If this isn't the case for you,
simply follow the brief instructions in section 3 of the
DNS HOWTO available from http://www.linuxdoc.org/ (or in your
/usr/doc/HOWTO directory). Part of the configuration
includes setting your local system as the default DNS server
in /etc/resolv.conf : nameserver 127.0.0.1
You can test the configuration using the
nslookup utility: # nslookup
Default Server: localhost
Address: 127.0.0.1
> lpi.org
Server: localhost
Address: 127.0.0.1
Name: lpi.org
Address: 209.167.177.93
> lpi.org
Server: localhost
Address: 127.0.0.1
Non-authoritative answer:
Name: lpi.org
Address: 209.167.177.93
> exit
In this example, nslookup
attaches to the default server localhost
(127.0.0.1). In the first query for lpi.org,
the local named must find the
address from external DNS servers. However, the result is
found in the cache on the second try, as indicated by the
Non-authoritative answer response. If this behavior
isn't seen, there may be a problem with the named configuration in
/etc/named.conf.
Some debugging information can be found in
/var/log/messages. For example, the highlighted line in
this short excerpt shows an error in the configuration file:
smp named[216]: starting. named
smp named[216]: cache zone "" (IN) loaded (serial 0)
smp named[216]: Zone "0.0.127.in-addr.arpa"
(file named.local): No default TTL
set using SOA minimum instead
smp named[216]: master zone "0.0.127.in-addr.arpa"
(IN) loaded (serial 1997022700)
smp named[216]: /etc/named.conf:18: can't redefine
channel 'default_syslog'
smp named[216]: listening on [127.0.0.1].53 (lo)
smp named[216]: listening on [192.168.1.30].53 (eth0)
smp named[216]: listening on [172.16.132.1].53 (vmnet1)
smp named[216]: Forwarding source address is [0.0.0.0].1855
smp named[216]: Ready to answer queries.
Note that configuration of a caching-only
name server is beyond the scope of the LPIC Level 1 exams but
is a useful exercise in understanding the configuration of
named.
20.5.1.3 DNS query utilities
A few tools exist to verify the operation of
DNS name resolution. Here's a brief synopsis of nslookup and host, both specifically mentioned in
this Objective. The host
utility does not offer interactive mode but uses a syntax
similar to nslookup.
Syntaxnslookup host [dnsserver]
Description
Look up
host, optionally specifying a particular
dnsserver. nslookup can
be used in either interactive or noninteractive modes. If
host is provided on the command line, noninteractive
mode is used. In interactive mode, a number of commands are
available to control nslookup
(the ls command to nslookup is used in the example). See
the manpage for more details.
Noninteractive example
In this example, nslookup provides immediate results
because host, in this case oreillynet.com, is
provided on the command line: # nslookup oreillynet.com 192.168.1.2
Server: ns1.mydomain.com
Address: 192.168.1.2
Non-authoritative answer:
Name: oreillynet.com
Address: 208.201.239.36
Interactive example
Here, nslookup
is used interactively with DNS server 192.168.1.2 to
find records from yourdomain.com : # nslookup
Default Server: localhost
Address: 127.0.0.1
> server 192.168.1.2
Default Server: ns1.mydomain.com
Address: 192.168.1.2
> ls -a yourdomain.com
[ns1.mydomain.com]
$ORIGIN yourdomain.com.
ipass 2D IN CNAME snoopy
smtp 2D IN CNAME charlie
mail 2D IN CNAME charlie
pop 2D IN CNAME lucy
yourdomain 2D IN CNAME charlie
ww2 2D IN CNAME linus
www 2D IN CNAME sally
> exit
Syntaxhost [options] host [dnsserver]
Description
Look up
host, optionally specifying a particular
dnsserver.
Frequently used options
- -d
-
Enable debugging, showing network
transactions in detail.
- -v
-
Use verbose mode. Results are displayed in
the official domain master file format.
Example# host -v oreillynet.com
Trying null domain
rcode = 0 (Success), ancount=1
The following answer is not authoritative:
oreillynet.com 1991 IN A 208.201.239.36
For authoritative answers, see:
oreillynet.com 167591 IN NS NS1.SONIC.NET
oreillynet.com 167591 IN NS NS.SONGLINE.COM
Additional information:
NS1.SONIC.NET 167591 IN A 208.201.224.11
NS.SONGLINE.COM 167591 IN A 208.201.239.31
Detailed knowledge of nslookup and host are not required, but you
must be familiar with their purpose and basic operation.
|
Additional utilities, such as dig and dnsquery, also can help you with DNS
queries, though they are not mentioned in this exam Objective.
20.5.1.4 BIND Version 4 versus
Version 8 configuration files
It's likely that a Linux administrator will
maintain or install systems running BIND v4.x as well as the
newer v8.x. This LPI Objective requires an understanding of
the differences between the configuration files for these two
BIND versions. Under BIND v4, the configuration file was
called /etc/named.boot. Example
20-5 shows a trivial BIND v4 configuration file.
Example 20-5. BIND v4
named.boot File directory /var/named
cache . root.hints
primary 0.0.127.IN-ADDR.ARPA 127.0.0.zone
primary localhost localhost.zone
In BIND v8, the configuration file was
renamed /etc/named.conf. Example
20-6 shows the equivalent configuration in the BIND v8
format.
Example 20-6. BIND v8
named.conf File // generated by named-bootconf.pl
options {
directory "/var/named";
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "127.0.0.zone";
};
zone "localhost" {
type master;
file "localhost.zone";
}; };
As you can see, the information contained in
the files is largely the same, but the v8 format contains a
more formal structure. For those upgrading to Version 8, the
Perl script named-bootconf.pl is included in the v8
package to upgrade named.boot to named.conf.
You should be generally familiar with
the structural differences between the configuration
files for BIND v4 and v8. However, detailed named configuration is beyond
the scope of the LPIC Level 1 exams.
|
|