|  The paper is divided into five sections: 
The first briefly explains what the Internet means and how it came about.  The second will help you understand some technical expressions.
 The third is dedicated to the most important protocols of the Internet: TCP
and IP.
 The fourth will help you understand the function of DNS.
 The fifth section is the practical part, explaining 
the creation of the Domain Name Service (DNS) 
for a local network with a gateway, using the 
LINUX operating system, how it was implemented on the author's 
network.  In this manner the document serves as a basic 
introduction for novices and offers a practical reference for 
the advanced.
 
1 The ARPANET, the origin of the World Wide Web
2 Understanding a few
technical expressions   
3 TCP/IP 
   3.1 IP 
   3.2 TCP (Transmission Control Protocol) 
4  The Domain Name System (DNS) 
   4.1 A summary of the system  
   4.2 Why is DNS necessary?
5  Installing a Domain Name Server
   5.1 Database files
   5.2 Resource records
   5.3  The complete files for our
fictitious domain
    5.4 Abbreviations
  5.5  The Resolve Library
   5.6  Testing your setup with nslookup 
   (1) The ARPANET, the origin of
the World Wide Web  The "Internet" means all of the interconnected 
computer networks which were a result of the ARPANET.
The ARPANET was created in the year 1969 from an American
project of the DARPA (Defense Advanced Research Project Agency).
When the ARPANET moved beyond it's experimental state, 
the basic protocols of TCP/IP were developed, which were nominated 
as the military standard and all of the institutions
that made up the ARPANET had to change to the new protocols.  To 
simplify this change, the DARPA hired the company Bolt, 
Beranek &Newman (BBN) for the integration of TCP/IP in the 
Berkeley-UNIX system (BSD).  It's because of this TCP/IP and the 
UNIX operating system came together.
  In the year 1983, the ARPANET was split.  The result was the 
MILNET, as part of the Defense Data Network (DDN), and another smaller 
ARPANET.  The combination consisting of the MILNET and the ARPANET 
controlled the INTERNET.  The ARPANET disappeared in the year 1990 
opening the way for the Internet, which includes a large number of 
networks around the world.     (2) Understanding a few technical expressions
   Imagine that your are sitting in front of a computer that is
part of a local area network (LAN) of the mathematics department of your
university (Figure 1).   The mathematics LAN is connected by the backbone (principal node)
to the physics department which is located in another building.  You want to
send data to a friend that is working on the Physics department.  It's
important to know that your computer and your friend's have unique names on the
university network (the same as all other computers on the Internet).  For
example, yours is named Einstein and your friend's is named Edison.  For the
two physically independent networks to communicate, they need a
gateway.  A gateway is a computer that is capable of uniting physically
independent networks.  In this case we need two gateways - one for the local
mathematics network and one for the physics network.  From now on we'll call the
mathematics gateway "math" and the physics gateway "phys".
  Figure 1: The path of a datagram from Einstein to Edison
 Because Einstein's software (rlogin, telnet, ftp etc.) can't send data (data
packets) directly to Edison, which is found on a physically independent network,
you have to rely on the gateway to transport the packets to the corresponding
destination.  In other words, the gateway "math$quot; sends the packets to
the gateway "phys", that has the same function the the physics
network. The transfer goes through the university backbone and "phys"
finally delivers the data to Edison. This scheme of data transmission to a 
remote host (computer on the network) is call Routing and the data or
packets of data are called datagrams.  (3) TCP/IP  (3.1) IP    Datagrams, as the smallest unit of the data transmission, 
are exchanged by a protocol - the Internet Protocol (IP), 
that is completely independent from the hardware. 
In this manner we come to the principal advantage of the IP
protocol, uniting physically separated networks in an apparently 
homogeneous network.  The principal functions of IP:  
    Define datagrams: to send a file over the network, it is divided
	in smaller parts, that is to say blocks of data or packets.
    Establish the Internet address: IP incorporates this information
        in the header, together with its own identification. Routing datagrams to remote computers : if a datagram is sent
	to to a computer that is not found on the same network, it is send
	through a gateway to arrive at the indicated destination.  But on the other hand, IP does not use transmission control information
(handshake), in other words, IP transports packets from one place to another
without proper control over if all the packets are received in the correct
order.  We'll handle this problem later.  Now we have an idea about transmission software (Routing).  Remember
that our computer is named Einstein.  Network computers have names because they
are easier to remember than a sequence of numbers.   IP has an address scheme that is independent from the hardware.  This
assigns a unique 32 bit number to a host; the IP-address (IP).  The
IP-address is represented by four decimal numbers (octets) separated by 
periods.  Einstein, for example, could have the hardware address 0x95c0c02, 
which would appear in the form 149.176.12.7.   It needs to be understood that have three distinct addresses:  
    The host name: EinsteinThe IP-address: 149.176.17.7And the hardware address. In our case this will be a 
        Ethernet card with the unique address 0x952C0C02. The Ethernet card address occupies a port on the 
