# ZoneCheck II

Stephane D'Alu
2002 AFNIC

This legal mumbo jumbo will stop evil.

&version;

The DNS is a critical resource for every network application, quite important to ensure that a zone or domain name is correctly configured in the DNS. ZoneCheck is intended to help solving misconfigurations or inconsistencies usually revealed by an increase in the latency of the application, up to the output of unexpected/inconsistant results.

## Installation

&install;

## Configuration

&config;

## Overview

information warning fatal error

test description error message detailed error explanation referer

## Internal

toto

## Using ZoneCheck

### Input

#### Command Line Interface (CLI)

- `--lang`

  Select another language (en, fr, ...). The syntax is the same as for the environment variable `LANG`.

- `-d lvl`, `--debug lvl`

  Select the debugging messages to print or activate debugging code. This parameter will override the value of the environment variable `ZC_DEBUG`.

  The available options are:

  Code Description
  - 0x0001 Initialisation
  - 0x0002 Localization / Internationalisation
  - 0x0004 Configuration
  - 0x0008 Autoconf
  - 0x0010 Loading tests
  - 0x0020 Tests performed
  - 0x0040 Debugging messages from tests
  - 0x0400 Information about cached object
  - 0x0800 Debugger itself
  - 0x1000 Crazy Debug, don't try this at home!
  - 0x2000 Dnsruby library debugging messages
  - 0x4000 Disable caching
  - 0x8000 Don't try to rescue exceptions

- `-h`, `--help`

  Show a short description of the different options available in ZoneCheck

- `-V`, `--version`

  print the ZoneCheck version and exit

- `-q`, `--quiet`

  don't display extra titles

- `-c cfgfile`, `--config cfgfile`

  specify the location of the configuration file (default is `etc/zonecheck/zc.conf`)

- `--testdir directory`

  specify the directory where all the tests are located

- `-C catlist`, `--category catlist`

  limit the test to the specified category list (catlist); the list is comma separeted and we stop on the first match. If the category start with `-` or `!` the test should not belong to that category, if it starts with nothing or `+` the test should belong to it. It is possible to have subcategories which are delimited by `:`. Here is an example that says don't perform DNS tests that are not SOA related: `dns:soa,!dns,+`

- `-T testname`, `--test testname`

  only the test testname will be performed and its severity will default to `fatal`

- `-r host`, `--resolver host`

  the nameserver running on host will be used as the local resolver instead of taking this information from `/etc/resolv.conf`

- `-n nameservers`, `--ns nameservers`

  nameservers is the exhaustive list of nameservers that are primary or secondary for the zone, they are separated by a semicolon, if IP addresses should be specified the hostname must be followed by the equal sign and a coma separated list of IP addresses. For example: `ns1.toto.fr=192.168.1.5,192.168.1.6;ns2.toto.fr`

- `-1`, `--one`

  only display the most relevant message

- `-g`, `--tagonly`

  display tag instead of sentences, this option should be used when writing scripts

- `-e list`, `--error list`

- `-t list`, `--transp list`

  list

- `-v list`, `--verbose list`

  list

- `-o list`, `--output list`

  list

- `-4`, `--ipv4`

  use IPv4 connectivity only

- `-6`, `--ipv6`

  use IPv6 connectivity only

- `--testlist`

  list all the available tests

- `--testdesc type`

  types is one of the keyword `name` `expl` `error`

    % zc -4 -v c,x,d,i afnic.fr
    ZONE  : afnic.fr.
    NS <= : ns1.nic.fr. [192.93.0.1]
    NS    : ns2.nic.fr. [192.93.0.4]
    NS    : ns3.nic.fr. [192.134.0.49, 2001:660:1180:1:192:134::49]

    ==> SUCCED

#### Common Gateway Interface (CGI)

- `lang` = [ fr | en | ... ]

- quiet

- - one\n

- - verbose = [ i|intro, n|testname, x|explain, d|details,\n\ t|testdesc, c|counter, o|reportok ]\n\

  - - intro\n\

  - - testname\n\

  - - explain\n\

  - - details\n\

  - - progress = [ t|testdesc | c|counter ]\n\

  - - reportok\n\

- - output = [ bs|byseverity, bh|byhost, t|text, h|html ]\n\ - report = bs|byseverity | bh|byhost\n\ - format = h|html | text\n\

- - error = [ af|allfatal, aw|allwarning, std|standard,\n\ s|stop, ns|nostop ]\n\ - errorlvl = [ af|allfatal | aw|allwarning | std|standard ]\n\ - dontstop \n\

- - transp = [ ipv4, ipv6, udp, tcp, std ]\n\ - transp3 = [ ipv4, ipv6 ]\n\ - transp4 = [ udp | tcp | std ]\n\

- - category = cat1,!cat2:subcat1,cat2,!cat3,+\n\ - chkmail (!mail)\n\ - chkrir (!rir)\n\ - chkzone (!dns:axfr)\n\

- - ns = ns1=ip1,ip2;ns2=ip3;ns3\n\ (WARNING: in URL '%3b' should be used instead of ';')\n\ - ns0 .. nsX = nameserver name\n\ - ips0 .. ipsX = coma separated ip addresses\n\

- - zone = zone to test\n\

### Output

#### Text

toto

#### HTML

toto

## FAQ

&faq;

## Writing tests

### Available methods

titi

### Framework

titi

### Localisation

The format of the message catalog is as follow:

     line       : '#' comment              # a comment
                | tag ':' definition       # a tag definition
                | tag '=' tag              # a link to another tag
                | '[' prefix ']'           # a prefix to append to other tags

     prefix     : tag                      # the tag to use as prefix
                | '*'                      # don't use a prefix

     definition : string                   # a string
                | string '\' definition    # with posibility of continuation '\'

     tag        : [a-zA-Z0-9_]+

## About this book

This book was hard work if you look at the history and momentum behind the LDP and DocBook and SGML and XML and....and....and...

### Copyrights and Trademarks

Copyright © 2001 Foo Bar

### Purpose/Scope

This guide is tightly scoped with one purpose; to process.

## Implemented tests

toto