Zone Layout

When a new repository update is triggered any files beneath the top-level zones/ directory will processed.

Each of the files should be named for the zone it represents, so for example if you wished to upload DNS-data for the domain "example.com" you should have a repository with the following contents:

zones/
zones/example.com

Anything in the parent-directory, or outside of the zones/ directory will be ignored.

Zone Format

Each of the files processed is currently assumed to be in a simple text-based format which is loosely based around TinyDNS format. If you have bind zonefiles there are existing tools which will convert for you, such as bind-to-tinydns.

We have an online DNS wizard to generate simple records, as well as an online validator which will read input and show you the records we (successfully) parsed, which might be useful for reference purposes.

If you have a large number of zonefiles to convert you're welcome to get in touch and we'll convert them for you if you need assistance.

Each line represents a single record, which is ":"-delimited. The general form of a record is:

Type : Name : Value : TTL

The only exception is the MX record which have a trailing priority, then an optional TTL.

The first character of each line specifies the type of that record, for example:

#
# Lines beginning with the "#" character are comments, and are ignored.
#

#
#  Lines beginning with a "+" are A(ddress) records, and are used to set
# names to IP addresses.
#
#  For example the following sets "www.steve.org.uk" to point to the
# IP address 80.68.84.103:
#
+www.steve.org.uk:80.68.84.103

#
# The next line is similar but sets the address of "steve.org.uk", and
# includes an explicit TTL setting.  With no TTL specified the default
# will be 300 seconds (5 minutes).
#
+steve.org.uk:80.68.84.103:300

#
#  Lines beginning with "6" are AAAA (IPv6 records) and allow the setting
# of IPv6 records:
#
6steve.org.uk:200141c8010b01030000000000000010:300
6www.steve.org.uk:200141c8010b01030000000000000010:300

#
#  Lines beginning with "@" are MX records:
#
@steve.org.uk:mail.steve.org.uk:15

#
#  Lines beginning with "T" are TXT records.
#
#  NOTE: The values must be quoted.
#
Tsteve.org.uk:"v=spf1 mx a ptr ip4:1.2.3.4 ?all":300

#
#  Finally lines beginning with "C" are CNAME records,
# mapping from one name to another:
#
Cexample.steve.org.uk:example.com:300

#
#  And now we have an example of a SRV record.  SRV-records are used to
# point to hostnames (which must already be defined) and ports.
#
_bind._udp.steve.org.uk:ns1.example.com:53
_bind._udp.steve.org.uk:ns2.example.com:53
_bind._udp.steve.org.uk:ns3.example.com:53:300


#
#  If you want to defer sub-domains to different nameservers
# you can do that via the "&" record:
#
&sub.steve.org.uk::ns1.example.com:300
&sub.steve.org.uk::ns2.example.com:300

There is a sample git repository available for reference, which contains examples of the various record-types being used.

You can use our online validator to see how records will be processed.

Zone Questions?

If you have any questions about the supported record-types, or the format of the input files please ask for help.

Remember we have an online record validator which can be used to check that you see the results you expect.

Currently the following record-types are supported:

  • + - Used for setting IPv4 addresses.
  • 6 - Used for setting IPv6 addresses.
  • @ - Used for setting MX records.
  • C - Used for setting CNAME records.
  • T - Used for setting TXT records.
  • & - Used for setting NS records.
  • _ - Used for setting SRV records.