operating system; it is usually eth0-n under Linux.  Serial 
ports, for example, have the name cua0-n or ttyS0-n.  To be 
exact, it shouldn't be said that your computer or the host has the 
name Einstein, but that refers to the corresponding hardware interface.
 You know now that the Internet Protocol (IP) transmits data 
between computers in the form of datagrams.  Each datagram is 
transmitted to the address on the Internet or other local network, 
that is indicated in the header of the datagram.  The destination 
address is a standard 32 Bit address (IP) and contains 
sufficient information to unequivocally identify 
a computer on the network.  An IP-address is made up of two parts:  
    The network addressAnd the address of the computer (host) on this 
        network.  The number of the host addresses depends on the size of the 
network. To fulfill these different requirements, different network 
classes were created that define separations of different IP 
addresses. 
 
    
        | Class A: |  | Class A includes networks from 1.0.0.0 to 127.0.0.0.
        The number of this type of network is found in the first
        octet.  There are 24 bits left to define the hosts, which
        is enough for approximately 1.6 million computers. |  
        | Class B: |  | Class B includes networks from 128.0.0.0 to 191.255.0.0. 
        The number of this type of network is found in the first
        two octets. This allows 16,320 networks
        with 65,024 computers on each one. |  
        | Class C: |  | Class C includes the networks from 192.0.0.0 to
        223.255.255.0 .  The number of this type of network is found in the 
        first three octets. This allows 2 million networks
        with around 254 hosts. |  
        | Class D, E and F: |  | Addresses, that are in the range of 224.0.0.0 to
        225.0.0.0 are experimental, or are reserved for 
        future use and don't define any network. |  Returning to our example, you can see that
Einstein with the IP-address of 149.176.12.7 forms part of a class B network:
149.176.0.0 and the host computer 12.7.  It is important
to know that the host address cannot have a 0 or a 255, since
these are reserve for special purposes.  The host address,
consisting only of zeros, identifies the network (149.176.0.0).
If the host's numbers are 255 (149.176.255.255) this indicates the 
broadcast (radio) address, since data that is sent to this address 
is received by all of the computers on the 149.176.0.0 network.  At the same time, there are two reserved network addresses: 0.0.0.0,
which is named the default route and 127.0.0.0 which is the
loopback address.
The default route has to do with the manner that IP routes the datagrams
(note: masquerading).  The most important for now is the 127.0.0.0 network, which is
reserved for IP traffic that occurs on your own computer.
The IP-address 127.0.0.1 usually refers to the interface on your
computer that is called the loopback interface, which functions
like a closed circuit.  Each packet sent there is returned 
immediately.  In this manner, the loopback serves to test
network software without being obligated to use the
"real" network. "Ping localhost" or "ping 127.0.0.1" is a
common test under Linux to see if TCP/IP is configured correctly.
 The IP-address that you will have, in the end, is decided by a
central institution called NIC (Network Information
Center). The best solution is to ask your Internet Service 
provider to reserve the IP-address.  If you are sure that
your network will never be connected to the Internet, you
can choose any IP-address.  But to be sure that no data packets
escape to the Internet, it important to use an IP-address that
is only valid in a private network and cannot be used on Internet
systems.  These addresses are:  
    Class A: 10.0.0.0Class B: 172.16.0.0 to 172.31.0.0Class C: 192.168.0.0 Never the less, it is possible to install a gateway to the Internet.
In other words, the external address is known on the Internet;
but the computers on your network normally can't access them, because 
their IP-addresses aren't transmitted on the Internet.  The hosts
on your network, on the other hand, will have access to the WWW (World 
Wide Web).     (3.2) TCP (Transmission
Control Protocol)  It was mentioned earlier, the Internet Protocol doesn't provide
transmission control; this is what TCP does.  TCP is a 
byte stream, reliable,
and connection oriented protocol.  
    We talk about byte stream, because
        TCP considers data as a unit of unseparated packets, 
        instead of a sequence of independent packets.It is reliable because it verifies if all of the
        datagrams have arrived.  In the case that one is lost,
        the sender receives the corresponding information from the
        receiver; and it has to retransmit the lost packets until
        all are received by the receiver.Connection oriented means that TCP 
        establishes a logical connection between two computers,
        in a way that before the transmission of the datagrams,
        TCP transmits control information (handshake) between
        the sender and the receiver initiating the communication
        between the two hosts. Because of this, TCP takes care of the correct order of the data.
    (4) The Domain Name System
        (DNS)  (4.1) A summary of the
