NAME

       tinydns-data - data tool for tinydns

DESCRIPTION

       tinydns-data reads local DNS information from a file named data in the
       current directory.  It creates data.cdb in a binary format designed for
       fast access by tinydns.  It may also create some other files with names
       beginning with data.

       tinydns-data updates data.cdb atomically, so you can use it safely
       while tinydns is running.  If anything goes wrong with the creation of
       data.cdb, tinydns-data stops and leaves the old data.cdb in place.


Data format

       The DNS information in data is a series of lines.  There are several
       types of lines, as shown below.

       Each line starts with a special character and continues with a series
       of vertical-bar separated fields.  In some cases the fields may be
       omitted; however, all vertical-bars must be included except at the end
       of the line.  Spaces and tabs at the end of a line are ignored.

       Each line contains a ttl (``time to live'') specifying the number of
       seconds that the line's DNS records may be cached.  Beware that cache
       times below 300 seconds will be treated as 300 by some clients, and NS
       cache times below 2 seconds can cause lookup failures.  You may omit
       ttl;

       tinydns-data will use default cache times, carefully selected to work
       well in normal situations.

       You may include a timestamp on each line.  If ttl is nonzero (or
       omitted), the timestamp is a starting time for the information in the
       line; the line will be ignored before that time.  If ttl is zero, the
       timestamp is an ending time (``time to die'') for the information in
       the line;

       tinydns dynamically adjusts ttl so that the line's DNS records are not
       cached for more than a few seconds past the ending time.  A timestamp
       is an external TAI64 timestamp, printed as 16 lowercase hexadecimal
       characters.  For example, the lines

         +www.heaven.af.mil|1.2.3.4|0|4000000038af1379
         +www.heaven.af.mil|1.2.3.7||4000000038af1379

       specify that www.heaven.af.mil will have address 1.2.3.4 until time
       4000000038af1379 (2000-02-19 22:04:31 UTC) and will then switch to IP
       address 1.2.3.7.

       A ``split-horizon'' mode is supported specifying client locations by %
       lines:

            %lo:ipprefix

       means that IP addresses starting with ipprefix are in location lo.  lo
       Name server for our domain fqdn.

       tinydns-data creates

           an NS record showing x.ns.fqdn as a name server for fqdn;

           an A record showing ip as it's IPv4 address or an AAAA record
           showing ip as the IPv6 address of x.ns.fqdn; and

           an SOA record for fqdn listing x.ns.fqdn as the primary name server
           and hostmaster@fqdn as the contact address.

       You may have several name servers for one domain, with a different x
       for each server.

       tinydns will return only one SOA record per domain.

       If x contains a dot then tinydns-data will use x as the server name
       rather than x.ns.fqdn.  This feature is provided only for compatibility
       reasons; names not ending with fqdn will force clients to contact
       parent servers much more often than they otherwise would, and will
       reduce the overall reliability of DNS.  You should omit ip if x has IP
       addresses assigned elsewhere in data; in this case, tinydns-data will
       omit the A or AAAA record.

       =>  &fqdn|ip|x|ttl|timestamp|lo

       Name server for domain fqdn.

       tinydns-data creates

           an NS record showing x.ns.fqdn as a name server for fqdn and

           an A record ip as IPv4 or an AAAA record showing ip as the IPv6
           address of x.ns.fqdn.

       If x contains a dot then it is treated specially; see above.

       You may have several name servers for one domain, with a different x
       for each server.

       Normally & is used for domains delegated by this server to child
       servers, while .  is used for domains delegated to this server.

       =>  =fqdn|ip|ttl|timestamp|lo

       =>  :fqdn|ip|ttl|timestamp|lo

       Host fqdn with IPv4 or IPv6 address ip depending, whether the first
       character is = or :.

       tinydns-data creates
       =>  +fqdn|ip|ttl|timestamp|lo

       =>  ~fqdn|ip|ttl|timestamp|lo

       Alias fqdn with IPv4 address ip in case the first character is + or an
       IPv6 address if ~ is supplied.  This is just like =fqdn|ip|ttl except
       that tinydns-data does not create the PTR record.

       tinydns returns addresses (from + or = or @ or .  or & or : or ~ lines)
       in a random order in the answer section.

       If there are more than 8 records, it returns a random set of 8.

       =>  @fqdn|ip|x|dist|ttl|timestamp|lo

       Mail exchanger for fqdn.

       tinydns-data creates

           an MX record showing x.mx.fqdn as a mail exchanger for fqdn at
           distance dist and

           an A or AAAA record showing ip as the IPv4 or IPv6 address of
           x.mx.fqdn.

       You may omit dist; the default distance is 0.

       If x contains a dot then it is treated specially; see above.

       You may create several MX records for fqdn, with a different x for each
       server.  Make sure to arrange for the SMTP server on each IP address to
       accept mail for fqdn.

       =>  #comment

       Comment line. The line is ignored.


