DNS in Action - Libor Dostalek - E-Book

DNS in Action E-Book

Libor Dostalek

0,0
23,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

The Domain Name System is one of the foundations of the internet. It is the system that allows the translation of human-readable domain names into machines-readable IP addresses and the reverse translation of IP addresses into domain names. This book describes the basic DNS protocol and its extensions; DNS delegation and registration, including for reverse domains; using DNS servers in networks that are not connected to the internet; and using DNS servers on firewall machines. Many detailed examples are used throughout the book to show perform various configuration and administration tasks.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 302

Veröffentlichungsjahr: 2006

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

DNS in Action
Credits
About the Authors
Preface
What This Book Covers
What You Need for This Book
Conventions
Reader Feedback
Customer Support
Errata
Questions
1. Domain Name System
1.1 Domains and Subdomains
1.2 Name Syntax
1.3 Reverse Domains
1.4 Domain 0.0.127.in-addr.arpa
1.5 Zone
1.5.1 Special Zones
1.6 Reserved Domains and Pseudodomains
1.7 Queries (Translations)
1.7.1 Round Robin
1.8 Resolvers
1.8.1 Resolver Configuration in UNIX
1.8.2 Resolver Configuration in Windows
1.9 Name Server
1.10 Forwarder Servers
2. DNS Protocol
2.1 Resource Records
2.2 DNS Protocol
2.3 DNS Query
2.3.1 DNS Query Packet Format
2.3.2 DNS Query Packet Header
2.3.3 Question Section
2.3.4 The Answer Section, Authoritative Servers, and Additional Information
2.3.5 Compression
2.3.6 Inverse Query
2.3.7 Methods of RR Transfer via a DNS Packet
2.3.8 Communication Examples
Example of a Nonexistent RR Query and the Answer
Example of Communication with a Root Server
Example of Communication with the ns1.volny.cz DNS Server
An Example of TCP usage
An Example Illustrating the use of the nslookup Program to Find Out Communication Content
3. DNS Extension
3.1 DNS Update
3.1.1 Header Section
3.1.2 Zone Section
3.1.3 Prerequisite Section
3.1.4 Update Section
3.1.5 Additional Data Section
3.1.6 Journal File
3.1.7 Notes
3.2 DNS Notify
3.2.1 Notify Message
3.3 Incremental Zone Transfer
3.3.1 Request Format
3.3.2 Reply Format
3.3.3 Purging
3.3.4 Examples from RFC 1995
3.4 Negative Caching (DNS NCACHE)
3.4.1 How Long are Negative Answers Stored in Memory?
3.4.2 The MINIMUM Field in an SOA Record
3.4.3 Saving Negative Reply Rules
3.5 DNS IP version 6 Extension
3.5.1 AAAA Records
3.5.2 A6 Records
3.5.3 Reverse Domains
IP6.INT
IP6.ARPA
3.5.4 DNAME Records
3.6 DNS Security Protocols
3.6.1 DNSsec
3.6.2 KEY Record
3.6.3 SIG Record
3.6.4 NXT Record
3.6.5 Zone Signature
3.6.6 Display Data
3.6.7 DNS Protocol
3.7 TSIG
3.7.1 TKEY
3.8 Saving Certificates to DNS
4. Name Server Implementation
4.1 DNS Database
4.2 RR Format
4.2.1 SOA Records
4.2.2 A Records
4.2.3 CNAME Records
4.2.4 HINFO and TXT Records
4.2.5 NS Records
4.2.6 MX Records
4.2.7 PTR Records
4.2.8 SRV Records
4.2.9 $ORIGIN
4.2.10 $INCLUDE
4.2.11 Asterix (*) in a DNS Name
4.3 Name Server Implementation in BIND
4.3.1 named Program in BIND Version 4 System
4.3.2 New Generation BIND
4.3.2.1 Configuration File
Configuration File Statements
Examples of Name Server Configuration
Comments
acl Statement
address_match_list
controls Statement
include Statement
key Statement
logging Statement
options Statement
Parameters of the options Statement
File Specification
Boolean Options
Forwarding
Name Check
Access Control
Interfaces
Zone Transfer
Periodic Task Intervals
server Statement
trusted-key Statement
view Statement
zone Statement
4.3.2.2 DNS Database
$TTL Statement
$GENERATE Statement
4.3.2.3 Lightweight Resolver
How does this Mechanism Function?
lwres Statement
4.4 Microsoft’s Native Implementation of DNS in Windows 2000/2003
5. Tools for DNS Debugging and Administration
5.1 Tools for DNS Debugging
5.1.1 Check Configuration Files
5.1.2 named-checkconf Utility
5.1.3 named-checkzone Utility
5.1.4 nslookup Program
5.1.4.1 Debugging Mode
5.1.4.2 Debug Debugging Level
5.1.4.3 d2 Debugging Level
Change of the Default Name Server
Zone Extract
Simulation of Queries from a Name Server
Error Messages of the nslookup Program
5.1.5 Other Programs Used for Debugging DNS
5.1.5.1 The dnswalk Program
5.1.5.2 The dig Program
5.2 The rndc Program
5.2.1 Signals
5.2.1.1 HUP Signal
5.2.1.2 INT Signal
5.2.1.3 IOT Signal
5.2.1.4 TERM Signal
5.2.1.5 KILL Signal
5.2.1.6 USR1 and USR2 Signals
5.3 Errors in DNS Configuration
6. Domain Delegation and Registration
6.1 Example 1
6.1.1 Server ns.company.tld
6.1.2 Server ns.provider.net
6.1.3 Server ns.manager-tld.tld
6.2 Example 2
6.2.1 Server ns.company.com
6.2.2 Server ns.branch.company.tld
6.3 Domain Registration
7. Reverse Domain Delegation
Server ns.company.com
Server ns.provider.net
Server ns.ripe.net (authoritative server for a superior domain)
Server ns.company.com
Server ns.branch.company.com
8. Internet Registry
8.1 International Organizations
8.2 Regional Internet Registry (RIR)
8.3 IP Addresses and AS Numbers
8.4 Internet Registry
8.4.1 Registration of a Local IR
8.5 Delegation of Second-Level Domains
9. DNS in Closed Intranets
9.1 Configuring a Root Name Server on the Same Server (BIND Version 4)
9.2 Configuring a Root Name Server on a Separate Server (BIND Version 4)
9.2.1Configuring a Name Server for the Root Domain
9.2.2Configuring Name Servers for company.com
9.3 Root DNS Server in Windows 2000/2003
10. DNS and Firewall
10.1 Shared DNS for Internet and Intranet
10.1.1 The Whole Internet is Translated on the Intranet
10.1.2 Only Intranet Addresses are Translated on Intranet
10.2 Name Server Installed on Firewall
10.2.1 Translation in Intranet—Whole Internet
10.2.2 Translation in Intranet without Internet Translation
10.3 Dual DNS
10.4 End Remarks
A. Country Codes and RIRs
Index