system  The Domain Name System (DNS) is basically a 
distributed database of computers that form part of a network.
This makes local control of all of the database segments easy, which 
allows each segment to be available through the network in a
client-server scheme.  The Name Server is a program that forms the
server part of the client-server mechanism of DNS.   The Name Servers
have information about a given segment of the database, which it makes 
available for clients, named 
Resolvers. Many times the Resolvers
only consist of library routines, that create queries and send
them to the Name Server through the network.  The DNS database structure is shown in 
figure 2. The whole database looks like an
inverted tree with the root on the top.
The name of the root is the tag NULL, but this is written with
a single period ("."). Every node on the 
tree represents both a partition of the whole database, as well
as a DNS domain. From now on, each domain can be divided 
in partitions that are called subdomains that are derived as
children of the parent nodes.   Figure 2: The DNS database
 Each domain is marked in a way that it has a tag that identifies
it relative to their domain parent.  The domain also possesses
a domain name, that identifies their position in the database,
just as the root directory specifies its place in a computer
file system.  In DNS, the complete domain name is a sequence of tags, beginning
with the domain until the root, separating the tags with periods
"." (for example: einstein.mathematics.ac.edu). 
Allowing each domain to be administrated by a different organization.
Each organization can divide their domain in various subdomains, whose
administration can be carried out by other organizations  The Network Information Center, for example, administers
the domain "edu" (educational) but passes the authority
over the sub domain "ac.edu" (academic) to the 
university, which authorizes the mathematics department to
administrate the following domain: "mathematics.ac.edu"
(Figure 3).
   Figure 3: Maintaining Subdomains
 Finally, is should be mentioned that a domain can have 
subdomains as well as hosts.  Each host on a network has a Domain 
Name that contains information about the host, just as the IP-address 
or how the Routing of mail works, etc.  A host 
also can have one or more Domain name aliases that are simply
an indicator of a domain name of the canonical domain name. An
example: if your wife is named Maria Elizabeth, some times you
will call here Maria and other times Elizabeth.  Even though you
use different names, it refers to the same person.  The domain organizations are free to chose the names
in their domain.  It does not matter which name is used, it is certain
that it won't cause a conflict with another name, because it has
a unique Domain name attached to the end.  In this manner, two
hosts named einstein can exist in the university, for example,
packets from einstein.physics.ac.edu will always find their 
way to einstein.mathematics.ac.edu, because they address each other
from different parent domains.     (4.2) Why is DNS
necessary?  To resolve domain names and IP-addresses and to be able to locate
host on remote networks.  As was mentioned earlier, it is 
easier to remember names than numbers.  Especially when you talk 
about a quantity of addresses as immense as the Internet.  Computers, on the other hand, work 
perfectly with numbers like IP-addresses.  What happens
when you enter the Internet putting an address like, for example,
http://www.altavista.com, is that your navigator sends a request 
to your provider's Domain Server and this tries to resolve the
domain name with the corresponding IP-address.
In the case that your provider isn't authorized for this zone,
is transmits the request to the authorized domain until it 
arrives at the indicated domain. 
(We detail a search with the address
"einstein.mathematics.ac.edu" in Figure 4).  Figure 4: Resolving einstein.mathematics.ac.edu on
the Internet
 
 This means that each domain server has the
complete information of the zone that it is authorized and
also has basic information about other zones.  When a 
request is sent to a zone that is outside of the 
authorized zone, your server at least knows where to look.
This can mean that the address request 
has to go through various domain servers until
you contact the the requested destination.  Even if you knew the destination IP-address, it is
essential to consult other domain servers if your
computer is not found in the same zone.  In this manner it is
easy to imagine why the Domain Name System 
couldn't exist on one centralized database only.  First
it would take too much time to find a server among millions
of others and second there would be a fairly long line in the case of
thousands of simultaneous requests from all over the world.  Additionally
it wouldn't make sense to go to a distant server to communicate
with a host in the same zone.  Up to now we've talked of the mapping of names
to addresses.  But, what happens if you have the
IP-address and you want to know the name of this domain?  To 
solve this problem the "in-addr.arpa" (Figure 5)
domain was created.
 This domain is called reverse domain and the 
