Warning comment added to prevent future change of SOA e-mail identifing msg
[sleuth.git] / README
1 This package contains the DNS Sleuth, version 1.3.
2
3 Copyright (c) 1999--2001 Martin Mares <mj@ucw.cz>
4
5 All files in this package can be freely distributed and used according
6 to the terms of the GNU General Public License, either version 2 or
7 (at your opinion) any newer version. The exact text of the license can
8 be found in file COPYING in any of GNU packages or at FSF Web pages
9 at URL http://www.gnu.org/copyleft/
10
11
12    Sleuth is a Perl script designed for easy checking of DNS zones
13 for common errors and also for processing of secondary name service
14 requests. I wrote it after I've examined at least a dozen of utilities
15 claiming to do this job and found that all of them are either unable
16 to discover most zone bugs or too ugly for me to maintain. Sleuth also
17 lists the corresponding RFC references with most of its error messages,
18 so that the people upset with their zones being buggy can simply look
19 up what exactly is going wrong and how to fix it.
20
21    Sleuth requires the Perl DNS module which can be found at
22 ftp://ftp.cpan.org/pub/CPAN/modules/by-category/05_Networking_Devices_IPC/Net/Net-DNS-0.12.tar.gz.
23 If you want to install it locally in your home directory, just modify
24 the @INC path in sleuth.conf. Sleuth has been developed under Perl
25 5.004_03 and it's probable that bugs in earlier Perl releases may
26 prevent it from working properly.
27
28    You can download the current version from ftp://atrey.karlin.mff.cuni.cz/pub/local/mj/net/
29 or try the online version at http://atrey.karlin.mff.cuni.cz/~mj/sleuth/ .
30
31    Please send me all bug reports and suggestions to <mj@ucw.cz>. This
32 will help me with making Sleuth even more useful.
33
34    If you're tired of manually editing all the zone files and syncing the
35 reverse records by hand, look at NSC -- a suite of M4 scripts for easy
36 maintenance of DNS zones, you can download it from the same directory
37 where Sleuth lives, look for "nsc-*.tar.gz".
38
39    The rest of this file tries to provide at least few bits of documentation.
40
41                                         Have fun
42                                                         Martin
43
44
45 Usage
46 ~~~~~
47 To check a zone for consistency, just run "sleuth <domain>".
48
49 To check a zone on specified name server, use "sleuth <domain> <server>"
50 where <server> is the _name_ of the server. If the server itself is not
51 yet registered, just add its IP address: "sleuth <domain> <server> <server-ip>".
52
53 Also, Sleuth can be used for checks of secondary name service requests
54 (this includes all of the usual zone checks plus several special ones,
55 see below for a full list). To turn this mode on, just add two more
56 parameters: the name of your secondary server and its IP address:
57 "sleuth <domain> <server> <server-ip> <secondary-server> <secondary-ip>".
58
59 By default, Sleuth lists only resource records defined in the zone being
60 checked. By specifying a "-v" switch, Sleuth switches to verbose mode
61 and includes all records it looks at during the checks (e.g., all the
62 reverse records).
63
64 If you want to check a private zone (i.e., skip all the tests regarding
65 connection to the worldwide DNS and stop warning about private addresses
66 occuring), add a "-p" switch.
67
68 You can also switch formatting of output by specifying either "-m"
69 (plain output -- just lines with their categories, useful for feeding
70 to an external formatting engine) or "-h" (HTML fragment output,
71 used by the WWW interface).
72
73
74 WWW Interface
75 ~~~~~~~~~~~~~
76 This package also includes a simple CGI script which allows Sleuth to be
77 used interactively from any form-capable Web browser. The CGI interface
78 (check.cgi) requires the CGI Perl module (standard part of recent Perl
79 distributions or look at CPAN if you don't have it).
80
81 The script needs some bits of customization, so please look at the
82 check.conf file and follow the comments.
83
84 The script expects Sleuth and check.conf to be in the same directory
85 as it's run from.
86
87
88 Configuration
89 ~~~~~~~~~~~~~
90 You can customize Sleuth by editing the configuration file sleuth.conf
91 (just follow the comments) which should be placed either in /etc or in
92 the same directory as the sleuth script itself.
93
94
95 Errors checked
96 ~~~~~~~~~~~~~~
97 Here is a table of all the checks we do together with their identifiers.
98 You can set severity of any of the checks (ignore/warning/error/fatal error)
99 in the configuration file.
100
101 dnserr  Fatal DNS error (truncated errors and some other nasties)
102 reserr  Resolver error
103 selfa   Server unable to resolve its own name
104 badname Malformed domain name
105 badrn   Malformed domain name in reverse zones
106 zcname  Zone is a CNAME
107 znexist Zone doesn't exist
108 nonsa   Unable to find IP address of the DNS server
109 pcname  DNS record pointing to CNAME
110 rcname  CNAME pointing to CNAME
111 badrev  Invalid reverse mapping
112 norev   Missing reverse mapping
113 inexrev Inexact reverse mapping (name -> ip -> different names only)
114 soamail "@ instead of ." and other syntactic errors in SOA zone master address
115 soammx  Missing MX record for zone master address
116 soammxa Missing A record for that MX record
117 soaamx  A record used instead of MX record
118 soaorg  Missing A record for origin server
119 recchk  The nameserver should be able to answer trivial queries
120 nolocal No localhost records
121 badloc  Bad localhost records
122 revloc  No reverse record for 127.0.0.1
123 unkrevz Unable to find network number in zone name
124 badrevn Illegal name in reverse zone
125 badrevr Illegal record type in reverse zone
126 arev    A records in reverse zones are considered bad practice
127 revcn   Illegal CNAME in reverse zone
128 ptrnoa  No A for PTR record
129 ptrbada Mismatched A for PTR record
130 outzone Out of zone records
131 wildac  Wildcard A's and CNAME's are strongly deprecated
132 wild    Wildcard records considered bad practice
133 reccn   CNAME recursion
134 suspcn  Suspicious overlapping CNAME
135 dangcn  Dangling CNAME
136 dangcnr Dangling CNAME in reverse zone
137 missrev Missing PTR for A
138 missa   Missing A for MX/NS/... destination
139 obsrec  Obsolete records (MD, MF, MB, MG, MR)
140 supsoa  Superfluous SOAs
141 ptrfwd  PTR records in forward zones are considered bad practice
142 mxpref  Invalid preference in MX record
143 cnclash CNAME together with other records or two CNAME's for same name
144 twons   A zone has to have at least two nameservers
145 lamer   Lame delegations [check mode only]
146 oodsec  Authoritative servers don't agree on domain versions [check mode only]
147 nosecns Our secondary not listed between NS records [submit mode only]
148 utoplev Unknown top-level domain [submit mode only]
149 xtoplev Name of top-level domain used as zone name [submit mode only]
150 rtoplev Registration of top-level domain attempted [submit mode only]
151 alknown Already known at our secondary [submit mode only]
152 snauth  Selected nameserver is not zone source [submit mode only]
153 missns  No NS records present [submit mode only]
154 suspttl Suspicious TTL
155 suspmtl Suspicious minttl in SOA
156 suspexp Suspicious expire in SOA
157 wks     WKS record is obsolete
158 ornotns Origin server not listed in domain's NS records
159 unxtype Unexpected record in reply packet
160 axfer   Zone transfer failed
161 alldig  All-digit names are not allowed
162 noserv  No name server available for checking
163 diffns  Different name servers report different set of NS records
164 duprec  Duplicate record in zone
165 srvnam  Invalid name of SRV record
166 srvpar  Invalid parameters of SRV record
167 srvdest Destination of SRV has no A
168 iapname IP address found instead of name
169 needaa  Answer is not authoritative