DNS in Action

A detailed and practical guide to DNS implementation, configuration, and administration

Libor Dostálek

Alena Kabelová

DNS in Action

A detailed and practical guide to DNS implementation, configuration, and administration

Copyright © 2006 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, Packt Publishing, nor its dealers or distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: March 2006

Production Reference: 1240206

Published by Packt Publishing Ltd.

32 Lincoln Road

Olton

Birmingham, B27 6PA, UK.

ISBN 1-904811-78-7

www.packtpub.com

Cover Design by www.visionwt.com

This is an authorized and updated translation from the Czech language.

Copyright © Computer Press 2003 Velký průvodce protokoly TCP/IP a systémem DNS.

ISBN: 80-722-6675-6. All rights reserved.

Credits

Authors

Libor Dostálek

Alena Kabelová

Technical Editors

Darshan Parekh

Abhishek Shirodkar

Editorial Manager

Dipali Chittar

Development Editor

Louay Fatoohi

Indexer

Abhishek Shirodkar

Proofreader

Chris Smith

Production Coordinator

Manjiri Nadkarni

Cover Designer

Helen Wood

About the Authors

Libor Dostálek was born in 1957 in Prague, Europe. He graduated in mathematics at the Charles University in Prague. For the last 20 years he has been involved in ICT architecture and security. His experiences as the IT architect and the hostmaster of one of the first European Internet Service Providers have been used while writing this publication.

Later he became an IT architect of one of the first home banking applications fully based on the PKI architecture, and also an IT architect of one of the first GSM banking applications (mobile banking). As a head consultant, he designed the architecture of several European public certification service providers (certification authorities) and also many e-commerce and e-banking applications.