resolution of IP-addresses to domain names is named reverse
map (reverse mapping or reverse lookup).  The reverse domain 
name is created by putting the numbers of the IP-address in
reverse order and adding in-addr.arpa to the end.  For example: Remember that the IP-address of Einstein from the 
mathematics department is "149.176.12.7" with the domain
name of "einstein.mathematics.ac.edu".  The domain "mathematics.ac.edu" would then have the
reverse domain name of: "12.176.149.in-addr.arpa" and
the computer einstein.mathematics.ac.edu correspondingly
is made with "7.12.176.149.in-addr.arpa".  
 Figure 5: The reverse map    (5) Installing a
Domain Name Server  for a 
local network (LAN) with a gateway in the LINUX Operating system
using BIND (Berkeley Internet Name Daemon).
  The following is based on the assumption that
you know how to install and configure network cards under LINUX.  The
commands "ifconfig" and "ping localhost" can
test a correct configuration for each computer.
Now we will dedicate ourselves to connecting your computers using DNS
configuring BIND.  You have to have installed the BIND package
that has named (pronounce name-d = the server daemon) 
on the computer that will work as the domain server.
In the chapter we will install a fictitious domain.
This way you only have to replace the IP-addresses, the names
of the computers and a couple of additions details of your network.    Figure 6: The Alcomato Distributions network
 Our fictitious domain is for a beverage wholesaler.  The 
company "Alcomato Distributions", specializing in 
beer and liquor, was given the domain name
"alcomat.com" after having contacted NIS.
Alcomato Distributions has two Ethernets with the network numbers
192.249.249 and 192.253.253 (Figure 6).  Part of the host table (usually the /etc/hosts file) 
shows the following: 
 
    
        | /etc/hosts |  
        | 127.0.0.1       localhost
# These are the computers for the liquor
192.249.249.2   whisky.alcomat.com              whisky 
192.249.249.3   brandy.alcomat.com              brandy
192.249.249.4   vodka.alcomat.com               vodka
        .........
# These are the computers for the beer
192.253.253.2   mahou.alcomat.com               mahou
192.253.253.3   augustiner.alcomat.com          augustiner
192.253.253.4   polar.alcomat.com               polar
        ..........
# The following defines the gateway for the two Ethernets
192.249.249.1   tubo.alcomat.com tubo   tu       tub249
192.253.253.1   tubo.alcomat.com tubo   tu       tub253 |    (5.1) Database files 
  The first step will be to translate the host table to 
equivalent DNS data.  DNS consists of various files: a
file changes all of the host names to IP-addresses.
Other files re-change the IP-addresses to host names.  The
search for IP-addresses from host names is called  reverse
mapping and each network has their own file 
to reverse map.  I have called the file that changes names to addresses named.hosts. The files that
change the addresses to hosts I will call named.249 and named.253
corresponding to the two networks of the fictitious company.  You
can choose any different name for these files.  
Never the less, I will call them DNS database files.  Apart from this, there exist two database files that are more or
less equal for each server.  These I will call
named.cache and named.local.  To unite all the database files, the Name Server
requires a file that begins with  using BIND, this
file is usually /etc/named.boot.
The database files are specific for DNS.  The 
starting file is specific for the Name Server
implementation  in our case we will use BIND.     (5.2) Resource records
 The majority of the components of these files are called DNS
resource records.  According to DNS references, the 
resource records have the following order:  
    SOA record: Indicates the authority for this
        domain dataNS record: Indicates the Name Server for this
        domain The following records show host information on this domain:  
    A: name to address mapPTR: address to name map (reverse
        map)CNAME: canonical name (official name for the
        aliases)TXT: text informationRP: person responsible Comments: Using comments and blank lines makes 
the DNS files easier to read.  The comments
begin with a period and coma and they end at the end of the
line. Name Servers ignore comments as well as blank lines. SOA record: The first resource record of each database file is the 
SOA record (start of authority). The SOA record indicates that this
Name Server is the best source of information for the 
hosts within this domain.  Our Name Server -
augustiner - is authorized for the domain
"alcomat.com" because of the SOA record.  An SOA record is required
for named.hosts, named.249, and named 253.  We will adjust the following
SOA record in the "named.hosts" file.
 
 
    
        | SOA
        record |  
        | alcomat.com.   IN SOA augustiner.alcomat.com.  juan.mahou.alcomat.com. (
                                  1          ; Serial for updates
                                  10800      ; Refresh after 3 hours
                                  3600       ; Retry after 1 hours
                                  604800     ; Expire after 1 week
                                  86400 )    ; Minimum TTL of 1 week |  The name "alcomat.com" should be in the first 