Uncommon data lines

       =>  -fqdn|s|ttl|timestamp|lo

       This type of line is used by programs that automatically edit + lines
       in data to temporarily exclude addresses of overloaded or dead
       machines.  The line is ignored.

       =>  'fqdn|s|ttl|timestamp|lo

       TXT record for fqdn.

       tinydns-data creates a TXT record for fqdn containing the string s.
       Printable ASCII characters - including white spaces - are accepted
       unaltered.

       Don't use Cfqdn if there are any other records for fqdn Don't use fqdn
       for common aliases; use +fqdn instead.  Remember the wise words of
       Inigo Montoya: ``You keep using CNAME records.  I do not think they
       mean what you think they mean.'' and those ones of Donald Trump:
       ``Don't propagate fake news.''

       =>  Zfqdn|mname|rname|ser|ref|ret|exp|min|ttl|timestamp|lo

       SOA record for fqdn showing mname as the primary name server, rname
       (with the first .  converted to @) as the contact address, ser as the
       serial number, ref as the refresh time, ret as the retry time, exp as
       the expire time, and min as the minimum time.  ser, ref, ret, exp, and
       min may be omitted; they default to, respectively, the modification
       time of the data file, 16384 seconds, 2048 seconds, 1048576 seconds,
       and 2560 seconds.

       =>  Ofqdn|n|rdata|ttl|timestamp|lo

       Generic record for fqdn.

       tinydns-data creates a record of type n for fqdn showing rdata.

       n must be an integer between 1 and 65535.  The proper format of rdata
       depends on n.  You may use octal nnn codes to include arbitrary bytes
       inside rdata.


WILDCARDS

       tinydns supports wildcards of the form *.fqdn.  Information for *.fqdn
       is provided for every name ending with .fqdn, except names that have
       their own records and names that are covered by more specific
       wildcards.

       For example, the lines

            +pink.floyd.u.heaven.af.mil|1.2.3.4
            +*.u.heaven.af.mil|1.2.3.200

       have the same effect as

            +pink.floyd.u.heaven.af.mil|1.2.3.4
            +joe.u.heaven.af.mil|1.2.3.200
            +bill.u.heaven.af.mil|1.2.3.200
            +floyd.u.heaven.af.mil|1.2.3.200
            +ishtar.u.heaven.af.mil|1.2.3.200
            +joe.bob.u.heaven.af.mil|1.2.3.200
            +sally.floyd.u.heaven.af.mil|1.2.3.200
            +post.pink.floyd.u.heaven.af.mil|1.2.3.200

       and so on.


An example

       Here is a typical data file:

            =bear.heaven.af.mil|1.2.3.6
            .heaven.af.mil|1.2.3.6|b
            .3.2.1.in-addr.arpa|1.2.3.6|b

            =cheetah.heaven.af.mil|1.2.3.248
            =panther.heaven.af.mil|1.2.3.249

       Here is the same information in traditional zone-file format (with the
       two zones merged):

         heaven.af.mil. 2560 IN SOA a.ns.heaven.af.mil. hostmaster.heaven.af.mil. ...
         heaven.af.mil. 259200 IN NS a.ns.heaven.af.mil.
         heaven.af.mil. 259200 IN NS b.ns.heaven.af.mil.
         heaven.af.mil. 86400 IN MX mx.heaven.af.mil.

         3.2.1.in-addr.arpa. 2560 IN SOA a.ns.3.2.1.in-addr.arpa. hostmaster.3.2.1.in-addr.arpa. ...
         3.2.1.in-addr.arpa. 259200 IN NS a.ns.3.2.1.in-addr.arpa.
         3.2.1.in-addr.arpa. 259200 IN NS b.ns.3.2.1.in-addr.arpa.
         3.2.1.in-addr.arpa. 86400 IN MX mx.3.2.1.in-addr.arpa.

         4.3.2.1.in-addr.arpa. 86400 IN PTR lion.heaven.af.mil.
         lion.heaven.af.mil. 86400 IN A 1.2.3.4
         mx.heaven.af.mil. 86400 IN A 1.2.3.4
         mx.3.2.1.in-addr.arpa. 86400 IN A 1.2.3.4

         5.3.2.1.in-addr.arpa. 86400 IN PTR tiger.heaven.af.mil.
         tiger.heaven.af.mil. 86400 IN A 1.2.3.5
         a.ns.heaven.af.mil. 259200 IN A 1.2.3.5
         a.ns.3.2.1.in-addr.arpa. 259200 IN A 1.2.3.5

         6.3.2.1.in-addr.arpa. 86400 IN PTR bear.heaven.af.mil.
         bear.heaven.af.mil. 86400 IN A 1.2.3.6
         b.ns.heaven.af.mil. 259200 IN A 1.2.3.6
         b.ns.3.2.1.in-addr.arpa. 259200 IN A 1.2.3.6

         248.3.2.1.in-addr.arpa. 86400 IN PTR cheetah.heaven.af.mil.
         cheetah.heaven.af.mil. 86400 IN A 1.2.3.248

         249.3.2.1.in-addr.arpa. 86400 IN PTR panther.heaven.af.mil.
         panther.heaven.af.mil. 86400 IN A 1.2.3.249


DESIGN NOTES

       The data format is very easy for programs to edit, and reasonably easy
       for humans to edit, unlike the traditional zone-file format.

       tinydns-data could support a name wherever an IP address is required;
       it would look up the name in DNS and use the resulting address.  This
       would reliably track changes in offsite IP addresses if the database
       were rebuilt periodically.


COMPATIBILTY

       The used data format differs from DJB's convention for two
       declarations: : is used as IPv6 address identifier, while O is used as
       token for arbitrary data instead of ':'.  Thus, apart from this special
       case, the resulting data.cdb is raw compatible; due to the different
       token delimitor however not in binary format.

       Different from to Felix von Leitner's implementation, IPv6 addresses
       are always entered in their compactified format and indicated by :
       (instead of '6') or ~ (instead of '3'). As a result, IPv6 addresses are
       not understood neither in binary nor in plain format.

SEE ALSO

      tinydns(8), tinydns-edit(8), tinydns-conf(8), walldns

REFERENCE

       http://cr.yp.to/djbdns/faq/tinydns.html




Man(1) output converted with man2html