Differences between version 3 and previous revision of HowToDNSHOWTO.
Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 3 | Last edited on Monday, October 25, 2004 5:16:34 am | by AristotlePagaltzis | Revert |
Older page: | version 2 | Last edited on Friday, December 5, 2003 10:01:06 am | by JohnMcPherson | Revert |
@@ -1,3206 +1 @@
-
-DNS HOWTO <author >Nicolai Langfeldt (<tt/dns-howto(at)langfeldt.net/), >
-
-
-----
-
-!!!DNS HOWTO
-
-!!Nicolai Langfeldt (dns-howto(at)langfeldt.net),
-Jamie Norrish and others v9., 2001-12-20
-
-
-----
-''HOWTO become a totally small time DNS admin.''
-----
-
-
-
-
-!!1. Preamble
-
-
-*1.1 Legal stuff
-
-*1.2 Credits and request for help.
-
-*1.3 Dedication
-
-*1.4 Updated versions
-
-
-
-
-
-!!2. Introduction.
-
-
-*2.1 Other nameserver implementations.
-
-
-
-
-
-!!3. A resolving, caching name server.
-
-
-*3.1 Starting named
-
-*3.2 Resolvers
-
-*3.3 Congratulations
-
-
-
-
-
-!!4. Forwarding
-
-
-
-
-!!5. A ''simple'' domain.
-
-
-*5.1 But first some dry theory
-
-*5.2 Our own domain
-
-*5.3 The reverse zone
-
-*5.4 Words of caution
-
-*5.5 Why reverse lookups don't work.
-
-*5.6 Slave servers
-
-
-
-
-
-!!6. Basic security options.
-
-
-*6.1 Restricting zone transfers
-
-*6.2 Protecting against spoofing
-
-*6.3 Running named as non-root
-
-
-
-
-
-!!7. A real domain example
-
-
-*7.1 /etc/named.conf (or /var/named/named.conf)
-
-*7.2 /var/named/root.hints
-
-*7.3 /var/named/zone/127..
-
-*7.4 /var/named/zone/land-5.com
-
-*7.5 /var/named/zone/206.6.177
-
-
-
-
-
-!!8. Maintenance
-
-
-
-
-!!9. Migrating to BIND 9
-
-
-
-
-!!10. Questions and Answers
-
-
-
-
-!!11. How to become a bigger time DNS admin.
-----
-
-!!1. Preamble
-
-
-Keywords: DNS, BIND, BIND 4, BIND 8, BIND 9, named, dialup, PPP,
-slip, ISDN, Internet, domain, name, resolution, hosts, caching.
-
-
-
-
-
-This document is part of the Linux Documentation Project.
-
-
-
-
-!!1.1 Legal stuff
-
-
-
-(C)opyright 1995-2001 Nicolai Langfeldt, Jamie Norrish & Co. Do
-not modify without amending copyright, distribute freely but retain
-copyright message.
-
-
-
-
-!!1.2 Credits and request for help.
-
-
-
-I want to thank all the people that I have bothered with reading
-this HOWTO (you know who you are) and all the readers that have
-e-mailed suggestions and notes.
-
-
-
-
-
-This will never be a finished document; please send me mail about
-your problems and successes. You can help make this a better HOWTO.
-So please send comments and/or questions or money to
-janl(at)langfeldt.net. Or buy my DNS book (it's titled "The Concise
-Guide to DNS and BIND, the bibliography has ISBNs). If you send
-e-mail and want an answer please show the simple courtesy of
-''making sure'' that the return address is correct and working.
-Also, __please__ read the
-qanda section
-before mailing me. Another thing, I can only understand Norwegian and
-English.
-
-
-
-
-
-This is a HOWTO. I have maintained it as part of the LDP since
-1995. I have, during 2000, written a book on the same subject. I
-want to say that, though this HOWTO is in many ways much like the book
-it is ''not'' a watered down version concocted to market the
-book. The readers of this HOWTO have helped me understand what is
-difficult to understand about DNS. This has helped the book, but the
-book has also helped me to think more about what this HOWTO needs.
-The HOWTO begot the book. The book begot version 3 of this HOWTO. My
-thanks to the book publisher, Que, that took a chance on me :-)
-
-
-
-
-
-
-
-!!1.3 Dedication
-
-
-
-This HOWTO is dedicated to Anne Line Norheim Langfeldt. Though she
-will probably never read it since she's not that kind of girl.
-
-
-
-
-!!1.4 Updated versions
-
-
-
-You should be able to find updated versions of this HOWTO both at
-http://langfeldt.net/DNS-HOWTO/ and on
-http://www.linuxdoc.org/. Go there if this document is dated
-more than 9 months ago.
-
-
-
-----
-
-!! 2. Introduction.
-
-
-__What this is and isn't.__
-
-
-
-
-
-DNS is the Domain Name System. DNS converts machine names to the
-IP addresses that all machines on the net have. It translates (or
-"maps" as the jargon would have it) from name to address and from
-address to name, and some other things. This HOWTO documents how to
-define such mappings using Unix system, with a few things specific to
-Linux.
-
-
-
-
-
-A mapping is simply an association between two things, in this case
-a machine name, like ftp.linux.org, and the machine's IP number
-(or address) 199.249.150.4. DNS also contains mappings the other
-way, from the IP number to the machine name; this is called a "reverse
-mapping".
-
-
-
-
-
-DNS is, to the uninitiated (you ;-), one of the more opaque areas
-of network administration. Fortunately DNS isn't really that hard.
-This HOWTO will try to make a few things clearer. It describes how to
-set up a ''simple'' DNS name server, starting with a caching only
-server and going on to setting up a primary DNS server for a domain.
-For more complex setups you can check the
-qanda section of this document. If it's not described there
-you will need to ''read'' the Real Documentation. I'll get back to
-what this Real Documentation consists of in
-the last chapter.
-
-
-
-
-
-Before you start on this you should configure your machine so that
-you can telnet in and out of it, and successfully make all kinds of
-connections to the net, and you should especially be able to do
-telnet 127...1 and get your own machine (test it now!). You
-also need good /etc/nsswitch.conf, /etc/resolv.conf
-and /etc/hosts files as a starting point, since I will not
-explain their function here. If you don't already have all this set
-up and working the Networking-HOWTO and/or the
-Networking-Overview-HOWTO explains how to set it up. Read them.
-
-
-
-
-
-When I say `your machine' I mean the machine you are trying to set
-up DNS on, not any other machine you might have that's involved in
-your networking effort.
-
-
-
-
-
-I assume you're not behind any kind of firewall that blocks name
-queries. If you are you will need a special configuration --- see the
-section on
-qanda.
-
-
-
-
-
-Name serving on Unix is done by a program called named. This
-is a part of the ``BIND'' package which is coordinated by ''The
-Internet Software Consortium''. Named is included in most Linux
-distributions and is usually installed as /usr/sbin/named,
-usually from a package called BIND, in upper or lower case
-depending on the whim of the packager.
-
-
-
-
-
-If you have a named you can probably use it; if you don't have one
-you can get a binary off a Linux ftp site, or get the latest and
-greatest source from
-ftp://ftp.isc.org/isc/bind9/. This
-HOWTO is about BIND version 9. The old versions of the HOWTO, about
-BIND 4 and 8, is still available at
-http://langfeldt.net/DNS-HOWTO/ in case you use BIND 4 or 8
-(incidentally, you will find this HOWTO there too). If the named man
-page talks about (at the very end, in the FILES section)
-named.conf you have BIND 8; if it talks about named.boot you
-have BIND 4. If you have 4 and are security conscious you really
-ought to upgrade to the latest version of BIND 8. Now.
-
-
-
-
-
-DNS is a net-wide database. Take care about what you put into it.
-If you put junk into it, you, and others, will get junk out of it.
-Keep your DNS tidy and consistent and you will get good service from
-it. Learn to use it, admin it, debug it and you will be another good
-admin keeping the net from falling to its knees by mismanagement.
-
-
-
-
-
-__Tip:__ Make backup copies of all the files I instruct you to
-change if you already have them, so that if after going through this
-nothing works you can get it back to your old, working state.
-
-
-
-
-!!2.1 Other nameserver implementations.
-
-
-
-This section was written by Joost van Baal.
-
-
-
-
-
-Various packages exist for getting a DNS server on your box. There
-is the BIND package (
-http://www.isc.org/products/BIND/);
-the implementation this HOWTO is about. It's the most popular
-nameserver around and it's used on the vast majority of name serving
-machines on the Internet, around and being deployed since the 1980's.
-It's available under a BSD license. Since it's the most popular
-package, loads of documentation and knowledge about BIND is around.
-However, there have been security problems with BIND.
-
-
-
-
-
-Then there is djbdns (
-http://djbdns.org/), a relatively
-new DNS package written by Daniel J. Bernstein, who also wrote qmail.
-It's a very modular suite: various small programs take care of the
-different jobs a nameserver is supposed to handle. It's designed with
-security in mind. It uses a simpler zone-file format, and is
-generally easier to configure. However, since it's less well known,
-your local guru might not be able to help you with this.
-Unfortunately, this software is not Open Source. The author's
-advertisement is on
-http://cr.yp.to/djbdns/ad.html.
-
-
-
-
-
-Whether DJBs software is really an improvement over the older
-alternatives is a subject of much debate. A discussion (or is it a
-flame-war?) of BIND vs djbdns, joined by ISC people, is on
-http://www.isc.org/ml-archives/bind-users/2000/08/msg01075.html
-
-
-----
-
-!! 3. A resolving, caching name server.
-
-
-__A first stab at DNS config, very useful for dialup, cable-modem,
-ADSL and similar users.__
-
-
-
-
-
-On Red Hat and Red Hat related distributions you can achieve the
-same practical result as this HOWTO's first section by installing the
-packages bind, bind-utils and caching-nameserver. If
-you use Debian simply install bind (or bind9, as of this
-writing, BIND 9 is not supported by Debian Stable (potato)) and
-bind-doc. Of course just installing those packages won't teach
-you as much as reading this HOWTO. So install the packages, and then
-read along verifying the files they installed.
-
-
-
-
-
-A caching only name server will find the answer to name queries and
-remember the answer the next time you need it. This will shorten the
-waiting time the next time significantly, especially if you're on a
-slow connection.
-
-
-
-
-
-First you need a file called /etc/named.conf (Debian:
-/etc/bind/named.conf). This is read when named starts. For
-now it should simply contain:
-
-
-
-----
-
- // Config file for caching only name server
- //
- // The version of the HOWTO you read may contain leading spaces
- // (spaces in front of the characters on these lines ) in this and
- // other files. You must remove them for things to work.
- //
- // Note that the filenames and directory names may differ, the
- // ultimate contents of should be quite similar though.
- options {
- directory "/var/named";
- // Uncommenting this might help if you have to go through a
- // firewall and things are not working out. But you probably
- // need to talk to your firewall admin.
- // query-source port 53;
- };
- controls {
- inet 127...1 allow { localhost; } keys { rndc_key; };
- };
- key "rndc_key" {
- algorithm hmac-md5;
- secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
- };
- zone "." {
- type hint;
- file "root.hints";
- };
- zone "..127.in-addr.arpa" {
- type master;
- file "pz/127..";
- };
-
-----
-
-
-
-
-
-The Linux distribution packages may use different file names for
-each kind of file mentioned here; they will still contain about the
-same things.
-
-
-
-
-
-The `directory' line tells named where to look for files. All
-files named subsequently will be relative to this. Thus pz
-is a directory under /var/named, i.e.,
-/var/named/pz. /var/named is the right directory
-according to the ''Linux File system Standard''.
-
-
-
-
-
-The file named /var/named/root.hints is named in this.
-/var/named/root.hints should contain this:
-----
-
- ;
- ; There might be opening comments here if you already have this file.
- ; If not don't worry.
- ;
- ; About any leading spaces in front of the lines here: remove them!
- ; Lines should start in a ;, . or character, not blanks.
- ;
- . 6D IN NS A.ROOT-SERVERS.NET.
- . 6D IN NS B.ROOT-SERVERS.NET.
- . 6D IN NS C.ROOT-SERVERS.NET.
- . 6D IN NS D.ROOT-SERVERS.NET.
- . 6D IN NS E.ROOT-SERVERS.NET.
- . 6D IN NS F.ROOT-SERVERS.NET.
- . 6D IN NS G.ROOT-SERVERS.NET.
- . 6D IN NS H.ROOT-SERVERS.NET.
- . 6D IN NS I.ROOT-SERVERS.NET.
- . 6D IN NS J.ROOT-SERVERS.NET.
- . 6D IN NS K.ROOT-SERVERS.NET.
- . 6D IN NS L.ROOT-SERVERS.NET.
- . 6D IN NS M.ROOT-SERVERS.NET.
- A.ROOT-SERVERS.NET. 6D IN A 198.41..4
- B.ROOT-SERVERS.NET. 6D IN A 128.9..107
- C.ROOT-SERVERS.NET. 6D IN A 192.33.4.12
- D.ROOT-SERVERS.NET. 6D IN A 128.8.10.90
- E.ROOT-SERVERS.NET. 6D IN A 192.203.230.10
- F.ROOT-SERVERS.NET. 6D IN A 192.5.5.241
- G.ROOT-SERVERS.NET. 6D IN A 192.112.36.4
- H.ROOT-SERVERS.NET. 6D IN A 128.63.2.53
- I.ROOT-SERVERS.NET. 6D IN A 192.36.148.17
- J.ROOT-SERVERS.NET. 6D IN A 198.41..10
- K.ROOT-SERVERS.NET. 6D IN A 193..14.129
- L.ROOT-SERVERS.NET. 6D IN A 198.32.64.12
- M.ROOT-SERVERS.NET. 6D IN A 202.12.27.33
-
-----
-
-
-
-
-
-The file describes the root name servers in the world. The servers
-change over time and must be maintained now and then. See the
-maintenance section for how to keep it up to date.
-
-
-
-
-
-The next section in named.conf is the last zone. I will
-explain its use in a later chapter; for now just make this a file
-named 127..0 in the subdirectory pz: (''Again, please
-remove leading spaces if you cut and paste this'')
-
-
-
-----
-
- $TTL 3D
- @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
- 1 ; Serial
- 8H ; Refresh
- 2H ; Retry
- 4W ; Expire
- 1D) ; Minimum TTL
- NS ns.linux.bogus.
- 1 PTR localhost.
-
-----
-
-
-
-
-
-The sections called key and controls together specify
-that your named can be remotely controlled by a program called
-rndc if it connects from the local host, and identifis itself
-with the encoded secret key. This key is like a password. For rndc
-to work you need /etc/rndc.conf to match this:
-
-
-
-----
-
- key rndc_key {
- algorithm "hmac-md5";
- secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
- };
- options {
- default-server localhost;
- default-key rndc_key;
- };
-
-----
-
-
-
-
-
-As you see the secret is identical. If you want to use rndc
-from other machines their times need to be within 5 minutes of
-eachother. I recommend using the ntp (xntpd and ntpdate)
-software to do this.
-
-
-
-
-
-Next, you need a /etc/resolv.conf looking something like
-this: (''Again: Remove spaces!'')
-
-
-
-----
-
- search subdomain.your-domain.edu your-domain.edu
- nameserver 127...1
-
-----
-
-
-
-
-
-The `search' line specifies what domains should be searched
-for any host names you want to connect to. The `nameserver' line
-specifies the address of your nameserver, in this case your own
-machine since that is where your named runs (127...1 is right, no
-matter if your machine has another address too). If you want to list
-several name servers put in one `nameserver' line for
-each. (Note: Named never reads this file, the resolver that uses named
-does. Note 2: In some resolv.conf files you find a line saying
-"domain". That's fine, but don't use both "search" and "domain", only
-one of them will work).
-
-
-
-
-
-To illustrate what this file does: If a client tries to look up
-foo, then foo.subdomain.your-domain.edu is tried
-first, then foo.your-domain.edu, and finally foo.
-You may not want to put in too many domains in the search line, as it
-takes time to search them all.
-
-
-
-
-
-The example assumes you belong in the domain
-subdomain.your-domain.edu; your machine, then, is probably
-called your-machine.subdomain.your-domain.edu. The search
-line should not contain your TLD (Top Level Domain, `edu' in this
-case). If you frequently need to connect to hosts in another domain
-you can add that domain to the search line like this: (''Remember to
-remove the leading spaces, if any'')
-
-
-
-----
-
- search subdomain.your-domain.edu your-domain.edu other-domain.com
-
-----
-
-
-and so on. Obviously you need to put real domain names in instead.
-Please note the lack of periods at the end of the domain names. This
-is important; please note the lack of periods at the end of the domain
-names.
-
-
-
-
-!! 3.1 Starting named
-
-
-
-After all this it's time to start named. If you're using a dialup
-connection connect first. Now run named, either by running the boot
-script: /etc/init.d/named start or named directly:
-/usr/sbin/named. If you have tried previous versions of BIND
-you're probably used to ndc. I BIND 9 it has been replaced with
-rndc, which can controll your named remotely, but it can't start
-named anymore. If you view your syslog message file (usually called
-/var/log/messages, Debian calls it /var/log/daemon,
-another directory to look is the other files /var/log) while
-starting named (do tail -f /var/log/messages) you should see
-something like:
-
-
-
-
-
-(the lines ending in \ continues on the next line)
-
-
-
-
-
- Dec 23 02:21:12 lookfar named
[[11031
]: starting BIND 9.1.3
- Dec 23 02:21:12 lookfar named[[11031]: using 1 CPU
- Dec 23 02:21:12 lookfar named[[11034]: loading configuration from \
- '/etc/named.conf'
- Dec 23 02:21:12 lookfar named[[11034]: the default for the \
- 'auth-nxdomain' option is now 'no'
- Dec 23 02:21:12 lookfar named[[11034]: no IPv6 interfaces found
- Dec 23 02:21:12 lookfar named[[11034]: listening on IPv4 interface lo, \
- 127...1#53
- Dec 23 02:21:12 lookfar named[[11034]: listening on IPv4 interface eth0, \
- 10...129#53
- Dec 23 02:21:12 lookfar named[[11034]: command channel listening on \
- 127...1#953
- Dec 23 02:21:13 lookfar named[[11034]: running
-
-
-
-
-
-
-
-If there are any messages about errors then there is a mistake.
-Named will name the file it is reading. Go back and check the file.
-Start named over when it is fixed.
-
-
-
-
-
-Now you can test your setup. Traditionally a program called
-nslookup is used for this. These days dig is recommended:
-
-
-
-
- $ dig -x 127...1
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26669
- ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL:
- ;;QUESTION SECTION:
- ;1...127.in-addr.arpa. IN PTR
- ;; ANSWER SECTION:
- 1...127.in-addr.arpa. 259200 IN PTR localhost.
- ;; AUTHORITY SECTION:
- ..127.in-addr.arpa. 259200 IN NS ns.linux.bogus.
- ;; Query time: 3 msec
- ;; SERVER: 127...1#53(127...1)
- ;; WHEN: Sun Dec 23 02:26:17 2001
- ;; MSG SIZE rcvd: 91
-
-
-
-
-
-
-
-If that's what you get it's working. We hope. Anything very
-different, go back and check everything. Each time you change a
-file you need to run rndc reload.
-
-
-
-
-
-Now you can enter a query. Try looking up some machine close to
-you. pat.uio.no is close to me, at the University of Oslo:
-
-
-
-
-
- $ dig pat.uio.no
- ; <<>> DiG 9.1.3 <<>> pat.uio.no
- ;; global options: printcmd
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15574
- ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL:
- ;; QUESTION SECTION:
- ;pat.uio.no. IN A
- ;; ANSWER SECTION:
- pat.uio.no. 86400 IN A 129.240.130.16
- ;; AUTHORITY SECTION:
- uio.no. 86400 IN NS nissen.uio.no.
- uio.no. 86400 IN NS nn.uninett.no.
- uio.no. 86400 IN NS ifi.uio.no.
- ;; Query time: 651 msec
- ;; SERVER: 127...1#53(127...1)
- ;; WHEN: Sun Dec 23 02:28:35 2001
- ;; MSG SIZE rcvd: 108
-
-
-
-
-
-
-
-This time dig asked your named to look for the machine
-pat.uio.no. It then contacted one of the name server machines
-named in your root.hints file, and asked its way from there. It
-might take tiny while before you get the result as it may need to
-search all the domains you named in /etc/resolv.conf.
-
-
-
-
-
-
-
-
-If you ask the same again you get this:
-
-
-
-
-
- $ dig pat.uio.no
- ; <<>> DiG 8.2 <<>> pat.uio.no
- ;; res options: init recurs defnam dnsrch
- ;; got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
- ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
- ;; QUERY SECTION:
- ;; pat.uio.no, type = A, class = IN
- ;; ANSWER SECTION:
- pat.uio.no. 23h59m58s IN A 129.240.130.16
- ;; AUTHORITY SECTION:
- UIO.NO. 23h59m58s IN NS nissen.UIO.NO.
- UIO.NO. 23h59m58s IN NS ifi.UIO.NO.
- UIO.NO. 23h59m58s IN NS nn.uninett.NO.
- ;; ADDITIONAL SECTION:
- nissen.UIO.NO. 23h59m58s IN A 129.240.2.3
- ifi.UIO.NO. 1d23h59m58s IN A 129.240.64.2
- nn.uninett.NO. 1d23h59m58s IN A 158.38..181
- ;; Total query time: 4 msec
- ;; FROM: lookfar to SERVER: default -- 127...1
- ;; WHEN: Sat Dec 16 00:23:09 2000
- ;; MSG SIZE sent: 28 rcvd: 162
-
-
-
-
-
-
-
-
-
-
-As you can plainly see this time it was much faster, 4ms versus
-more than half a second earlier. The answer was cached. With cached
-answers there is the possibility that the answer is out of date, but
-the origin servers can control the time cached answers should be
-considered valid, so there is a high probability that the answer you
-get ''is'' valid.
-
-
-
-
-!!3.2 Resolvers
-
-
-
-All OSes implementing the standard C API has the calls
-gethostbyname and gethostbyaddr. These can get information from
-several different sources. Which sources it gets it from is
-configured in /etc/nsswitch.conf on Linux (and some other
-Unixes). This is a long file specifying from which file or database
-to get different kinds of data types. It usually contains helpful
-comments at the top, which you should consider reading. After that
-find the line starting with `hosts:'; it should read:
-
-
-
-----
-
- hosts: files dns
-
-----
-
-
-(''You remembered about the leading spaces, right? I won't mention
-them again.'')
-
-
-
-
-
-If there is no line starting with `hosts:' then put in the one
-above. It says that programs should first look in the
-/etc/hosts file, then check DNS according to
-resolv.conf.
-
-
-
-
-
-
-
-!!3.3 Congratulations
-
-
-
-Now you know how to set up a caching named. Take a beer, milk, or
-whatever you prefer to celebrate it.
-
-
-
-
-
-
-----
-
-!!4. Forwarding
-
-
-In large, well organized, academic or ISP (Internet Service
-Provider) networks you will sometimes find that the network people
-have set up a forwarder hierarchy of DNS servers which helps lighten
-the internal network load and the load on the outside servers as well.
-It's not easy to know if you're inside such a network or not. But by
-using the DNS server of your network provider as a ``forwarder'' you
-can make the responses to queries faster and less of a load on your
-network. This works by your nameserver forwarding queries to your ISP
-nameserver. Each time this happens you will dip into the big cache of
-your ISPs nameserver, thus speeding your queries up, your nameserver
-does not have to do all the work itself. If you use a modem this can
-be quite a win. For the sake of this example we assume that your
-network provider has two name servers they want you to use, with IP
-numbers 10...1 and 10.1..1. Then, in your
-named.conf file, inside the opening section called
-``options'', insert these lines:
-
-
-
-----
-
- forward first;
- forwarders {
- 10...1;
- 10.1..1;
- };
-
-----
-
-
-
-
-
-There is also a nice trick for dialup machines using forwarders, it
-is described in the
-qanda section.
-
-
-
-
-
-Restart your nameserver and test it with dig. Should still
-work fine.
-
-
-
-----
-
-!! 5. A ''simple'' domain.
-
-
-__How to set up your own domain.__
-
-
-
-
-!!5.1 But first some dry theory
-
-
-
-First of all: you read all the stuff before
here right? You have
-to.
-
-
-
-
-
-Before we ''really'' start this section I'm going to serve you
-some theory on and an example of how DNS works. And you're going to
-read it because it's good for you. If you don't want to you should at
-least skim it very quickly. Stop skimming when you get to what should
-go in your named.conf file.
-
-
-
-
-
-DNS is a hierarchical, tree structured system. The top is written
-`.' and pronounced `root', as is usual for tree data-structures.
-Under . there are a number of Top Level Domains (TLDs); the best
-known ones are ORG, COM, EDU and NET, but there
-are many more. Just like a tree it has a root and it branches out.
-If you have any computer science background you will recognize DNS as
-a search tree, and you will be able to find nodes, leaf nodes and
-edges. The dots are nodes, the edges are on the names.
-
-
-
-
-
-When looking for a machine the query proceeds recursively into the
-hierarchy starting at the root. If you want to find the address of
-prep.ai.mit.edu., your nameserver has to start asking somewhere.
-It starts by looking it its cache. If it knows the answer, having
-cached it before, it will answer right away as we saw in the last
-section. If it does not know it will see how closely it can match the
-requested name and use whatever information it has cached. In the
-worst case there is no match but the `.' (root) of the name, and the
-root servers have to be consulted. It will remove the leftmost parts
-one at a time, checking if it knows anything about ai.mit.edu.,
-then mit.edu., then edu., and if not that it does know about
-. because that was in the hints file. It will then ask a .
-server about prep.ai.mit.edu. This . server will not know
-the answer, but it will help your server on its way by giving a
-referral, telling it where to look instead. These referrals will
-eventually lead your server to a nameserver that knows the answer. I
-will illustrate that now. +norec means that dig is asking
-non-recursive questions so that we get to do the recursion ourselves.
-The other options are to reduce the amount of dig produces so this
-won't go on for too many pages:
-
-
-
-
-
- $ ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 980
- ;; flags: qr ra; QUERY: 1, ANSWER: , AUTHORITY: 13, ADDITIONAL:
- ;; AUTHORITY SECTION:
- . 518400 IN NS J.ROOT-SERVERS.NET.
- . 518400 IN NS K.ROOT-SERVERS.NET.
- . 518400 IN NS L.ROOT-SERVERS.NET.
- . 518400 IN NS M.ROOT-SERVERS.NET.
- . 518400 IN NS A.ROOT-SERVERS.NET.
- . 518400 IN NS B.ROOT-SERVERS.NET.
- . 518400 IN NS C.ROOT-SERVERS.NET.
- . 518400 IN NS D.ROOT-SERVERS.NET.
- . 518400 IN NS E.ROOT-SERVERS.NET.
- . 518400 IN NS F.ROOT-SERVERS.NET.
- . 518400 IN NS G.ROOT-SERVERS.NET.
- . 518400 IN NS H.ROOT-SERVERS.NET.
- . 518400 IN NS I.ROOT-SERVERS.NET.
-
-
-
-
-
-
-
-This is a referral. It is giving us an "Authority section" only, no
-"Answer section". Our own nameserver refers us to a nameserver. Pick
-one at random:
-
-
-
-
-
- $ dig +norec +noques +nostats +nocmd prep.ai.mit.edu. @D.ROOT-SERVERS.NET.
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58260
- ;; flags: qr; QUERY: 1, ANSWER: , AUTHORITY: 3, ADDITIONAL: 3
- ;; AUTHORITY SECTION:
- mit.edu. 172800 IN NS BITSY.mit.edu.
- mit.edu. 172800 IN NS STRAWB.mit.edu.
- mit.edu. 172800 IN NS W20NS.mit.edu.
- ;; ADDITIONAL SECTION:
- BITSY.mit.edu. 172800 IN A 18.72..3
- STRAWB.mit.edu. 172800 IN A 18.71..151
- W20NS.mit.edu. 172800 IN A 18.70..160
-
-
-
-
-
-
-
-It refers us to MIT.EDU servers at once. Again pick one at random:
-
-
-
-
-
- $ dig +norec +noques +nostats +nocmd prep.ai.mit.edu. @BITSY.mit.edu.
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29227
- ;; flags: qr ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4
- ;; ANSWER SECTION:
- prep.ai.mit.edu. 10562 IN A 198.186.203.77
- ;; AUTHORITY SECTION:
- ai.mit.edu. 21600 IN NS FEDEX.ai.mit.edu.
- ai.mit.edu. 21600 IN NS LIFE.ai.mit.edu.
- ai.mit.edu. 21600 IN NS ALPHA-BITS.ai.mit.edu.
- ai.mit.edu. 21600 IN NS BEET-CHEX.ai.mit.edu.
- ;; ADDITIONAL SECTION:
- FEDEX.ai.mit.edu. 21600 IN A 192.148.252.43
- LIFE.ai.mit.edu. 21600 IN A 128.52.32.80
- ALPHA-BITS.ai.mit.edu. 21600 IN A 128.52.32.5
- BEET-CHEX.ai.mit.edu. 21600 IN A 128.52.32.22
-
-
-
-
-
-
-
-This time we got a "ANSWER SECTION", and an answer for our
-question. The "AUTHORITY SECTION" contains information about which
-servers to ask about ai.mit.edu the next time. So you can ask
-them directly the next time you wonder about ai.mit.edu names.
-Named also gathered information about mit.edu, so of
-www.mit.edu is requested it is much closer to being able to
-answer the question.
-
-
-
-
-
-So starting at . we found the successive name servers for each
-level in the domain name by referral. If you had used your own DNS
-server instead of using all those other servers, your named would
-of-course cache all the information it found while digging this out
-for you, and it would not have to ask again for a while.
-
-
-
-
-
-In the tree analogue each ``.'' in the name is a branching
-point. And each part between the ``.''s are the names of
-individual branches in the tree. One climbs the tree by taking the
-name we want (prep.ai.mit.edu) asking the root (.) or
-whatever servers father from the root toward prep.ai.mit.edu we
-have information about in the cache. Once the cache limits are
-reached the recursive resolver goes out asking servers, pursuing
-referrals (edges) further into the name.
-
-
-
-
-
-A much less talked about, but just as important domain is
-in-addr.arpa. It too is nested like the `normal' domains.
-in-addr.arpa allows us to get the host's name when we have its
-address. A important thing to note here is that the IP addresses are
-written in reverse order in the in-addr.arpa domain. If you have
-the address of a machine: 198.186.203.77 named proceeds to find
-the named 77.203.168.198.in-addr.arpa/ just like it did for
-prep.ai.mit.edu. Example: Finding no cache entry for any match
-but `.', ask a root server, m.root-servers.net refers you to some
-other root servers. b.root-servers.net refers you directly to
-bitsy.mit.edu/. You should be able to take it from there.
-
-
-
-
-
-
-
-!!5.2 Our own domain
-
-
-
-Now to define our own domain. We're going to make the domain
-linux.bogus and define machines in it. I use a totally bogus
-domain name to make sure we disturb no-one Out There.
-
-
-
-
-
-One more thing before we start: Not all characters are allowed in
-host names. We're restricted to the characters of the English
-alphabet: a-z, and numbers -9 and the character '-' (dash). Keep to
-those characters (BIND 9 will not bug you if you break this rule, BIND
-8 will). Upper and lower-case characters are the same for DNS, so
-pat.uio.no is identical to Pat.UiO.No.
-
-
-
-
-
-We've already started this part with this line in named.conf:
-
-
-
-----
-
- zone "..127.in-addr.arpa" {
- type master;
- file "pz/127..";
- };
-
-----
-
-
-
-
-
-Please note the lack of `.' at the end of the domain names in
-this file. This says that now we will define the zone
-..127.in-addr.arpa, that we're the master server for it and
-that it is stored in a file called pz/127... We've already
-set up this file, it reads:
-
-
-
-----
-
- $TTL 3D
- @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
- 1 ; Serial
- 8H ; Refresh
- 2H ; Retry
- 4W ; Expire
- 1D) ; Minimum TTL
- NS ns.linux.bogus.
- 1 PTR localhost.
-
-----
-
-
-
-
-
-Please note the `.' at the end of all the full domain names in
-this file, in contrast to the named.conf file above. Some people
-like to start each zone file with a $ORIGIN directive, but
-this is superfluous. The origin (where in the DNS hierarchy it
-belongs) of a zone file is specified in the zone section of the
-named.conf file; in this case it's ..127.in-addr.arpa.
-
-
-
-
-
-This `zone file' contains 3 `resource records' (RRs): A SOA RR. A
-NS RR and a PTR RR. SOA is short for Start Of Authority. The `@' is a
-special notation meaning the origin, and since the `domain' column for
-this file says ..127.in-addr.arpa the first line really means
-
-
-
-
-
- ..127.in-addr.arpa. IN SOA ...
-
-
-
-
-
-
-
-NS is the Name Server RR. There is no '@' at the start of this
-line; it is implicit since the previous line started with a '@'.
-Saves some typing that. So the NS line could also be written
-
-
-
-
-
-..127.in-addr.arpa. IN NS ns.linux.bogus
-
-
-
-
-
-
-
-It tells DNS what machine is the name server of the domain
-..127.in-addr.arpa, it is ns.linux.bogus. 'ns' is a
-customary name for name-servers, but as with web servers who are
-customarily named www.''something''. The name may be anything.
-
-
-
-
-
-And finally the PTR (Domain Name Pointer) record says that the host
-at address 1 in the subnet ..127.in-addr.arpa, i.e., 127...1
-is named localhost.
-
-
-
-
-
-The SOA record is the preamble to ''all'' zone files, and there
-should be exactly one in each zone file, at the top (but after the
-$TTL directive). It describes the zone, where it comes from (a
-machine called ns.linux.bogus), who is responsible for its
-contents (hostmaster@linux.bogus; you should insert your e-mail
-address here), what version of the zone file this is (serial: 1), and
-other things having to do with caching and secondary DNS servers. For
-the rest of the fields (refresh, retry, expire and minimum) use the
-numbers used in this HOWTO and you should be safe. Before the SOA
-comes a mandatory line, the $TTL 3D line. Put it in all your
-zone files.
-
-
-
-
-
-Now restart your named (rndc stop; named) and use dig to
-examine your handy work. -x asks for the inverse query:
-
-
-
-
-
- $ dig -x 127...1
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30944
- ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL:
- ;; QUESTION SECTION:
- ;1...127.in-addr.arpa. IN PTR
- ;; ANSWER SECTION:
- 1...127.in-addr.arpa. 259200 IN PTR localhost.
- ;; AUTHORITY SECTION:
- ..127.in-addr.arpa. 259200 IN NS ns.linux.bogus.
- ;; Query time: 3 msec
- ;; SERVER: 127...1#53(127...1)
- ;; WHEN: Sun Dec 23 03:02:39 2001
- ;; MSG SIZE rcvd: 91
-
-
-
-
-
-
-
-So it manages to get localhost from 127...1, good. Now for
-our main task, the linux.bogus domain, insert a new 'zone'
-section in named.conf:
-
-
-
-----
-
- zone "linux.bogus" {
- type master;
- notify no;
- file "pz/linux.bogus";
- };
-
-----
-
-
-
-
-
-Note again the lack of ending `.' on the domain name in the
-named.conf file.
-
-
-
-
-
-In the linux.bogus zone file we'll put some totally bogus
-data:
-
-
-
-----
-
- ;
- ; Zone file for linux.bogus
- ;
- ; The full zone file
- ;
- $TTL 3D
- @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
- 199802151 ; serial, todays date + todays serial #
- 8H ; refresh, seconds
- 2H ; retry, seconds
- 4W ; expire, seconds
- 1D ) ; minimum, seconds
- ;
- NS ns ; Inet Address of name server
- MX 10 mail.linux.bogus ; Primary Mail Exchanger
- MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
- ;
- localhost A 127...1
- ns A 192.168.196.2
- mail A 192.168.196.4
-
-----
-
-
-
-
-
-Two things must be noted about the SOA record. ns.linux.bogus
-''must'' be a actual machine with a A record. It is not legal to
-have a CNAME record for the machine mentioned in the SOA record. Its
-name need not be `ns', it could be any legal host name. Next,
-hostmaster.linux.bogus should be read as hostmaster@linux.bogus.
-This should be a mail alias, or a mailbox, where the person(s)
-maintaining DNS should read mail frequently. Any mail regarding the
-domain will be sent to the address listed here. The name need not be
-`hostmaster', it can be your normal e-mail address, but the e-mail
-address `hostmaster' is often expected to work as well.
-
-
-
-
-
-There is one new RR type in this file, the MX, or Mail eXchanger
-RR. It tells mail systems where to send mail that is addressed to
-someone@linux.bogus, namely to mail.linux.bogus or
-mail.friend.bogus. The number before each machine name is that
-MX RR's priority. The RR with the lowest number (10) is the one mail
-should be sent to if possible. If that fails the mail can be sent to
-one with a higher number, a secondary mail handler, i.e.,
-mail.friend.bogus which has priority 20 here.
-
-
-
-
-
-Reload named by running rndc reload. Examine the results
-with dig:
-
-
-
-
-
- $ dig any linux.bogus
- ; <<>> DiG 9.1.3 <<>> any linux.bogus
- ;; global options: printcmd
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55239
- ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 1
- ;; QUESTION SECTION:
- ;linux.bogus. IN ANY
- ;; ANSWER SECTION:
- linux.bogus. 259200 IN SOA ns.linux.bogus. \
- hostmaster.linux.bogus. 199802151 28800 7200 2419200 86400
- linux.bogus. 259200 IN NS ns.linux.bogus.
- linux.bogus. 259200 IN MX 20 mail.friend.bogus.
- linux.bogus. 259200 IN MX 10 mail.linux.bogus.linux.bogus.
- ;; AUTHORITY SECTION:
- linux.bogus. 259200 IN NS ns.linux.bogus.
- ;; ADDITIONAL SECTION:
- ns.linux.bogus. 259200 IN A 192.168.196.2
- ;; Query time: 4 msec
- ;; SERVER: 127...1#53(127...1)
- ;; WHEN: Sun Dec 23 03:06:45 2001
- ;; MSG SIZE rcvd: 184
-
-
-
-
-
-
-
-Upon careful examination you will discover a bug. The line
-
-
-
-
- linux.bogus. 259200 IN MX 10 mail.linux.bogus.linux.bogus.
-
-
-
-
-
-
-
-is all wrong. It should be
-
-
-
-
-
- linux.bogus. 259200 IN MX 10 mail.linux.bogus.
-
-
-
-
-
-
-
-I deliberately made a mistake so you could learn from it :-)
-Looking in the zone file we find this line:
-
-
-
-
-
- MX 10 mail.linux.bogus ; Primary Mail Exchanger
-
-
-
-
-
-
-
-It is missing a period. Or has a 'linux.bogus' too many. If a
-machine name does not end in a period in a zone file the origin is
-added to its end causing the double linux.bogus.linux.bogus. So
-either
-
-
-
-----
-
- MX 10 mail.linux.bogus. ; Primary Mail Exchanger
-
-----
-
-
-or
-
-
-
-----
-
- MX 10 mail ; Primary Mail Exchanger
-
-----
-
-
-is correct. I prefer the latter form, it's less to type. There are
-some BIND experts that disagree, and some that agree with this. In a
-zone file the domain should either be written out and ended with a
-`.' or it should not be included at all, in which case it
-defaults to the origin.
-
-
-
-
-
-I must stress that in the named.conf file there should ''not'' be
-`.'s after the domain names. You have no idea how many times a
-`.' too many or few have fouled up things and confused the h*ll
-out of people.
-
-
-
-
-
-So having made my point here is the new zone file, with some extra
-information in it as well:
-
-
-
-----
-
- ;
- ; Zone file for linux.bogus
- ;
- ; The full zone file
- ;
- $TTL 3D
- @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
- 199802151 ; serial, todays date + todays serial #
- 8H ; refresh, seconds
- 2H ; retry, seconds
- 4W ; expire, seconds
- 1D ) ; minimum, seconds
- ;
- TXT "Linux.Bogus, your DNS consultants"
- NS ns ; Inet Address of name server
- NS ns.friend.bogus.
- MX 10 mail ; Primary Mail Exchanger
- MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
- localhost A 127...1
- gw A 192.168.196.1
- TXT "The router"
- ns A 192.168.196.2
- MX 10 mail
- MX 20 mail.friend.bogus.
- www CNAME ns
- donald A 192.168.196.3
- MX 10 mail
- MX 20 mail.friend.bogus.
- TXT "DEK"
- mail A 192.168.196.4
- MX 10 mail
- MX 20 mail.friend.bogus.
- ftp A 192.168.196.5
- MX 10 mail
- MX 20 mail.friend.bogus.
-
-----
-
-
-
-
-
-
-
-
-CNAME (Canonical NAME) is a way to give each machine several names.
-So www is an alias for ns. CNAME record usage is a bit
-controversial. But it's safe to follow the rule that a MX, CNAME or
-SOA record should ''never'' refer to a CNAME record, they should only
-refer to something with an A record, so it is inadvisable to have
-
-
-
-----
-
- foobar CNAME www ; NO!
-
-----
-
-
-but correct to have
-
-
-
-----
-
- foobar CNAME ns ; Yes!
-
-----
-
-
-
-
-
-Load the new database by running rndc reload, which causes
-named to read its files again.
-
-
-
-
-
- $ dig linux.bogus axfr
- ; <<>> DiG 9.1.3 <<>> linux.bogus axfr
- ;; global options: printcmd
- linux.bogus. 259200 IN SOA ns.linux.bogus. hostmaster.linux.bogus. 199802151 28800 7200 2419200 86400
- linux.bogus. 259200 IN NS ns.linux.bogus.
- linux.bogus. 259200 IN MX 10 mail.linux.bogus.
- linux.bogus. 259200 IN MX 20 mail.friend.bogus.
- donald.linux.bogus. 259200 IN A 192.168.196.3
- donald.linux.bogus. 259200 IN MX 10 mail.linux.bogus.
- donald.linux.bogus. 259200 IN MX 20 mail.friend.bogus.
- donald.linux.bogus. 259200 IN TXT "DEK"
- ftp.linux.bogus. 259200 IN A 192.168.196.5
- ftp.linux.bogus. 259200 IN MX 10 mail.linux.bogus.
- ftp.linux.bogus. 259200 IN MX 20 mail.friend.bogus.
- gw.linux.bogus. 259200 IN A 192.168.196.1
- gw.linux.bogus. 259200 IN TXT "The router"
- localhost.linux.bogus. 259200 IN A 127...1
- mail.linux.bogus. 259200 IN A 192.168.196.4
- mail.linux.bogus. 259200 IN MX 10 mail.linux.bogus.
- mail.linux.bogus. 259200 IN MX 20 mail.friend.bogus.
- ns.linux.bogus. 259200 IN MX 10 mail.linux.bogus.
- ns.linux.bogus. 259200 IN MX 20 mail.friend.bogus.
- ns.linux.bogus. 259200 IN A 192.168.196.2
- www.linux.bogus. 259200 IN CNAME ns.linux.bogus.
- linux.bogus. 259200 IN SOA ns.linux.bogus. hostmaster.linux.bogus. 199802151 28800 7200 2419200 86400
- ;; Query time: 41 msec
- ;; SERVER: 127...1#53(127...1)
- ;; WHEN: Sun Dec 23 03:12:31 2001
- ;; XFR size: 23 records
-
-
-
-
-
-
-
-That's good. As you see it looks a bit like the zone file itself.
-Let's check what it says for www alone:
-
-
-
-
-
- $ dig www.linux.bogus
- ; <<>> DiG 9.1.3 <<>> www.linux.bogus
- ;; global options: printcmd
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16633
- ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL:
- ;; QUESTION SECTION:
- ;www.linux.bogus. IN A
- ;; ANSWER SECTION:
- www.linux.bogus. 259200 IN CNAME ns.linux.bogus.
- ns.linux.bogus. 259200 IN A 192.168.196.2
- ;; AUTHORITY SECTION:
- linux.bogus. 259200 IN NS ns.linux.bogus.
- ;; Query time: 5 msec
- ;; SERVER: 127...1#53(127...1)
- ;; WHEN: Sun Dec 23 03:14:14 2001
- ;; MSG SIZE rcvd: 80
-
-
-
-
-
-
-
-In other words, the real name of www.linux.bogus is
-ns.linux.bogus, and it gives you some of the information it has
-about ns as well, enough to connect to it if you were a program.
-
-
-
-
-
-Now we're halfway.
-
-
-
-
-!!5.3 The reverse zone
-
-
-
-Now programs can convert the names in linux.bogus to addresses
-which they can connect to. But also required is a reverse zone, one
-making DNS able to convert from an address to a name. This name is
-used by a lot of servers of different kinds (FTP, IRC, WWW and others)
-to decide if they want to talk to you or not, and if so, maybe even
-how much priority you should be given. For full access to all services
-on the Internet a reverse zone is required.
-
-
-
-
-
-Put this in named.conf:
-
-
-
-----
-
- zone "196.168.192.in-addr.arpa" {
- type master;
- notify no;
- file "pz/192.168.196";
- };
-
-----
-
-
-
-
-
-This is exactly as with the ..127.in-addr.arpa, and the
-contents are similar:
-
-
-
-----
-
- $TTL 3D
- @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
- 199802151 ; Serial, todays date + todays serial
- 8H ; Refresh
- 2H ; Retry
- 4W ; Expire
- 1D) ; Minimum TTL
- NS ns.linux.bogus.
- 1 PTR gw.linux.bogus.
- 2 PTR ns.linux.bogus.
- 3 PTR donald.linux.bogus.
- 4 PTR mail.linux.bogus.
- 5 PTR ftp.linux.bogus.
-
-----
-
-
-
-
-
-Now you reload your named (rndc reload) and examine your
-work with dig again:
-
-
-
-----
-
- $ dig -x 192.168.196.4
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58451
- ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
- ;; QUESTION SECTION:
- ;4.196.168.192.in-addr.arpa. IN PTR
- ;; ANSWER SECTION:
- 4.196.168.192.in-addr.arpa. 259200 IN PTR mail.linux.bogus.
- ;; AUTHORITY SECTION:
- 196.168.192.in-addr.arpa. 259200 IN NS ns.linux.bogus.
- ;; ADDITIONAL SECTION:
- ns.linux.bogus. 259200 IN A 192.168.196.2
- ;; Query time: 4 msec
- ;; SERVER: 127...1#53(127...1)
- ;; WHEN: Sun Dec 23 03:16:05 2001
- ;; MSG SIZE rcvd: 107
-
-----
-
-
-
-
-
-so, it looks OK, dump the whole thing to examine that too:
-
-
-
-----
-
- $ dig 196.168.192.in-addr.arpa. AXFR
- ; <<>> DiG 9.1.3 <<>> 196.168.192.in-addr.arpa. AXFR
- ;; global options: printcmd
- 196.168.192.in-addr.arpa. 259200 IN SOA ns.linux.bogus. \
- hostmaster.linux.bogus. 199802151 28800 7200 2419200 86400
- 196.168.192.in-addr.arpa. 259200 IN NS ns.linux.bogus.
- 1.196.168.192.in-addr.arpa. 259200 IN PTR gw.linux.bogus.
- 2.196.168.192.in-addr.arpa. 259200 IN PTR ns.linux.bogus.
- 3.196.168.192.in-addr.arpa. 259200 IN PTR donald.linux.bogus.
- 4.196.168.192.in-addr.arpa. 259200 IN PTR mail.linux.bogus.
- 5.196.168.192.in-addr.arpa. 259200 IN PTR ftp.linux.bogus.
- 196.168.192.in-addr.arpa. 259200 IN SOA ns.linux.bogus. \
- hostmaster.linux.bogus. 199802151 28800 7200 2419200 86400
- ;; Query time: 6 msec
- ;; SERVER: 127...1#53(127...1)
- ;; WHEN: Sun Dec 23 03:16:58 2001
- ;; XFR size: 9 records
-
-----
-
-
-
-
-
-Looks good! If your output didn't look like that look for
-error-messages in your syslog, I explained how to do that in the first
-section under the heading
-Starting named
-
-
-
-!!5.4 Words of caution
-
-
-
-There are some things I should add here. The IP numbers used in
-the examples above are taken from one of the blocks of 'private nets',
-i.e., they are not allowed to be used publicly on the Internet. So
-they are safe to use in an example in a HOWTO. The second thing is
-the notify no; line. It tells named not to notify its secondary
-(slave) servers when it has gotten a update to one of its zone files.
-In BIND 8 and later the named can notify the other servers listed in
-NS records in the zone file when a zone is updated. This is handy for
-ordinary use. But for private experiments with zones this feature
-should be off --- we don't want the experiment to pollute the Internet
-do we?
-
-
-
-
-
-And, of course, this domain is highly bogus, and so are all the
-addresses in it. For a real example of a real-life domain see the
-next main-section.
-
-
-
-
-!!5.5 Why reverse lookups don't work.
-
-
-
-There are a couple of ``gotchas'' that normally are avoided with
-name lookups that are often seen when setting up reverse zones.
-Before you go on you need reverse lookups of your machines working on
-your own nameserver. If it isn't go back and fix it before
-continuing.
-
-
-
-
-
-I will discuss two failures of reverse lookups as seen from outside
-your network:
-
-
-
-
-!The reverse zone isn't delegated.
-
-
-When you ask a service provider for a network-address range and a
-domain name the domain name is normally delegated as a matter of course.
-A delegation is the glue NS record that helps you get from one
-nameserver to another as explained in the dry theory section above.
-You read that, right? If your reverse zone doesn't work go back and
-read it. Now.
-
-
-
-
-
-The reverse zone also needs to be delegated. If you got the
-192.168.196 net with the linux.bogus domain from your
-provider they need to put NS records in for your reverse zone as
-well as for your forward zone. If you follow the chain from
-in-addr.arpa and up to your net you will probably find a break in
-the chain, most probably at your service provider. Having found the
-break in the chain contact your service-provider and ask them to
-correct the error.
-
-
-
-
-!You've got a classless subnet
-
-
-This is a somewhat advanced topic, but classless subnets are very
-common these days and you probably have one if you're a small company.
-
-
-
-
-
-A classless subnet is what keeps the Internet going these days.
-Some years ago there was much ado about the shortage of IP numbers.
-The smart people in IETF (the Internet Engineering Task Force, they
-keep the Internet working) stuck their heads together and solved the
-problem. At a price. The price is in part that you'll get less than
-a ``C'' subnet and some things may break. Please see
-Ask Mr. DNS for an
-good explanation of this and how to handle it.
-
-
-
-
-
-Did you read it? I'm not going to explain it so please read it.
-
-
-
-
-
-The first part of the problem is that your ISP must understand the
-technique described by Mr. DNS. Not all small ISPs have a working
-understanding of this. If so you might have to explain to them and be
-persistent. But be sure you understand it first ;-). They will then
-set up a nice reverse zone at their server which you can examine for
-correctness with dig.
-
-
-
-
-
-The second and last part of the problem is that you must understand
-the technique. If you're unsure go back and read about it again.
-Then you can set up your own classless reverse zone as described by
-Mr. DNS.
-
-
-
-
-
-There is another trap lurking here. (Very) Old resolvers will
-''not'' be able to follow the CNAME trick in the resolving chain
-and will fail to reverse-resolve your machine. This can result in the
-service assigning it an incorrect access class, deny access or
-something along those lines. If you stumble into such a service the
-only solution (that I know of) is for your ISP to insert your PTR
-record directly into their trick classless zone file instead of the
-trick CNAME record.
-
-
-
-
-
-Some ISPs will offer other ways to handle this, like Web based
-forms for you to input your reverse-mappings in or other automagical
-systems.
-
-
-
-
-!!5.6 Slave servers
-
-
-
-Once you have set up your zones correctly on the master servers you
-need to set up at least one slave server. Slave servers are needed
-for robustness. If your master goes down the people out there on the
-net will still be able to get information about your domain from the
-slave. A slave should be as long away from you as possible. Your
-master and slave should share as few as possible of these: Power
-supply, LAN, ISP, city and country. If all of these things are
-different for your master and slave you've found a really good slave.
-
-
-
-
-
-A slave is simply a nameserver that copies zone files from a
-master. You set it up like this:
-
-
-
-----
-
- zone "linux.bogus" {
- type slave;
- file "sz/linux.bogus";
- masters { 192.168.196.2; };
- };
-
-----
-
-
-
-
-
-A mechanism called zone-transfer is used to copy the data. The
-zone transfer is controlled by your SOA record:
-
-
-
-----
-
- @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
- 199802151 ; serial, todays date + todays serial #
- 8H ; refresh, seconds
- 2H ; retry, seconds
- 4W ; expire, seconds
- 1D ) ; minimum, seconds
-
-----
-
-
-
-
-
-A zone is only transferred if the serial number on the master is
-larger than on the slave. Every refresh interval the slave will check
-if the master has been updated. If the check fails (because the
-master is unavailable) it will retry the check every retry interval.
-If it continues to fail as long as the expire interval the slave will
-remove the zone from it's filesystem and no longer be a server for it.
-
-
-
-
-
-
-----
-
-!! 6. Basic security options.
-
-
-''By Jamie Norrish''
-
-
-
-
-
-__Setting configuration options to reduce the possibility of
-problems.__
-
-
-
-
-
-There are a few simple steps that you can take which will both make
-your server more secure and potentially reduce its load. The material
-presented here is nothing more than a starting point; if you are
-concerned about security (and you should be), please consult other
-resources on the net (see
-the last chapter).
-
-
-
-
-
-The following configuration directives occur in named.conf. If
-a directive occurs in the options section of the file, it applies
-to all zones listed in that file. If it occurs within a zone
-entry, it applies only to that zone. A zone entry overrides an
-options entry.
-
-
-
-
-!!6.1 Restricting zone transfers
-
-
-
-In order for your slave server(s) to be able to answer queries
-about your domain, they must be able to transfer the zone information
-from your primary server. Very few others have a need to do so.
-Therefore restrict zone transfers using the allow-transfer
-option, assuming 192.168.1.4 is the IP address of ns.friend.bogus and
-adding yourself for debugging purposes:
-
-
-
-----
-
- zone "linux.bogus" {
- allow-transfer { 192.168.1.4; localhost; };
- };
-
-----
-
-
-
-
-
-By restricting zone transfers you ensure that the only information
-available to people is that which they ask for directly - no one can
-just ask for all the details about your set-up.
-
-
-
-
-!!6.2 Protecting against spoofing
-
-
-
-Firstly, disable any queries for domains you don't own, except
-from your internal/local machines. This not only helps prevent
-malicious use of your DNS server, but also reduces unnecessary use of
-your server.
-
-
-
-----
-
- options {
- allow-query { 192.168.196./24; localhost; };
- };
- zone "linux.bogus" {
- allow-query { any; };
- };
- zone "196.168.192.in-addr.arpa" {
- allow-query { any; };
- };
-
-----
-
-
-
-
-
-Further, disable recursive queries except from internal/local
-sources. This reduces the risk of cache poisoning attacks (where false
-data is fed to your server).
-
-
-
-----
-
- options {
- allow-recursion { 192.168.196./24; localhost; };
- };
-
-----
-
-
-
-
-!!6.3 Running named as non-root
-
-
-
-It is a good idea to run named as a user other than root, so that
-if it is compromised the privileges gained by the cracker are as
-limited as possible. You first have to create a user for named to run
-under, and then modify whatever init script you use that starts
-named. Pass the new user name and group to named using the -u and -g
-flags.
-
-
-
-
-
-For example, in Debian GNU/Linux 2.2 you might modify your
-/etc/init.d/bind script to have the following line (where
-user named have been created):
-
-
-
-----
-
- start-stop-daemon --start --quiet --exec /usr/sbin/named -- -u named
-
-----
-
-
-
-
-
-The same can be done with Red Hat and the other distributions.
-
-
-
-
-
-Dave Lugo has described a secure dual chroot setup
-http://www.etherboy.com/dns/chrootdns.html which you may find
-interesting to read, it makes the host your run your named on even
-more secure.
-
-
-
-----
-
-!! 7. A real domain example
-
-
-__Where we list some ''real'' zone files__
-
-
-
-
-
-Users have suggested that I include a real example of a working
-domain as well as the tutorial example.
-
-
-
-
-
-I use this example with permission from David Bullock of LAND-5.
-These files were current 24th of September 1996, and were then edited
-to fit BIND 8 restrictions and use extensions by me. So, what you see
-here differs a bit from what you find if you query LAND-5's name
-servers now.
-
-
-
-
-!!7.1 /etc/named.conf (or /var/named/named.conf)
-
-
-
-Here we find master zone sections for the two reverse zones needed:
-the 127..0 net, as well as LAND-5's 206.6.177 subnet, and a
-primary line for land-5's forward zone land-5.com. Also note that
-instead of stuffing the files in a directory called pz, as I do
-in this HOWTO, he puts them in a directory called zone.
-
-
-
-----
-
- // Boot file for LAND-5 name server
- options {
- directory "/var/named";
- };
- controls {
- inet 127...1 allow { localhost; } keys { rndc_key; };
- };
- key "rndc_key" {
- algorithm hmac-md5;
- secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
- };
- zone "." {
- type hint;
- file "root.hints";
- };
- zone "..127.in-addr.arpa" {
- type master;
- file "zone/127..";
- };
- zone "land-5.com" {
- type master;
- file "zone/land-5.com";
- };
- zone "177.6.206.in-addr.arpa" {
- type master;
- file "zone/206.6.177";
- };
-
-----
-
-
-
-
-
-If you put this in your named.conf file to play with __PLEASE__
-put ``notify no;'' in the zone sections for the two land-5
-zones so as to avoid accidents.
-
-
-
-
-!!7.2 /var/named/root.hints
-
-
-
-Keep in mind that this file is dynamic, and the one listed here is
-old. You're better off using a new one as explained earlier.
-
-
-
-----
-
- ; <<>> DiG 8.1 <<>> @A.ROOT-SERVERS.NET.
- ; (1 server found)
- ;; res options: init recurs defnam dnsrch
- ;; got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10
- ;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: , ADDITIONAL: 13
- ;; QUERY SECTION:
- ;; ., type = NS, class = IN
- ;; ANSWER SECTION:
- . 6D IN NS G.ROOT-SERVERS.NET.
- . 6D IN NS J.ROOT-SERVERS.NET.
- . 6D IN NS K.ROOT-SERVERS.NET.
- . 6D IN NS L.ROOT-SERVERS.NET.
- . 6D IN NS M.ROOT-SERVERS.NET.
- . 6D IN NS A.ROOT-SERVERS.NET.
- . 6D IN NS H.ROOT-SERVERS.NET.
- . 6D IN NS B.ROOT-SERVERS.NET.
- . 6D IN NS C.ROOT-SERVERS.NET.
- . 6D IN NS D.ROOT-SERVERS.NET.
- . 6D IN NS E.ROOT-SERVERS.NET.
- . 6D IN NS I.ROOT-SERVERS.NET.
- . 6D IN NS F.ROOT-SERVERS.NET.
- ;; ADDITIONAL SECTION:
- G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4
- J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41..10
- K.ROOT-SERVERS.NET. 5w6d16h IN A 193..14.129
- L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12
- M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33
- A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41..4
- H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53
- B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9..107
- C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12
- D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90
- E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10
- I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17
- F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241
- ;; Total query time: 215 msec
- ;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET. 198.41..4
- ;; WHEN: Sun Feb 15 01:22:51 1998
- ;; MSG SIZE sent: 17 rcvd: 436
-
-----
-
-
-
-
-!!7.3 /var/named/zone/127..
-
-
-
-Just the basics, the obligatory SOA record, and a record that maps
-127...1 to localhost. Both are required. No more should be in
-this file. It will probably never need to be updated, unless your
-nameserver or hostmaster address changes.
-
-
-
-----
-
-$TTL 3D
-@ IN SOA land-5.com. root.land-5.com. (
-199609203 ; Serial
-28800 ; Refresh
-7200 ; Retry
-604800 ; Expire
-86400) ; Minimum TTL
-NS land-5.com.
-1 PTR localhost.
-
-----
-
-
-
-
-
-If you look at a random BIND installation you will probably find
-that the $TTL line is missing as it is here. It was not used
-before, and only version 8.2 of BIND has started to warn about its
-absence. BIND 9 ''requires'' the $TTL.
-
-
-
-
-!!7.4 /var/named/zone/land-5.com
-
-
-
-Here we see the mandatory SOA record, the needed NS records. We
-can see that he has a secondary name server at ns2.psi.net. This
-is as it should be, ''always'' have a off site secondary server as
-backup. We can also see that he has a master host called land-5
-which takes care of many of the different Internet services, and that
-he's done it with CNAMEs (a alternative is using A records).
-
-
-
-
-
-As you see from the SOA record, the zone file originates at
-land-5.com, the contact person is
-root@land-5.com. hostmaster is another oft used address for
-the contact person. The serial number is in the customary yyyymmdd
-format with todays serial number appended; this is probably the sixth
-version of zone file on the 20th of September 1996. Remember that the
-serial number ''must'' increase monotonically, here there is only
-''one'' digit for todays serial#, so after 9 edits he has to wait
-until tomorrow before he can edit the file again. Consider using two
-digits.
-
-
-
-----
-
-$TTL 3D
-@ IN SOA land-5.com. root.land-5.com. (
-199609206 ; serial, todays date + todays serial #
-8H ; refresh, seconds
-2H ; retry, seconds
-4W ; expire, seconds
-1D ) ; minimum, seconds
-NS land-5.com.
-NS ns2.psi.net.
-MX 10 land-5.com. ; Primary Mail Exchanger
-TXT "LAND-5 Corporation"
-localhost A 127...1
-router A 206.6.177.1
-land-5.com. A 206.6.177.2
-ns A 206.6.177.3
-www A 207.159.141.192
-ftp CNAME land-5.com.
-mail CNAME land-5.com.
-news CNAME land-5.com.
-funn A 206.6.177.2
-;
-; Workstations
-;
-ws-177200 A 206.6.177.200
-MX 10 land-5.com. ; Primary Mail Host
-ws-177201 A 206.6.177.201
-MX 10 land-5.com. ; Primary Mail Host
-ws-177202 A 206.6.177.202
-MX 10 land-5.com. ; Primary Mail Host
-ws-177203 A 206.6.177.203
-MX 10 land-5.com. ; Primary Mail Host
-ws-177204 A 206.6.177.204
-MX 10 land-5.com. ; Primary Mail Host
-ws-177205 A 206.6.177.205
-MX 10 land-5.com. ; Primary Mail Host
-; {Many repetitive definitions deleted - SNIP}
-ws-177250 A 206.6.177.250
-MX 10 land-5.com. ; Primary Mail Host
-ws-177251 A 206.6.177.251
-MX 10 land-5.com. ; Primary Mail Host
-ws-177252 A 206.6.177.252
-MX 10 land-5.com. ; Primary Mail Host
-ws-177253 A 206.6.177.253
-MX 10 land-5.com. ; Primary Mail Host
-ws-177254 A 206.6.177.254
-MX 10 land-5.com. ; Primary Mail Host
-
-----
-
-
-
-
-
-If you examine land-5s nameserver you will find that the host names
-are of the form ws_''number''. As of late BIND 4 versions named
-started enforcing the restrictions on what characters may be used in
-host names. So that does not work with BIND 8 at all, and I
-substituted '-' (dash) for '_' (underline) for use in this HOWTO.
-But, as mentioned earlier, BIND 9 no longer enforces this restriction.
-
-
-
-
-
-Another thing to note is that the workstations don't have
-individual names, but rather a prefix followed by the two last parts
-of the IP numbers. Using such a convention can simplify maintenance
-significantly, but can be a bit impersonal, and, in fact, be a source
-of irritation among your customers.
-
-
-
-
-
-We also see that funn.land-5.com is an alias for
-land-5.com, but using an A record, not a CNAME record.
-
-
-
-
-!!7.5 /var/named/zone/206.6.177
-
-
-
-I'll comment on this file below
-
-
-
-----
-
-$TTL 3D
-@ IN SOA land-5.com. root.land-5.com. (
-199609206 ; Serial
-28800 ; Refresh
-7200 ; Retry
-604800 ; Expire
-86400) ; Minimum TTL
-NS land-5.com.
-NS ns2.psi.net.
-;
-; Servers
-;
-1 PTR router.land-5.com.
-2 PTR land-5.com.
-2 PTR funn.land-5.com.
-;
-; Workstations
-;
-200 PTR ws-177200.land-5.com.
-201 PTR ws-177201.land-5.com.
-202 PTR ws-177202.land-5.com.
-203 PTR ws-177203.land-5.com.
-204 PTR ws-177204.land-5.com.
-205 PTR ws-177205.land-5.com.
-; {Many repetitive definitions deleted - SNIP}
-250 PTR ws-177250.land-5.com.
-251 PTR ws-177251.land-5.com.
-252 PTR ws-177252.land-5.com.
-253 PTR ws-177253.land-5.com.
-254 PTR ws-177254.land-5.com.
-
-----
-
-
-
-
-
-The reverse zone is the bit of the setup that seems to cause the
-most grief. It is used to find the host name if you have the IP
-number of a machine. Example: you are an FTP server and accept
-connections from FTP clients. As you are a Norwegian FTP server you
-want to accept more connections from clients in Norway and other
-Scandinavian countries and less from the rest of the world. When you
-get a connection from a client the C library is able to tell you the
-IP number of the connecting machine because the IP number of the
-client is contained in all the packets that are passed over the
-network. Now you can call a function called gethostbyaddr that looks
-up the name of a host given the IP number. Gethostbyaddr will ask a
-DNS server, which will then traverse the DNS looking for the machine.
-Supposing the client connection is from ws-177200.land-5.com. The IP
-number the C library provides to the FTP server is 206.6.177.200. To
-find out the name of that machine we need to find
-200.177.6.206.in-addr.arpa. The DNS server will first find the
-arpa. servers, then find in-addr.arpa. servers, following
-the reverse trail through 206, then 6 and at last finding the server
-for the 177.6.206.in-addr.arpa zone at LAND-5. From which it
-will finally get the answer that for 200.177.6.206.in-addr.arpa
-we have a ``PTR ws-177200.land-5.com'' record, meaning that the
-name that goes with 206.6.177.200 is ws-177200.land-5.com.
-
-
-
-
-
-The FTP server prioritizes connections from the Scandinavian
-countries, i.e., *.no, *.se, *.dk, the name
-ws-177200.land-5.com clearly does not match any of those, and the
-server will put the connection in a connection class with less
-bandwidth and fewer clients allowed. If there was ''no'' reverse
-mapping of 206.2.177.200 through the in-addr.arpa zone the
-server would have been unable to find the name at all and would have
-to settle to comparing 206.2.177.200 with *.no, *.se
-and *.dk, none of which will match at all, it may even deny the
-connection for lack of classification.
-
-
-
-
-
-Some people will tell you that reverse lookup mappings are only
-important for servers, or not important at all. Not so: Many ftp,
-news, IRC and even some http (WWW) servers will ''not'' accept
-connections from machines of which they are not able to find the name.
-So reverse mappings for machines are in fact ''mandatory''.
-
-
-
-----
-
-!! 8. Maintenance
-
-
-__Keeping it working.__
-
-
-
-
-
-There is one maintenance task you have to do on nameds, other than
-keeping them running. That's keeping the root.hints file
-updated. The easiest way is using dig. First run dig with
-no arguments you will get the root.hints according to your own
-server. Then ask one of the listed root servers with dig
-@rootserver. You will note that the output looks terribly like a
-root.hints file. Save it to a file (dig @e.root-servers.net
-. ns >root.hints.new) and replace the old root.hints with it.
-
-
-
-
-
-Remember to reload named after replacing the cache file.
-
-
-
-
-
-Al Longyear sent me this script that can be run automatically to
-update root.hints. Install a crontab entry to run it once a
-month and forget it. The script assumes you have mail working and
-that the mail-alias `hostmaster' is defined. You must hack it to suit
-your setup.
-
-
-
-----
-
-#!/bin/sh
-#
-# Update the nameserver cache information file once per month.
-# This is run automatically by a cron entry.
-#
-# Original by Al Longyear
-# Updated for BIND 8 by Nicolai Langfeldt
-# Miscelanious error-conditions reported by David A. Ranch
-# Ping test suggested by Martin Foster
-# named up-test suggested by Erik Bryer.
-#
-(
-echo "To: hostmaster <hostmaster>"
-echo "From: system <root>"
-# Is named up? Check the status of named.
-case `rndc status 2>&1` in
-*refused*)
-echo "named is DOWN. root.hints was NOT updated"
-echo
-exit
-;;
-esac
-PATH=/sbin:/usr/sbin:/bin:/usr/bin:
-export PATH
-# NOTE: /var/named must be writable only by trusted users or this script
-# will cause root compromise/denial of service opportunities.
-cd /var/named 2>/dev/null || {
-echo "Subject: Cannot cd to /var/named, error $?"
-echo
-echo "The subject says it all"
-exit 1
-}
-# Are we online? Ping a server at your ISP
-case `ping -qnc 1 some.machine.net 2>&1` in
-*'100% packet loss'*)
-echo "Subject: root.hints NOT updated. The network is DOWN."
-echo
-echo "The subject says it all"
-exit 1
-;;
-esac
-dig @e.root-servers.net . ns >root.hints.new 2> errors
-case `cat root.hints.new` in
-*NOERROR*)
-# It worked
-:;;
-*)
-echo "Subject: The root.hints file update has FAILED."
-echo
-echo "The root.hints update has failed"
-echo "This is the dig output reported:"
-echo
-cat root.hints.new errors
-exit 1
-;;
-esac
-echo "Subject: The root.hints file has been updated"
-echo
-echo "The root.hints file has been updated to contain the following
-information:"
-echo
-cat root.hints.new
-chown root.root root.hints.new
-chmod 444 root.hints.new
-rm -f root.hints.old errors
-mv root.hints root.hints.old
-mv root.hints.new root.hints
-rndc restart
-echo
-echo "The nameserver has been restarted to ensure that the update is complete."
-echo "The previous root.hints file is now called
-/var/named/root.hints.old."
-) 2>&1 | /usr/lib/sendmail -t
-exit
-
-----
-
-
-
-
-
-Some of you might have picked up that the root.hints file is
-also available by ftp from Internic. Please don't use ftp to update
-root.hints, the above method is much more friendly to the net,
-and Internic.
-
-
-
-----
-
-!!9. Migrating to BIND 9
-
-
-The BIND 9 distribution, and the prepackaged versions too, contains
-a document called migration that contains notes about how to
-migrate from BIND 8 to BIND 9. The document is very straight forward.
-If you installed binary packages it's likely stored in
-/usr/share/doc/bind* or /usr/doc/bind* somewhere.
-
-
-
-
-
-If you're running BIND 4, you may find a document called
-migration-4to9 in the same place.
-
-
-
-----
-
-!! 10. Questions and Answers
-
-
-Please read this section before mailing me.
-
-
-
-
-
-#My named wants a named.boot file
-
-
-You are reading the wrong HOWTO. Please see the old version of
-this HOWTO, which covers BIND 4, at
-http://langfeldt.net/DNS-HOWTO/
-
-
-
-#
-
-#How do use DNS from inside a firewall?
-
-
-A hint: forward only;. You might also need
-
-
-
-----
-
-query-source port 53;
-
-----
-
-
-inside the ``options'' part of the named.conf file as suggested
-in the example
-caching section.
-
-
-
-
-#
-
-#How do I make DNS rotate through the available addresses for a
-service, say www.busy.site to obtain a load balancing effect,
-or similar?
-
-
-Make several __A__ records for www.busy.site and use BIND
-4.9.3 or later. Then BIND will round-robin the answers. It will
-''not'' work with earlier versions of BIND.
-
-
-
-
-#
-
-#I want to set up DNS on a (closed) intranet. What do I do?
-
-
-You drop the root.hints file and just do zone files. That
-also means you don't have to get new hint files all the time.
-
-
-
-
-#
-
-#How do I set up a secondary (slave) name server?
-
-
-If the primary/master server has address 127...1 you put a line
-like this in the named.conf file of your secondary:
-
-
-
-----
-
-zone "linux.bogus" {
-type slave;
-file "sz/linux.bogus";
-masters { 127...1; };
-};
-
-----
-
-
-You may list several alternate master servers the zone can be copied
-from inside the masters list, separated by ';' (semicolon).
-
-
-
-
-#
-
-#I want BIND running when I'm disconnected from the net.
-
-
-There are four items regarding this:
-
-
-
-
-
-#*Specific to BIND 8/9, Adam L Rice has sent me this e-mail, about
-how to run DNS painlessly on a dialup machine:
-
-
-I have discovered with newer versions of BIND that this
-[[<em/shuffeling files, -ed/] is no longer necessary. There is a
-"forward" directive in addition to the "forwarders" directive that
-controls how they are used. The default setting is "forward first",
-which first asks each of the forwarders, and then tries the normal
-approach of doing the legwork itself if that fails. This gives the
-familiar behaviour of gethostbyname() taking an inordinately long time
-when the link is not up. But if "forward only" is set, then BIND
-gives up when it doesn't get a response from the forwarders, and
-gethostbyname() returns immediately. Hence there is no need to
-perform sleight-of-hand with files in /etc and restart the server.
-In my case, I just added the lines
-forward only;
-forwarders { 193.133.58.5; };
-to the options { } section of my named.conf file. It works very
-nicely. The only disadvantage of this is that it reduces an incredibly
-sophisticated piece of DNS software to the status of a dumb cache. To
-some extent, I would just like to run a dumb cache for DNS instead,
-but there doesn't seem to be such a piece of software available for
-Linux.
-
-
-
-#*
-
-#*I have received this mail from Ian Clark
-<ic@deakin.edu.au> where he explains his way of doing this:
-
-
-I run named on my 'Masquerading' machine here. I have
-two root.hints files, one called root.hints.real which contains
-the real root server names and the other called root.hints.fake
-which contains...
-----
-; root.hints.fake
-; this file contains no information
-----
-When I go off line I copy the root.hints.fake file to root.hints and
-restart named.
-When I go online I copy root.hints.real to root.hints and restart
-named.
-This is done from ip-down & ip-up respectively.
-The first time I do a query off line on a domain name named doesn't
-have details for it puts an entry like this in messages..
-Jan 28 20:10:11 hazchem named[[10147]: No root nameserver for class IN
-which I can live with.
-It certainly seems to work for me. I can use the nameserver for
-local machines while off the 'net without the timeout delay for
-external domain names and I while on the 'net queries for external
-domains work normally
-
-
-
-
-Peter Denison thought that Ian does not go far enough though. He
-writes:
-
-
-
-
-
-When connected) serve all cached (and local network) entries immediately
-for non-cached entries, forward to my ISPs nameserver
-When off-line) serve local network queries immediately
-fail all other queries **immediately**
-The combination of changing the root cache file and forwarding queries
-doesn't work.
-So, I've set up (with some discussion of this on the local LUG) two nameds
-as follows:
-named-online: forwards to ISPs nameserver
-master for localnet zone
-master for localnet reverse zone (1.168.192.in-addr.arpa)
-master for ..127.in-addr.arpa
-listens on port 60053
-named-offline: no forwarding
-"fake" root cache file
-slave for 3 local zones (master is 127...1:60053)
-listens on port 61053
-And combined this with port forwarding, to send port 53 to 61053 when
-off-line, and to port 60053 when online. (I'm using the new netfilter
-package under 2.3.18, but the old (ipchains) mechanism should work.)
-Note that this won't quite work out-of-the-box, as there's a slight bug in
-BIND 8.2, which I have logged wth the developers, preventing a slave
-having a master on the same IP address (even if a different port). It's a
-trivial patch, and should go in soon I hope.
-
-
-
-
-
-
-#*
-
-#*I have also received information about how BIND interacts with NFS
-and the portmapper on a mostly offline machine from Karl-Max Wanger:
-
-
-I use to run my own named on all my machines which are only
-occasionally connected to the Internet by modem. The nameserver only
-acts as a cache, it has no area of authority and asks back for
-everything at the name servers in the root.cache file. As is usual
-with Slackware, it is started before nfsd and mountd.
-With one of my machines (a Libretto 30 notebook) I had the problem
-that sometimes I could mount it from another system connected to my
-local LAN, but most of the time it didn't work. I had the same effect
-regardless of using PLIP, a PCMCIA ethernet card or PPP over a serial
-interface.
-After some time of guessing and experimenting I found out that
-apparently named messed with the process of registration nfsd and
-mountd have to carry out with the portmapper upon startup (I start
-these daemons at boot time as usual). Starting named after nfsd and
-mountd eliminated this problem completely.
-As there are no disadvantages to expect from such a modified boot
-sequence I'd advise everybody to do it that way to prevent potential
-trouble.
-
-
-
-#*
-
-
-
-
-
-#
-
-#Where does the caching name server store its cache? Is there
-any way I can control the size of the cache?
-
-
-The cache is completely stored in memory, it is ''not'' written
-to disk at any time. Every time you kill named the cache is lost.
-The cache is ''not'' controllable in any way. named manages it
-according to some simple rules and that is it. You cannot control
-the cache or the cache size in any way for any reason. If you want
-to you can ``fix'' this by hacking named. This is however not
-recommended.
-
-
-
-
-#
-
-#Does named save the cache between restarts? Can I make it
-save it?
-
-
-No, named does ''not'' save the cache when it dies. That means
-that the cache must be built anew each time you kill and restart
-named. There is ''no'' way to make named save the cache in a file.
-If you want you can ``fix'' this by hacking named. This is however
-not recommended.
-
-
-
-
-#
-
-#How can I get a domain? I want to set up my own domain called
-(for example) linux-rules.net. How can I get the domain I want
-assigned to me?
-
-
-Please contact your network service provider. They will be able
-to help you with this. Please note that in most parts of the world
-you need to pay money to get a domain.
-
-
-
-
-#
-
-#How can I secure my DNS server? How do I set up split DNS?
-
-
-Both of these are advanced topics. They are both covered in
-http://www.etherboy.com/dns/chrootdns.html. I will not
-explain the topics further here.
-
-
-
-
-#
-
-
-
-
-----
-
-!! 11. How to become a bigger time DNS admin.
-
-
-__Documentation and tools.__
-
-
-
-
-
-Real Documentation exists. Online and in print. The reading of
-several of these is required to make the step from small time DNS
-admin to a big time one.
-
-
-
-
-
-I have written ''The Concise Guide to DNS and BIND'' (by Nicolai
-Langfeldt, me), published by Que (ISBN -7897-2273-9). The book is
-much like this HOWTO, just more details, and a lot more of everything.
-It has also been translated to Polish and published as ''DNS i BIND''
-by Helion (
-http://helion.pl/ksiazki/dnsbin.htm, ISBN
-83-7197-446-9). Now in 4th edition is ''DNS and BIND'' by Cricket
-Liu and P. Albitz from O'Reilly & Associates (ISBN -937175-82-X,
-affectionately known as the Cricket book). Another book is ''Linux
-DNS Server Administration'', by Craig Hunt, published by Sybex (ISBN
-0782127363), I have not read it yet. Another must for good DNS
-administration (or good anything for that matter) is ''Zen and the
-Art of Motorcycle Maintenance'' by Robert M. Pirsig.
-
-
-
-
-
-Online you will find my book, along with tons of other books,
-available electronically as a subscription service at
-http://safari.informit.com/. There is stuff on
-http://www.dns.net/dnsrd/ (DNS Resources Directory),
-http://www.isc.org/bind.html; A FAQ, a reference manual (the
-ARM should be enclosed in the BIND distribution as well) as well as
-papers and protocol definitions and DNS hacks (these, and most, if not
-all, of the RFCs mentioned below, are also contained in the BIND
-distribution). I have not read most of these. The newsgroup
-news:comp.protocols.tcp-ip.domains is about DNS. In addition
-there are a number of RFCs about DNS, the most important are probably
-the ones listed here. Those that have BCP (Best Current Practice)
-numbers are ''highly recommended''.
-
-
-
-
-
-
-
-; __RFC 2671__:
-
-P. Vixie, ''Extension Mechanisms for DNS (EDNS0)''
-August 1999.
-
-
-
-; __RFC 2317__:
-
-BCP 20, H. Eidnes et. al. ''Classless IN-ADDR.ARPA
-delegation'', March 1998. This is about CIDR, or classless subnet
-reverse lookups.
-
-
-
-; __RFC 2308__:
-
-M. Andrews, ''Negative Caching of DNS Queries'',
-March 1998. About negative caching and the $TTL zone file
-directive.
-
-
-
-; __RFC 2219__:
-
-BCP 17, M. Hamilton and R. Wright, ''Use of DNS
-Aliases for Network Services'', October 1997. About
-CNAME usage.
-
-
-
-; __RFC 2182__:
-
-BCP 16, R. Elz et. al., ''Selection and Operation
-of Secondary DNS Servers'', July 1997.
-
-
-
-; __RFC 2052__:
-
-A. Gulbrandsen, P. Vixie, ''A DNS RR for specifying
-the location of services (DNS SRV)'', October 1996
-
-
-
-; __RFC 1918__:
-
-Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot,
-E. Lear, ''Address Allocation for Private Internets'', 02/29/1996.
-
-
-
-; __RFC 1912__:
-
-D. Barr, ''Common DNS Operational and Configuration
-Errors'', 02/28/1996.
-
-
-
-; __RFC 1912 Errors__:
-
-B. Barr ''Errors in RFC 1912''. Only
-available at
-http://www.cis.ohio-state.edu/~barr/rfc1912-errors.html
-
-
-; __RFC 1713__:
-
-A. Romao, ''Tools for DNS debugging'', 11/03/1994.
-
-
-
-; __RFC 1712__:
-
-C. Farrell, M. Schulze, S. Pleitner, D. Baldoni,
-''DNS Encoding of Geographical Location'', 11/01/1994.
-
-
-
-; __RFC 1183__:
-
-R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart,
-''New DNS RR Definitions'', 10/08/1990.
-
-
-
-; __RFC 1035__:
-
-P. Mockapetris, ''Domain names - implementation and
-specification'', 11/01/1987.
-
-
-
-; __RFC 1034__:
-
-P. Mockapetris, ''Domain names - concepts and
-facilities'', 11/01/1987.
-
-
-
-; __RFC 1033__:
-
-M. Lottor, ''Domain administrators operations
-guide'', 11/01/1987.
-
-
-
-; __RFC 1032__:
-
-M. Stahl, ''Domain administrators guide'',
-11/01/1987.
-
-
-
-; __RFC 974__:
-
-C. Partridge, ''Mail routing and the domain system'',
-01/01/1986
.
-
-
-
-
-----
+Describe
[HowToDNSHOWTO
] here.