column. Is it very important to put a period
at the end of the names! If not, the domain 
"alcomat.com" is automatically added, which
wouldn't mean anything.  I will give you the explanation when
we deal withabbreviations. The "IN" Is put for the Internet.  Other classes exist,
but none is commonly used.  The first name after SOA, augustiner.alcomat.com, is
the name of the Name Server for this information.  The second
name, juan.mahou.alcomat.com, is the mail address of the
person in charge of this information (if you replace the first
period "." with a @). BIND provides another type of
resource record for this purpose: RP (responsible person).  The parenthesis permit the SOA record to extend over
various lines.  The majority of the lines between the 
parenthesis serve to inform secondary Name Servers,
which we don't use in our fictitious network and will
probably be treated in the next edition.  Similar SOA records are inserted in the files named.249 and named.253. Note that in these
files we change the first name of the SOA record of alcomat.com
to the appropriate name of the domain in-addr.arpa:
249.249.192.in-addr.arpa. and 253.253.192.in-addr.arpa.  NS record: The next line that we add to each database file 
is the NS record (Name Server).  The NS
records of our domain are:
 
 
    
        | NS
        record |  
        | alcomat.com.      IN NS     augustiner.alcomat.com.  alcomat.com.      IN NS     tubo.alcomat.com.  |  These records indicate that two Name Servers exist 
for the domain "alcomat.com". The Name Servers
and found on the hosts "augustiner" and
"tubo". Hosts like "tubo", (our
gateway) that have more than one network interface (multihomed
hosts), in our case two Ethernet cards, are excellent 
choices for Name Servers, since they are well 
connected: First they are directly accessible from hosts on more
then one network and in some cases they also serve as routers, and they
aren't down very much since they are monitored closely.  Just the same as with the SOA records, We will add NS records to the
files named.249 and named.253.  Address and Alias records: The following step is the mapping of addresses to names. We add 
the following resource records to the named.hosts file.
   
    
        | A
        record |  
        | ;
;host addresses
;
localhost.alcomat.com.   IN A      127.0.0.1
mahou.alcomat.com.       IN A      192.253.253.2
augustiner.alcomat.com.  IN A      192.253.253.3
polar.alcomat.com.       IN A      192.253.253.4
;
; multiple residency hosts 
;
tubo.alcomat.com.        IN A      192.253.253.1
tubo.alcomat.com.        IN A      192.249.249.1
;
; Aliases
;
edel.alcomat.com.        IN CNAME  augustiner.alcomat.com.
pol.alcomat.com.         IN CNAME  polar.alcomat.com.
tu.alcomat.com.          IN CNAME  tubo.alcomat.com.
tub249.alcomat.com.      IN A      192.249.249.1
tub253.alcomat.com.      IN A      192.253.253.1 |  The first two blocks are not going to surprise you.  The
"A" Indicates the address and each resource record
maps a name to an address.  Tubo acts as a Router and has
two addresses associated with its name and because of this it has two
resource records.  The third block contains the alias table.  For the 
first two aliases we will create a "CNAME" (canonical name,
fully qualified host name)
resource record. Never the less, we will create address records for
the other two aliases.  When a Name Server looks for a name and it finds a
corresponding CNAME-record, it replaces the name with the first order 
host name and continues looking for the new name. If for 
example the Name Server looks for "tu", and finds a
CNAME record indicating "tubo". Then "tubo" 
is looked for, and the addresses 192.249.249.1 and 192.253.253.1
are returned  The last two lines solve a special problem.
Let's suppose that we have a gateway, "tubo" and you
want to test one of the interfaces.  One very common solution
is, send a "ping" to the interface to verify that
it is responding.  When you send a "ping tubo",
the Name Server returns both directions.  In our 
table we didn't put aliases for tub249 and tub253, because it would
result in both addresses being returned the alias is looked for.  To
avoid it, we only use the address record "A" to
identify the two interfaces.  To prove that the tubo's interface
192.249.249.1 is operational, we send a "ping tub249",  
since this refers to only one address. It functions
the same with "tub253".  Let's form a general rule for this:  
    
        | When a host has more than one
        network interface (multihomed host), an address record
        "A" is created for each alias that is unique to
        an address. |  Putting what was said aside, don't use names like tub249 or tub253
to identify users.  These only serve with the purpose of system
Administration and they are not of any use to the user.     PTR Records Now we will create the address to name maps.  The named.249
file maps addresses to host names for the network
192.249.249. The resource record for this map is the PTR
(pointer) record.  A record exists for each host 
on this network.  (Remember that in DNS names for addresses
are looked for).  The address is placed in reverse order and
in-addr.arpa is joined to it.
 The following records are the PTR records for the 192.249.249 