The public knows him either as an author of many publications about TCP/IP and security or as a teacher. He has taught at various schools as well as held various commercial courses. At present, he lectures on Cryptology at the Charles University in Prague.

He is currently an employee of the Siemens.

Alena Kabelová was born in 1964 in Budweis, Europe. She graduated in ICT at the Economical University in Prague. She worked together with Libor Dostálek as a hostmaster. She is mostly involved in software development and teaching. At present, she works as a senior project manager at the PVT and focuses mainly on electronic banking.

Her experiences as the hostmaster of an important European ISP are applied in this publication.

Preface

Recently, while driving to my work, I listened to radio as usual. Because of the establishment of the new EU (European Union) domain, there was an interview with a representative of one of the Internet Service Providers. For some time the interview went on, boringly similar to other common radio interviews, but suddenly the presswoman started to improvise and she asked, "But isn’t the DNS too vulnerable? Is it prepared for terrorist attacks?" The ISP representative enthusiastically answered, "The whole Internet arose more than 30 years ago, initiated by the American Department of Defense. From the very beginning, the Internet architecture took into account that it should be able to keep the communication functional even if a part of the infrastructure of the USA were destroyed, i.e., it must be able to do without a destroyed area."

He went on enthusiastically, "We have 13 root name servers in total. Theoretically, only one is enough to provide the complete DNS function." At this point, we must stop for a moment our radio interview to remind you that a role and principle of usage of root name servers are described in the first chapter of this book. Now, let’s go back to our interview again. The presswoman, not satisfied with the answer, asked, "All these root name servers are in the USA, aren’t they? What will happen if someone or something cuts off the international connectivity, and I am not be able to reach any root name server?" The specialist, caught by the presswoman’s questions, replied, "This would be a catastrophe. In such a case, the whole Internet would be out of order."

That time I did not immediately came upon the solution that an area cut off this way is by nature similar to an Intranet. In such a case, it would be enough to create national (or continental) recovery plan and put into work a fake national (or continental) name server, exactly according to the description in Chapter 9, describing closed company networks. The result would be that the Internet would be limited only to our national (or continental) network; however, it would be at least partially functional.

In fact at that time, the specialist’s answer made me angry. "So what?", I thought, "Only DNS would be out of order; i.e., names could not be translated to IP addresses. If we do not use names but use IP addresses instead, we could still communicate. The whole network infrastructure would be intact in that case!"

But working according to my way would be lengthy, and I thought about it over and over. After some time I realized that the present Internet is not the same as it was in the early 1990s. At that time the handful of academics involved with the Internet would have remembered those few IP addresses. But in the present scenario, the number of IP addresses is in the millions, and the number of people using the Internet is much higher still. Most of them are not IT experts and know nothing about IP addresses and DNS. For such people, the Internet is either functional or not—similar to, for example, an automatic washing machine. From this point of view, the Internet without functional DNS would be really out of order (in fact it would still be functional, but only IT experts would be able to use it).

But working according to my way would be lengthy, and I thought about it over and over. After some time I realized that the present Internet is not the same as it was in the early 1990s. At that time the handful of academics involved with the Internet would have remembered those few IP addresses. But in the present scenario, the number of IP addresses is in the millions, and the number of people using the Internet is much higher still. Most of them are not IT experts and know nothing about IP addresses and DNS. For such people, the Internet is either functional or not—similar to, for example, an automatic washing machine. From this point of view, the Internet without functional DNS would be really out of order (in fact it would still be functional, but only IT experts would be able to use it).

The goal of this publiction is to illustrate to readers the principles on which the DNS is based. This publication is generously filled with examples. Some are from a UNIX environment, some from Microsoft. The concrete examples mostly illustrate some described problem. The publication is not a text book of a DNS implementation for a concrete operating system, but it always tries to find out the base of the problem. The reader is led to create similar examples according to his or her concrete needs by him- or herself.

The goal of this book is to give the reader a deep understanding of DNS, independent of any concrete DNS implementation. After studying this book, the reader should be able to study DNS standards directly from the countless Requests for Comments (RFC). Links to particular RFCs are listed in the text. In fact, it is quite demanding to study the unfriendly RFCs directly without any preliminary training. For a beginner, only to find out the right RFC could be a problem.