network. 
 
    
        | PTR
        record |  
        | 1.249.249.192.in-addr.arpa.     IN PTR     tubo.alcomat.com. 2.249.249.192.in-addr.arpa.     IN PTR     whisky.alcomat.com. 3.249.249.192.in-addr.arpa.     IN PTR     brandy.alcomat.com. 4.249.249.192.in-addr.arpa.     IN PTR     vodka.alcomat.com. |    Remember that tubo has two addresses, since it has two
network interfaces.  Never the less only one appears, since
this file only shows the direct connection to the 192.249.249
network and tubo only has one connection there with the interface
192.249.249.1.  It functions the same for the named.253 file.
    (5.3) The complete files
for our fictitious domain   The hosts table file for
the alcomat.com domain 
    
        | named.hosts |  
        | alcomat.com.   IN SOA augustiner.alcomat.com.  juan.mahou.alcomat.com. (
                                  1          ; Serial for updates
                                  10800      ; Refresh after 3 hours
                                  3600       ; Retry after 1 hours
                                  604800     ; Expire after 1 week
                                  86400 )    ; Minimum TTL of 1 week ;
; Our Name Servers
;
alcomat.com.             IN NS     augustiner.alcomat.com. 
alcomat.com.             IN NS     tubo.alcomat.com. 
;
; Host addresses
;
localhost.alcomat.com.   IN A      127.0.0.1
mahou.alcomat.com.       IN A      192.253.253.2
augustiner.alcomat.com.  IN A      192.253.253.3
polar.alcomat.com.       IN A      192.253.253.4
whisky.alcomat.com.      IN A      192.249.249.2
brandy.alcomat.com.      IN A      192.249.249.3
vodka.alcomat.com.       IN A      192.249.249.4
;
; Multiple residence hosts
;
tubo.alcomat.com.        IN A      192.253.253.1
tubo.alcomat.com.        IN A      192.249.249.1
;
; Aliases
;
edel.alcomat.com.        IN CNAME  augustiner.alcomat.com.
pol.alcomat.com.         IN CNAME  polar.alcomat.com.
tu.alcomat.com.          IN CNAME  tubo.alcomat.com.
tub249.alcomat.com.      IN A      192.249.249.1
tub253.alcomat.com.      IN A      192.253.253.1 |    The named.249 and
named.253 files for mapping addresses to host names 
    
        | named.249 |  
        | 249.249.192.in-addr.arpa. IN SOA augustiner.alcomat.com.  juan.mahou.alcomat.com. (
                                  1          ; Serial for updates
                                  10800      ; Refresh after 3 hours
                                  3600       ; Retry after 1 hours
                                  604800     ; Expire after 1 week
                                  86400 )    ; Minimum TTL of 1 week ;
; Name Servers
;
249.249.192.in-addr.arpa.         IN NS      augustiner.alcomat.com. 
249.249.192.in-addr.arpa.         IN NS      tubo.alcomat.com. 
;
; Address to name map
;
1.249.249.192.in-addr.arpa.       IN PTR     tubo.alcomat.com.
2.249.249.192.in-addr.arpa.       IN PTR     whisky.alcomat.com.
3.249.249.192.in-addr.arpa.       IN PTR     brandy.alcomat.com.
4.249.249.192.in-addr.arpa.       IN PTR     vodka.alcomat.com. |    
    
        | named.253 |  
        | 253.253.192.in-addr.arpa. IN SOA augustiner.alcomat.com.  juan.mahou.alcomat.com. (
                                  1          ; Serial for updates
                                  10800      ; Refresh after 3 hours
                                  3600       ; Retry after 1 hours
                                  604800     ; Expire after 1 week
                                  86400 )    ; Minimum TTL of 1 week ;
; Name Servers
;
253.253.192.in-addr.arpa.         IN NS      augustiner.alcomat.com. 
253.253.192.in-addr.arpa.         IN NS      tubo.alcomat.com. 
;
; Address to name map
;
1.253.253.192.in-addr.arpa.       IN PTR     tubo.alcomat.com.
2.253.253.192.in-addr.arpa.       IN PTR     mahou.alcomat.com.
3.253.253.192.in-addr.arpa.       IN PTR     augustiner.alcomat.com.
4.253.253.192.in-addr.arpa.       IN PTR     polar.alcomat.com. |    The loopback address
 A Name Server needs an additional file for the
"loopback network": named.local. This 
is the address that hosts use for direct traffic with
themselves.  The loopback network is (almost) always 127.0.0 and the
host number (almost) always 127.0.0.1.
 
    
        | named.local |  
        | 0.0.127.in-addr.arpa.     IN SOA augustiner.alcomat.com.  juan.mahou.alcomat.com. (
                                  1          ; Serial for updates
                                  10800      ; Refresh after 3 hours
                                  3600       ; Retry after 1 hours
                                  604800     ; Expire after 1 week
                                  86400 )    ; Minimum TTL of 1 week ;
; Name Servers
;
0.0.127.in-addr.arpa.         IN NS      augustiner.alcomat.com. 
0.0.127.in-addr.arpa.         IN NS      tubo.alcomat.com. 
;
; Address to name map
;
0.0.127.in-addr.arpa.         IN PTR     localhost. |    The named.cache file  This file contains the address and names of all the
root Name Servers on the the Internet.
If you don't think you'll connect your network to the Internet,
it's not necessary to install it.Even though the BIND software package normally has this file
(named.root or named.cache), it's best to go to the Internet
host ftp.ts.internic.net(198.41.0.5)
through anonymous ftp to download the current file.  
Since this file is the same for (almost) each Name Server and
it is automatically installed with BIND, it won't be explained.
The only thing that you need to know is what name this file has
in your version of BIND.
 
 The boot file: named.boot Finally, what we lack is a file that unites
our database files, in other words, the Name Server
expects a file that shows it where the database 
files are located.
BIND looks for the file /etc/named.boot.
The database files in our example are found in 
the directory /usr/local/named. You are free
to choose another directory, but it's recommended not to put the
files in the root file system because of lack of space.
 
    
        | named.boot |  
        | directory	/usr/local/named primary    alcomat.com                named.hosts
primary    249.249.192.in-addr.arpa   named.249
primary    253.253.192-in-addr.arpa   named.253
primary    0.0.127.in-addr.arpa       named.local
cache      .                          named.cache |  Once the files are installed, you should activate the 
"named" daemon in the system boot file so that
it automatically starts up when the system boots.    (5.4) Abbreviations Up until now, we've created very detailed files
to facilitate the explanation.  Various abbreviations exist that 
are normally used. The originThe second column of the "named.boot" boot file
always indicates a domain.  This domain is the key for the
most useful abbreviation and it shows the origin of
all of the information within this database file.
 The origin is joined
to all the names within the files that don't end with 
a period! (mahou.aclomat.com would result
in mahou.alcomat.com.alcomat.com). The origin is different for
each database file.
 The address of "mahou" from named.hosts:
mahou.alcomat.com.	IN A	192.253.253.2
would have to be able to be written:
mahou			IN A	192.253.253.2 
We write the following in the named.249 file: 
2.249.249.192.in-addr.arpa.	IN PTR	whisky.alcomat.com.
because 249.249.192.in-addr.arpa is the origin, we will have to be
able to write:
2				IN PTR	whisky.alcomat.com.					 The notation @If the domain name is the same as the origin, it can be
determined with "@". This appear very frequently
with the SOA record:
 @	   IN SOA augustiner.alcomat.com.  juan.mahou.alcomat.com. (
                                  1          ; Serial for updates
                                  10800      ; Refresh after 3 hours
                                  3600       ; Retry after 1 hours
                                  604800     ; Expire after 1 week
                                  86400 )    ; Minimum TTL of 1 week The repetition of previous namesIf the first column of a resource record consists of a
tab or a space, the name of the previous resource is used.
This makes work easier when handling multiple
resource records for a name:
 tubo			IN A      192.253.253.1
			IN A      192.249.249.1 Finally, I'll present the named.hosts file in abbreviated
form.  It's a good exercise to make the changes on the
remain files ;-)) 
    
        | named.hosts
        (abbreviated) |  
        | @   IN SOA 	augustiner  	juan.mahou (
                                  1          ; Serial for updates
                                  10800      ; Refresh after 3 hours
                                  3600       ; Retry after 1 hours
                                  604800     ; Expire after 1 week
                                  86400 )    ; Minimum TTL of 1 week ;
; Our Name Servers (the name @ is included)
;
                            IN NS     augustiner.alcomat.com
                            IN NS     tubo.alcomat.com. 
; Only in this file can the domain name be eliminated.(alcomat.com)
; of the Name
Servers, because named.hosts has the same origin!
;
; Host addresses
;
localhost                   IN A      127.0.0.1
mahou                       IN A      192.253.253.2
augustiner                  IN A      192.253.253.3
polar                       IN A      192.253.253.4
whisky                      IN A      192.249.249.2
brandy                      IN A      192.249.249.3
vodka                       IN A      192.249.249.4
tubo                        IN A      192.253.253.1
                            IN A      192.249.249.1
;
; Hosts with multiple residency
;
tub249                      IN A      192.249.249.1
tub253                      IN A      192.253.253.1
;
; Aliases
;
edel                        IN CNAME  augustiner
pol                         IN CNAME  polar
tu                          IN CNAME  tubo |    (5.5) The Resolve Library
 The counter part to the Name Server is the Resolve Library,