Before studying this book, the reader should know the IP principles covered in the Understanding TCP/IP book published by Packt Publishing (ISBN: 1-904811-71-X) because this publication is a logical follow-on from that book.

The authors wish you good luck and hope that you get a lot of useful information by reading this publication.

What This Book Covers

Chapter 1 begins to explain basic DNS principles. It introduces essential names, for example, domain and zone, explaining the difference between them. It describes the iteration principle by which the DNS translates names to IP addresses. It presents a configuration of a resolver both for UNIX and for Windows. The end of the chapter explains name server principles and describes various name server types.

Chapter 2 is fully focused on the most basic DNS procedure, the DNS query. Through this procedure, the DNS translates names to IP addresses. In the very beginning, however, this chapter describes in detail the Resource Record structure. At the end of this chapter, many practical examples of DNS exchanges are listed.

Chapter 3 deals with other DNS procedures (DNS Extensions), i.e., DNS Update, DNS Notify, incremental zone transfer, negative caching, IPv6 Extensions, IPsec, and TSIG.

Chapter 4 talks about the DNS implementation. It is derived from its historical evolution. From the historical point of view, the oldest DNS implementation that is still sometimes used is BIND version 4. This implementation is very simple so it is suitable to describe basic principles with it. Next, the new generations of BIND are discussed followed by the Windows 2000 implementation.

Chapter 5 discusses the tools for debugging DNS such as nslookup, dnswalk, and dig, how to control a name server using the rndc program, and the common errors that might occur while configuring DNS.

Chapter 6 deals with the creation of DNS domains (domain delegation) and with the procedure of domain registration.

Chapter 7 also talks about domain delegation. In contrast to Chapter 6, here the domain registration relates not to forward domains but to reverse domains.

Chapter 8 deals with international organizations, called Internet Registries, which are responsible for assigning IP addresses and domain registration.

Chapter 9 describes the DNS architecture of closed intranets.

Chapter 10 talks about the DNS architecture from the point of view of firewalls.

What You Need for This Book

This publication is created to help beginners, who are already familiar with computers, to discover DNS secrets. It will be also useful for computer administrators and, specifically, for network administrators. It will be also useful as a textbook for DNS lectures.

This book discusses the fundamentals of DNS; it is not a manual for some concrete DNS implementation. It contains examples from both Windows and UNIX environments. It explains the DNS concepts to a user, independently of the hardware and software he or she uses. We can work effectively with DNS even in a not-so-powerful personal computer.

Conventions

In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.

There are three styles for code. Code words in text are shown as follows: "We can include other contexts through the use of the include directive."

A block of code will be set as follows:

[statistics-file path_name] [zone-statistics yes_or_no] [auth-nxdomain yes_or_no] *[deallocate-on-exit yes_or_no] [dialup dialup_option]

When we wish to draw your attention to a particular part of a code block, the relevant lines or items will be made bold:

[statistics-file path_name] [zone-statistics yes_or_no] [auth-nxdomain yes_or_no] *[deallocate-on-exit yes_or_no] [dialup dialup_option]

Any command-line input and output is written as follows:

$ORIGIN default_domain

New terms and important words are introduced in a bold-type font. Words that you see on the screen, in menus or dialog boxes for example, appear in our text like this: "clicking the Next button moves you to the next screen".

Note

Warnings or important notes appear in a box like this.

Reader Feedback

Feedback from our readers is always welcome. Let us know what you think about this book, what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply drop an email to <[email protected]>, making sure to mention the book title in the subject of your message.

If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com or email <[email protected]>.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer Support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Errata

Although we have taken every care to ensure the accuracy of our contents, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in text or code—we would be grateful if you would report this to us. By doing this you can save other readers from frustration, and help to improve subsequent versions of this book. If you find any errata, report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the Submit Errata link, and entering the details of your errata. Once your errata have been verified, your submission will be accepted and the errata added to the list of existing errata. The existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Questions

You can contact us at <[email protected]> if you are having a problem with some aspect of the book, and we will do our

Chapter 1. Domain Name System

All applications that provide communication between computers on the Internet use IP addresses to identify communicating hosts. However, IP addresses are difficult for human users to remember. That is why we use the name of a network interface instead of an IP address. For each IP address, there is a name of a network interface (computer)—or to be exact, a domain name. This domain name can be used in all commands where it is possible to use an IP address. (One exception, where only an IP address can be used, is the specification of an actual name server.) A single IP address can have several domain names affiliated with it.