which consists in a group of functions pertaining to 
the standard "C" libraries under Linux. The most important
Resolve routines are: 
    return all the IP-addresses that belongs to a host name
        (gethostbyname) andreturn the first order name of a host that belongs
        to an IP-address (gethostbyaddr). The most important files is host.conf, which
controls the Resolve functions.  It is found in the
directory /etc and among other things determines which
services and in which order they will be requested by the 
resolver. For our fictitious network, we only need two options: order
and multi.
 
    Order determines the order of the consulted
        services Multi indicate that a host could have various
        addresses and is only used for the /etc/hosts table.
        The possible arguments on and off. The /etc/host.conf file in our example indicates to the
Resolver to first use DNS and then the /etc/hosts file. 
    
        | /etc/host.conf |  
        | # /etc/host.conf
# We use named and the host table:/etc/hosts
order   bind hosts
# We permit multiple addresses (only for /etc/hosts)
multi   on |    Since our Resolver is using DNS, we have to tell it
which Name Server to consult.  To accomplish this,
the resolv.conf exists. The most important option in resolv.conf is nameserver,
which indicates the corresponding Name Servers.  Up to three
Name Servers can be inserted.  It is recommended to put 
the most reliable Name Server first, because they are
consulted according to the order.
 Two additional options exist - domain
and search - which
indicate domain names, and are joined to a host name
in case the Resolver doesn't know the address.  With 
regards to our example it is to say that when you put 
"ftp mahou", "alcomat.com" is automatically
added.  This way you are not obligated to write
the complete name.  The difference in the before mentioned options is
that domain only permits one domain while search
accepts various.  The disadvantage of a list of domains is
shown in a longer search.
 
    
        | /etc/resolv.conf |  
        | # /etc/resolv.conf
# The Alcomato Distributions domain
domain       alcomat.com
#
# The Name Server
# As a second IP-address it makes sense to put the IP-address of your
# Internet service provider
nameserver   192.253.253.1 |    (5.6) Testing your
setup with nslookup Before using the nslookup tool, which uses BIND, we will
investigate if syslog errors exist.  If you have configured
the boot file in a manner that "named" automatically
starts during the system boot, and a message from "named" 
is printed, it is active.  In the case that you 
prefer to manually start "named", use the following
command: # /etc/named -b /etc/named.boot (only root
can do it) 
    With the command:# grep daemon /etc/syslog.conf
 
 something like this should appear
 *.err;kern.debug;daemon,auth.notice
        /var/adm/messages or /var/log/messages
 this tells you, depending on the distribution, that the
        syslog messages are found in the 
        /var/adm/messages or /var/log/messages file.
 
With the command# grep named /var/adm/messages
        (/var/log/messages)
 
 something similar should appear, for example
 Feb 12 21:16:48 tubo named [3221]: starting (or
        restarted)
 If an error has occurred, messages appear, for example Feb 12 21:16:48 tubo named [3221]: named
hosts Line 15: database format error
(192.249.249.3), indicating to you the file, along with the
line where the error is found.
 After correcting the errors, use the command# kill -HUP 'cat /etc/named.pid'
 so that the Name Server will read the database files again.
   Tests using nslookup With nslookup, any type of resource record can be searched
for and can be sent to any Name Server.  Here
we are only going to talk about elementary tests.  Local searches: 
    
        | 
            The search for a local host name:
 # nslookup
                vodka
 Server: tubo.alcomat.com
 Address: 192.253.253.1
 
 Name: vodka.alcomat.com
 Address: 192.245.245.4
 |  | 
            The search for a local
                address:
 # nslookup
                192.245.245.2
 Server: tubo.alcomat.com
 Address: 192.253.253.1
 
 Name: whisky.alcomat.com
 Address; 192.245.245.2
 |  If the two tests work in the manner shown, your
Name Server is working correctly for your domain. Searches for remote hosts:In the case that your network has access to the Internet, it is best
to use the nslookup command to look for a remote host.
 
    
        | 
            The search for the name of a remote host:
 # nslookup
                ftp.uu.net
 Server: tubo.alcomat.com
 Address: 192.253.253.1
 
 Name: ftp.uu.net
 Address: 192.48.96.9
 |  | 
            The search for a remote address:
 # nslookup
                192.48.96.9
 Server: tubo.alcomat.com
 Address: 192.253.253.1
 
 Name: ftp.uu.net
 Address: 192.48.96.9
 |  If this test passes, your Name Server can locate
the root Name Servers (file: named.cache) and contact them
to request information about remote hosts.  |