The relationship between the name of a computer and an IP address is defined in the Domain Name System (DNS) database. The DNS database is distributed worldwide. The DNS database contains individual records that are called Resource Records (RR). Individual parts of the DNS database called zones are placed on particular name servers. DNS is a worldwide distributed database.

If you want to use an Internet browser to browse to www.google.com with the IP address 64.233.167.147 (Figure 1.1), you enter the website name www.google.com in the browser address field.

Figure 1.1: It is necessary to translate a name to an IP address before establishing a connection

Just before the connection with the www.google.com web server is made, the www.google.com DNS name is translated into an IP address and only then is the connection actually established.

It is practical to use an IP address instead of a domain name whenever we suspect that the DNS on the computer is not working correctly. Although it seems unusual, in this case, we can write something like:

ping 64.233.167.147 http://64.233.167.147

or send email to

dostalek@[64.233.167.147]

However, the reaction can be unexpected, especially for the email, HTTP, and HTTPS protocols. Mail servers do not necessarily support transport to servers listed in brackets. HTTP will return to us the primary home page, and the HTTPS protocol will complain that the server name does not match the server name in the server’s certificate.

1.1 Domains and Subdomains

The entire Internet is divided into domains, i.e., name groups that logically belong together. The domains specify whether the names belong to a particular company, country, and so forth. It is possible to create subgroups within a domain that are called subdomains. For example, it is possible to create department subdomains for a company domain. The domain name reflects a host’s membership in a group and subgroup. Each group has a name affiliated with it. The domain name of a host is composed from the individual group names. For example, the host named bob.company.com consists of a host named bob inside a subdomain called company, which is a subdomain of the domain com.

The domain name consists of strings separated by dots. The name is processed from left to right. The highest competent authority is the root domain expressed by a dot (.) on the very right (this dot is often left out). Top Level Domains (TLD) are defined in the root domain. We have two kind of TLD, Generic Top Level Domain (gTLD) and Country Code Top Level Domain (ccTLD). Well known gTLDs are edu, com, net, and mil which are used mostly in the USA. According to ISO 3166, we also have two letter ccTLD for individual countries. For example, the us domain is affiliated with USA. However ccTLD are used mostly outside the USA. A detailed list of affiliated ccTLD and their details are listed in Appendix A.

The TLD domains are divided into subdomains for particular organizations, for example, coca-cola.com, mcdonalds.com, google.com. Generally, a company subdomain can be divided into lower levels of subdomains, for example, the company Company Ltd. can have its subdomain as company.com and lower levels like bill.company.com for its billing department, sec.company.com for its security department, and head.company.com for its headquarters.

The names create a tree structure as shown in the figure:

Figure 1.1a: The names in the DNS system create a tree structure

The following list contains some other registered gTLDs:

The .org domain is intended to serve the noncommercial community.The .aero domain is reserved for members of the air transport industry.The .biz domain is reserved for businesses.The .coop domain is reserved for cooperative associations.The .int domain is only used for registering organizations established by international treaties between governments.The .museum domain is reserved for museums.The .name domain is reserved for individuals.The .pro domain is being established; it will be restricted to credited professionals and related entities.

1.2 Name Syntax

Names are listed in a dot notation (for example, abc.head.company.com). Names have the following general syntax:

string.string.string ………string.

where the first string is a computer name, followed by the name of the lowest inserted domain, then the name of a higher domain, and so on. For unambiguousness, a dot expressing the root domain is also listed at the end.

The entire name can have a maximum of 255 characters. An individual string can have a maximum of 63 characters. The string can consist of letters, numbers, and hyphens. A hyphen cannot be at the beginning or at the end of a string. There are also extensions specifying a richer repertoire of characters that can be used to create names. However, we usually avoid these additional characters because they are not supported by all applications.

Both lower and upper case letters can be used, but this is not so easy. From the point of view of saving and processing in the DNS database, lower and upper case letters are not differentiated. In other words, the name newyork.com will be saved in the same place in a DNS database as NewYork.com or NEWYORK.com. Therefore, when translating a name to an IP address, it does not matter whether the user enters upper or lower case letters. However, the name is saved in the database in upper and lower case letters; so if NewYork.com was saved in the database, then during a query, the database will return "NewYork.com.". The final dot is part of the name.

In some cases, the part of the name on the right can be omitted. We can almost always leave out the last part of the domain name in application programs. In databases describing domains the situation is more complicated:

It is almost always possible to omit the last dot.It is usually possible to omit the end of the name, which is identical to the name of the domain, on computers inside the domain. For example, inside the company.com domain it is possible to just write computer.abc instead of computer.abc.company.com. (However, you cannot write a dot at the end!) The domains that the computer belongs to are directly defined by the domain and search commands in the resolver configuration file. There can be several domains of this kind defined (see Section 1.9).

1.3 Reverse Domains

We have already said that communication between hosts is based on IP addresses, not domain names. On the other hand, some applications need to find a name for an IP address—in other words, find the reverse record. This process is the translation of an IP address into a domain name, which is often called reverse translation.

As with domains, IP addresses also create a tree structure (see Figure 1.2). Domains created by IP addresses are often called reverse domains. The pseudodomains inaddr-arpa for IPv4 and IP6.arpa for IPv6 were created for the purpose of reverse translation. This domain name has historical origins; it is an acronym for inverse addresses in the Arpanet.

Under the domain in-addr.arpa, there are domains with the same name as the first number from the network IP address. For example, the in-addr.arpa domain has subdomains 0 to 255. Each of these subdomains also contains lower subdomains 0 to 255. For example, network 195.47.37.0/24 belongs to subdomain 195.in-addr.arpa. This actual subdomain belongs to domain 47.195.in-addr.arpa, and so forth. Note that the domains here are created like network IP addresses written backwards.

Figure 1.2: Reverse domain to IP address 195.47.37.2

This whole mechanism works if the IP addresses of classes A, B, or C are affiliated. But what should you do if you only have a subnetwork of class C affiliated? Can you even run your own name server for reverse translation? The answer is yes. Even though the IP address only has four bytes and a classic reverse domain has a maximum of three numbers (the fourth numbers are already elements of the domain—IP addresses), the reverse domains for subnets of class C are created with four numbers. For example, for subnetwork 194.149.150.16/28 we will use domain 16.150.149.194.in-addr.arpa. It is as if the IP address suddenly has five bytes! This was originally a mistake in the implementation of DNS, but later this mistake proved to be very practical so it was standardized as an RFC. We will discuss this in more detail in Chapter 7. You will learn more about reverse domains for IPv6 in Section 3.5.3.

1.4 Domain 0.0.127.in-addr.arpa

The IP address 127.0.0.1 presents an interesting complication. Network 127 is reserved for loopback, i.e., a software loop on each computer. While other IP addresses are unambiguous within the Internet, the address 127.0.0.1 occurs on every computer. Each name server is not only an authority for common domains, but also an authority (primary name server) to domain 0.0.127.in-addr.arpa. We will consider this as given and will not list it in the chart, but be careful not to forget about it. For example, even a caching-only server is a primary server for this domain. Windows 2000 pretends to be the only exception to this rule, but it would not hurt for even Windows 2000 to establish a name server for zone 0.0.127.in-addr.arpa.

1.5 Zone

We often come across the questions: What is a zone? What is the relation between a domain and a zone? Let us explain the relationship of these terms using the company.com domain.

As we have already said, a domain is a group of computers that share a common right side of their domain name. For example, a domain is a group of computers whose names end with company.com. However, the domain company.com is large. It is further divided into the subdomains bill.company.com, sec.company.com, sales.company.com, xyz.company.com, etc. We can administer the entire company.com domain on one name server, or we can create independent name servers for some subdomains. (In Figure 1.3, we have created subordinate name servers for the subdomains bill.company.com and head.company.com.) The original name server serves the domain company.com and the subdomains sec.company.com, sales.company.com, and xyz.company.com—in other words, the original name server administers the company.com zone. The zone is a part of the domain namespace that is administered by a particular name server.

Figure 1.3: Zone company.com

A zone containing data of a lower-level domain is usually called a subordinate zone.

1.5.1 Special Zones

Besides classic zones, which contain data about parts of the domains or subdomains, special zones are also used for DNS implementation. Specifically, the following zones are used:

Zone stub: Zone stub is actually a subordinate zone that only contains information about what name servers administer in a particular subdomain (they contain the NS records for the zone). The zone stub therefore does not contain the entire zone.Zone cache/hint: A zone hint contains a list of root name servers (non-authoritative data read into memory during the start of the name server). Only BIND version 8 and later use the name hint for this type of zone. In previous versions, a name cache zone was used. Remember that the root name servers are an authority for a root domain marked as a dot (.).

1.6 Reserved Domains and Pseudodomains

It was later decided that other domains could also be used as TLD. Some TLD were reserved in RFC 2606:

The test domain for testingThe example domain for creating documentation and examplesThe invalid domain for evoking error statesThe localhost domain for software loops

Domains that are not directly connected to the Internet can also exist, i.e., computers that do not even use the TCP/IP network protocol therefore do not have an IP address. These domains are sometimes called pseudodomains. They are meaningful especially for electronic mail. It is possible to send an email into other networks and then into the Internet with the help of a pseudodomain (like DECnet or MS Exchange).

In its internal network, a company can first use TCP/IP and then DECnet protocol. A user using TCP/IP in the internal network (for example, <[email protected]>) is addressed from the Internet. But how do you address a user on computers working in the DECnet protocol?

To solve this, we insert the fictive dnet pseudodomain into the address. The user Daniel is therefore addressed <[email protected]>. With the help of DNS, the entire email that was addressed into the dnet.company.com domain is redirected to a gateway in DECnet protocol (the gateway of the company.com domain), which performs the transformation from TCP/IP (for SMTP) into DECnet (for Mail-11).

1.7 Queries (Translations)

Most common queries are translation of a hostname to an IP address. It is also possible to request additional information from DNS. Queries are mediated by a resolver. The resolver is a DNS client that asks the name server. Because the database is distributed worldwide, the nearest name server does not need to know the final response and can ask other name servers for help. The name server, as an answer to the resolver, then returns the acquired translation or returns a negative answer. All communication consists of queries and answers.

The name server searches in its cache memory for the data for the zone it administers during its start. The primary name server reads data from the local disk; the secondary name server acquires data from the primary name server by a query zone transfer of the administered zones and also saves them into the cache memory. The data stored within the primary and secondary name servers is called authoritative data. Furthermore, the name server reads from its memory cache/hint the zone data, which is not part of the data from its administered zone (local disk), but nonetheless enables this data to connect with the root name servers. This data is called nonauthoritative data. In the terminology of BIND program version 8 and 9, we sometimes do not speak of them as primary and secondary servers, but as master servers and slave servers.

Figure 1.4: Primary name server loads data from a disk, while the secondary server acquires data by zone transfer query

Name servers save into their cache memory positive (and sometimes even negative) answers to queries that other name servers have to ask for. From the point of view of our name server, this data acquired from other name servers is also non-authoritative, thereby saving time when processing repeated queries.

Figure 1.5: Stub resolvers and caching resolvers

Requirements for translations occur in a user program. The user program asks a component within the operating system, which is called a resolver, for a translation. The resolver transfers the query for translation to a name server. In smaller systems, there is usually only a stub resolver. In such cases, the resolver transfers all requirements by DNS protocol to a name server running on another computer (see Figure 1.5). A resolver without cache memory is called a stub resolver. It is possible to establish cache memory for a resolver even in Windows 2000, Windows XP, etc. This service in Windows is called DNS Client. (I think this is a little bit misleading as a stub resolver is not a proper DNS client!)

Some computers run only a resolver (either stub or caching); others run both a resolver and a name server. Nowadays, a wide range of combinations are possible (see Figure 1.6) but the principle remains the same:

The user inserts a command, then the hostname needs to be translated into an IP address (in Figure 1.6, number 1).If the resolver has its own cache, it will attempt to find the result within it directly (2).If the answer is not found in the resolver cache (or it is a stub), the resolver transfers the request to a name server (3).The name server will look for the answer in its cache memory.If the name server does not find the answer in its cache memory, it looks for help from other name servers.If the name server does not find the answer in its cache memory, it looks for help from other name servers.The name server can contact more name servers by a process referred to as iteration. By iteration, the name server can access or contact a name server, which is an authority on the answer. The authoritative name server will then give a last resort answer (negatively if there is no information in DNS corresponding with the inserted name).