Page tree

This document is an overview of the DNS Manager architecture.

DNS RFC compliance

DNS Manager complies to the RFC listed below.

Aspect

RFC

Description

A recordRFC 1035
AAAA recordRFC 3596
CNAME recordRFC 1035
MX recordRFC 1035
NAPTR record

RFC 3403

RFC 2915


CAA recordRFC 6844
NS recordRFC 1035
PTR recordRFC 1035
SRV recordRFC 2782
TXT recordRFC 1035
TXT record stucturedRFC 1464Structured format in TXT data fields.
SOA recordRFC 1912For default values for SOA records.
SERIALRFC 1912Supports both RFC 1912 and timestamp SOA Serial number formats.
Classless delegationRFC 2317Classless routing allows allocation of subnets on non-octet boundaries that is less than 256 addresses from a Class C address.
E.164RFC 3761DNS zones for storage of E.164 numbers.
IPv6 zonesRFC 4291Reverse DNS lookups for IPv6 addresses.
Mask delimitersRFC 4183Both / and - are supported as mask delimiters.
SRV services and protocolsRFC 3958The list of services and protocols accepted by SRV records.
IPv6 formatRFC 5952

Recommendation for IPv6 address text representation.

Dynamic Delegation Discovery System (DDDS) 

RFC 3401

RFC 3402

RFC 3403

RFC 3404 


Straightforward-NAPTR (S-NAPTR) Specification

RFC 3958

DomainKeys Identified Mail (DKIM)

RFC 4871


List of accepted services for SRV and NAPTR recordshttps://www.iana.org/assignments/enum-services/enum-services.xhtml

Wildcard usage in IPv6 reverse DNS

RFC 4472


Split value of long TXT record in 255 characters strings

RFC 4408

Zone dump

The zone dump file format that is used by DNS Manager remote update protocol has been improved with:

Dump file examples

Master zones examples

domain.ltd.|master {
    |SERIAL| |2011110802| || ||
    |DEFAULT_TTL| |86400| || ||
    |REFRESH| |10800| || ||
    |RETRY| |3600| || ||
    |EXPIRE| |604800| || ||
    |MIN_TTL| |86400| || ||
    |ALLOW_TRANSFER| |4.3.2.1| || ||
    |NS| |domain.ltd.| |ns1.domain.ltd.| ||
    |NS| |aa.domain.ltd.| |ns.domain.ltd.| ||
    |CNAME| |cname.domain.ltd.| |canonical.name.| ||
    |CNAME| |somedir.domain.ltd.| |domain.ltd.| ||
    |CNAME| |ftp| |domain.ltd.| ||
    |A| |mail.domain.ltd.| |192.168.10.32| ||
    |AAAA| |sub.domain.ltd.| |2001:db8:85a3:88:8a2e:370:7334:89| ||
    |MX| |zone.domain.ltd.| |email.exchanger| |10|
    |TXT| |txt.domain.ltd.| |v=spf1 exists:%{ir}.%{v}.arpa -all | ||
    |TXT| |some-text.domain.ltd.| |any text| ||
    |TXT| |domain.ltd.| |sometext| ||
    |TXT| |private._domainkey.domain.ltd.| |k=rsa; p=MEwwDQYerwqEWwE| ||
	|NAPTR| |mail.domain.ltd.| |!^.*$!mailto:info@domain.ltd!i| |6| |5| || || |SMTP| |A| ||
    |SRV| |_sip._tcp.domain.ltd.| |.| |5| |25| |12345| ||
    |SRV| |_sip._tcp.domain.ltd.| |anotherdomain.com.| |10| |20| |5560| ||
    |SRV| |_h323._udp.domain.ltd.| |sub.domain.ltd.| |15| |25| |8550| || 
}
testdomain.com.|master {
 	|$ORIGIN| |com.| || ||
	|TXT| |testdomain| |v=spf1 a mx ptr mx:mail.testdomain.com ~all| ||
	|NS| || |ns1.test-web| ||
	|NS| || |ns2.test-web| ||
	|A| || |64.85.2.56| ||
    |CAA| |test.testdomain.com.| |test.com| |issue| |2|
}

Default zone type is master

If the zone type is missing, it is assumed to be a master zone definition.

domain.ltd.{
 	|REFRESH| |108002| || ||
	|RETRY| |36002| || ||
	|EXPIRE| |604802| || ||
	|MIN_TTL| |86402| || ||
	|DEFAULT_TTL| |86402| || ||
	|SERIAL| |1271668821| || ||
	|ALLOW_TRANSFER| |4.3.2.1| || ||
	|NS| |domain.ltd.| |ns1.domain.ltd.| ||
	|NS| |aa.domain.ltd.| |ns.domain.ltd.| ||
	|CNAME| |cname.domain.ltd.| |canonical.name.| ||
	|CNAME| |somedir.domain.ltd.| |domain.ltd.| ||
	|CNAME| |ftp| |domain.ltd.| ||
	|A| |mail.domain.ltd.| |192.168.10.32| ||
	|AAAA| |sub.domain.ltd.| |2001:db8:85a3:88:8a2e:370:7334:89| ||
	|MX| |zone.domain.ltd.| |email.exchanger| |10|
	|TXT| |txt.domain.ltd.| |v=spf1 exists:%{ir}.%{v}.arpa -all | ||
	|TXT| |some-text.domain.ltd.| |any text| ||
	|TXT| |domain.ltd.| |sometext| ||
	|TXT| |private._domainkey.domain.ltd.| |k=rsa; p=MEwwDQYerwqEWwE| ||
}

Slave zones example

Slave zones may included in dump as follows:
3.2.1.in-addr.arpa.|slave {
 	|MASTER| |6.7.8.9| || ||
	|MASTER| |1999:db8:a0b:12f0:a1b2:c3d4:f5e6:1234| || ||
	|ALLOW_TRANSFER| |2002:a96:b95::a96f:b95| || ||
	|ALLOW_TRANSFER| |69.41.170.223| || ||
}
foo.com.|slave {
 	|MASTER| |1999:db8:a0b:12f0:a1b2:c3d4:f5e6:1234| || ||
 	|ALLOW_TRANSFER| |69.41.170.223| || ||
}

Classless delegation

The rules mentioned above also apply to reverse DNS zones. You can see below full DNS zones with /24 /28 and /32 subnet mask.

4.3.2.in-addr.arpa.|master {
 	|REFRESH| |10800| || ||
	|RETRY| |36000| || ||
	|EXPIRE| |604800| || ||
	|MIN_TTL| |86400| || ||
	|DEFAULT_TTL| |86400| || ||
	|SERIAL| |1271668821| || ||
	|NS| |4.3.2.in-addr.arpa.| |ns1.name.com.| ||
	|NS| |0/25.4.3.2.in-addr.arpa.| |ns.domain.com.| ||
 	|PTR| |5.4.3.2.in-addr.arpa.| |zone.name.| ||
	|PTR| |5.4.3.2.in-addr.arpa.| |dom1.com.| ||
	|PTR| |5.4.3.2.in-addr.arpa.| |dom2.com.| ||
	|PTR| |5.4.3.2.in-addr.arpa.| |dom3.com.| ||
	|CNAME| |10.4.3.2.in-addr.arpa.| |10.0/25.4.3.2.in-addr.arpa.| ||
	|TXT| |host.4.3.2.in-addr.arpa.| |value| ||
	|TXT| |4.3.2.in-addr.arpa.| |sometext| ||
}
4/28.3.2.1.in-addr.arpa.|master {
 	|REFRESH| |10800| || ||
	|RETRY| |3600| || ||
	|EXPIRE| |60480| || ||
	|MIN_TTL| |86400| || ||
	|DEFAULT_TTL| |86400| || ||
	|SERIAL| |1271668821| || ||
	|ALLOW_TRANSFER| |7.8.9.10| || ||
	|ALLOW_TRANSFER| |2002:a96:b95::a96f:b95| || ||
	|NS| |4/28.3.2.1.in-addr.arpa.| |aa.com.| ||
	|PTR| |6.4/28.3.2.1.in-addr.arpa.| |zone.c.om.| ||
	|PTR| |6.4/28.3.2.1.in-addr.arpa.| |dom1.com.| ||
	|PTR| |6.4/28.3.2.1.in-addr.arpa.| |dom2.com.| ||
	|TXT| |a.4/28.3.2.1.in-addr.arpa.| |text value| ||
	|TXT| |4/28.3.2.1.in-addr.arpa.| |sometext| ||
}
4.3.2.1.in-addr.arpa.|master {
 	|REFRESH| |10800| || ||
	|RETRY| |3600| || ||
	|EXPIRE| |60480| || ||
	|MIN_TTL| |86400| || ||
	|DEFAULT_TTL| |86400| || ||
	|SERIAL| |1271668821| || ||
	|ALLOW_TRANSFER| |7.8.9.10| || ||
	|ALLOW_TRANSFER| |2002:a96:b95::a96f:b95| || ||
	|NS| |4.3.2.1.in-addr.arpa.| |aa.com.| ||
	|PTR| |4.3.2.1.in-addr.arpa.| |zone.c.om.| ||
	|TXT| |abc.4.3.2.1.in-addr.arpa.| |sometext| ||
}

$ORIGIN, @ and Blank Substitution

The "@" character is accepted when defining zones. It is substituted with:

  • The last $ORIGIN directive encountered in the file, or

  • If no $ORIGIN directive is present - it is generated automatically.

Blank Substitution - with the last valid name (or label) or $ORIGIN if there are no previous names (labels).

testdomain.com.|master {
 	|NS| |@| |ns.isdomain.com.| ||
	|NS| || |new| ||
	|MX| |@| |mail.testdomain.com.| |10|
	|MX| |test| |mail1.testdomain.com.| |15|
	|TXT| |@| |this is not a test| ||
	|CNAME| |*.new| |newtest.com.| ||
}

Mask delimiter

Both "-" and "/" character are accepted when defining reverse zones. The zones are different!

4-28.3.2.1.IN-ADDR.ARPA.|master {
    |NS| |4-28.3.2.1.IN-ADDR.ARPA.| |aa.com.| ||
    |PTR| |6.4-28.3.2.1.IN-ADDR.ARPA.| |zone.com.| ||
    |PTR| |6.4-28.3.2.1.IN-ADDR.ARPA.| |dom1.com.| ||
    |PTR| |6.4-28.3.2.1.IN-ADDR.ARPA.| |dom2.com.| ||
    |TXT| |a.4-28.3.2.1.IN-ADDR.ARPA.| |text value| ||
    |TXT| |4-28.3.2.1.IN-ADDR.ARPA.| |sometext| ||
}
4/28.3.2.1.IN-ADDR.ARPA.|master {
    |NS| |4/28.3.2.1.IN-ADDR.ARPA.| |aa.com.| ||
    |PTR| |6.4/28.3.2.1.IN-ADDR.ARPA.| |zone.com.| ||
    |PTR| |6.4/28.3.2.1.IN-ADDR.ARPA.| |dom1.com.| ||
    |PTR| |6.4/28.3.2.1.IN-ADDR.ARPA.| |dom2.com.| ||
    |TXT| |a.4/28.3.2.1.IN-ADDR.ARPA.| |text value| ||
    |TXT| |4/28.3.2.1.IN-ADDR.ARPA.| |sometext| ||
}

SOA records

If the SOA records are not found in the zone definition, they are inherited from the client preferences, if the client has SOA records defined. If the client has no SOA records defined, the system wide SOA settings defined by the administrator are used.
domain.ltd.|master {
 	|ALLOW_TRANSFER| |4.3.2.1| || ||
	|ALLOW_TRANSFER| |2002:a96:b95::a96f:b95| || ||
	|NS| |domain.ltd.| |ns1.domain.ltd.| ||
	|NS| |aa.domain.ltd.| |ns.domain.ltd.| ||
	|CNAME| |cname.domain.ltd.| |canonical.name.| ||
	|CNAME| |somedir.domain.ltd.| |domain.ltd.| ||
	|CNAME| |ftp| |domain.ltd.| ||
	|A| |mail.domain.ltd.| |192.168.10.32| ||
	|MX| |zone.domain.ltd.| |email.exchanger| |10|
	|TXT| |txt.domain.ltd.| |v=spf1 exists:%{ir}.%{v}.arpa -all | ||
	|TXT| |some-text.domain.ltd.| |any text| ||
	|TXT| |private._domainkey.domain.ltd.| |k=rsa; p=MEwwDQYerwqEWwE| ||
	|TXT| |domain.ltd.| |text value| ||
}
4/28.3.2.1.in-addr.arpa.|master {
	|NS| |4/28.3.2.1.in-addr.arpa.| |aa.com.| ||
	|PTR| |6.4/28.3.2.1.in-addr.arpa.| |zone.com.| ||
	|PTR| |6.4/28.3.2.1.in-addr.arpa.| |dom1.com.| ||
	|PTR| |6.4/28.3.2.1.in-addr.arpa.| |dom2.com.| ||
	|TXT| |a.4/28.3.2.1.in-addr.arpa.| |text value| ||
	|TXT| |4/28.3.2.1.in-addr.arpa.| |sometext| ||
}

E164.ARPA reverse zone

Check the below example of E.164 reverse zone that contains all the supported record types, NS and NAPTR:

1.2.3.1.E164.ARPA.|master {
    |SERIAL| |1330507579| || ||
    |REFRESH| |10800| || ||
    |RETRY| |3600| || ||
    |EXPIRE| |604800| || ||
    |MIN_TTL| |86400| || ||
    |DEFAULT_TTL| |86400| || ||
    |ALLOW_TRANSFER| |134.222.123.123/27| || ||
	|ALLOW_TRANSFER| |2002:a96:b95::a96f:b95| || ||
    |NAPTR| |2.3.4.5.1.2.3.1.E164.ARPA.| |!regex!replace!| |10| |20| || || |service| |S| |mydomain.tst.|
    |NAPTR| |9.1.2.3.1.E164.ARPA.| |!^.*$!mailto:info@example.com!i| |10| |20| || || |email| |S| ||
    |NS| |1.2.3.1.E164.ARPA.| |ns1.example.com.| |1|
    |NS| |1.2.3.1.E164.ARPA.| |ns2.example.com.| ||
}

IP6.ARPA reverse zone

Check this example of IP6.ARPA reverse zone that contains both supported record types, NS and PTR:

1.2.3.4.5.6.7.8.9.0.1.2.3.4.5.6.7.8.9.0.2.1.2.A.A.2.2.IP6.ARPA.|master {
	|SERIAL| |2018071302| || ||
	|REFRESH| |10800| || ||
	|RETRY| |3600| || ||
	|EXPIRE| |604800| || ||
	|MIN_TTL| |86400| || ||
	|DEFAULT_TTL| |86400| || ||
	|NS| |1.2.3.4.5.6.7.8.9.0.1.2.3.4.5.6.7.8.9.0.2.1.2.A.A.2.2.IP6.ARPA.| |ns1.bar.com.| ||
	|NS| |1.2.3.4.5.6.7.8.9.0.1.2.3.4.5.6.7.8.9.0.2.1.2.A.A.2.2.IP6.ARPA.| |ns3.bar.com.| |1|
	|PTR| |9.8.7.6.5.1.2.3.4.5.6.7.8.9.0.1.2.3.4.5.6.7.8.9.0.2.1.2.A.A.2.2.IP6.ARPA.| |foo.com.| ||
	|PTR| |9.9.9.9.9.1.2.3.4.5.6.7.8.9.0.1.2.3.4.5.6.7.8.9.0.2.1.2.A.A.2.2.IP6.ARPA.| |bar.com.| ||
	|PTR| |*.1.2.3.4.5.6.7.8.9.0.1.2.3.4.5.6.7.8.9.0.2.1.2.A.A.2.2.IP6.ARPA.| |newtest.tst.| ||
}

Primary NS

The primary NS record is marked with 1 in the dump file. If missing the NS order is random.

bar.com.|master {
    |NS| |bar.com.| |ns1.first.co.uk.| ||
    |NS| |bar.com.| |ns2.first.co.uk.| |1|
}

Dump export utilities

Command line utilities

The export command line utilities support the new dump file format. These utilities help you set the DNS Manager server to act as slave DNS for other servers.

The dump export utility should be copied on the primary server. To find out more details about how to configure Primary/Secondary Server Setup with DNS Manager read this KB article.

Dump scripts

New dump scripts are provided for major control panels on the market. The new dump scripts can export both master and slaves zones. Export settings are set as variables in the script or in the configuration file.

Use this command to find the DNSMANAGER_ROOT_D path:

#> grep DNSMANAGER_ROOT_D /etc/dnsmanager/dnsmanager.conf
DNSMANAGER_ROOT_D /usr/local/dnsmanager


Below you can find the list of export scripts available:

Zones management software

Folder

DNS Manager Script

Bind genericDNSMANAGER_ROOT_D/remote/bindbind_export.sh
DNS ManagerDNSMANAGER_ROOT_D/remote/dnsmanagerdnsmanager_export.sh
Plesk LinuxDNSMANAGER_ROOT_D/remote/pleskplesk_export.sh
plesk_export.pl
Plesk WindowsDNSMANAGER_ROOT_D/remote/plesk_winplesk_win_export.exe
PowerDNSDNSMANAGER_ROOT_D/remote/powerdnspowerdns_export.sh
Helm Control Panel for WindowsDNSMANAGER_ROOT_D/remote/helmhelm_complete.exe
helm_export.exe
helm_zones.exe
InterWorx Hosting Control PanelDNSMANAGER_ROOT_D/remote/iworxiworx_complete.php
iworx_zones.php
EnsimDNSMANAGER_ROOT_D/remote/ensimensim_complete.sh
ensim_zones.sh

Services

Please find below a list of all services on a DNS Manager 4 server.

Web interface service
  • Name: dnsmanager
  • Short description: The service is responsible for running DNS Manager web interface
  • Init script: Usually located in /etc/init.d/dnsmanager
Zone management service
  • Name: zonemngd
  • Short description: The service synchronizes the bind configuration file with updates (received using any means)
  • Init script: Usually located in /etc/init.d/zonemngd
Remote import service
  • Name: updateurld
  • Short description: The service synchronizes DNS Manager local database with remote updates.
  • Init script: Usually located in /etc/init.d/updateurld
NAMED service
  • Name: named
  • Short description: BIND (Berkeley Internet Name Domain) is an implementation of the DNS (Domain Name System) protocols; BIND includes a DNS server (named), which resolves host names to IP addresses, a resolver library (routines for applications to use when interfacing with DNS), and tools to verify that the DNS server is operating properly.
  • Init script: Usually located in /etc/init.d/named or  /etc/init.d/named-chroot
Round robin service
  • Name - rrmonitd
  • Short description - Automates the DNS Round Robin disqualification and qualification when a resource associated with a resource record becomes unavailable/available again.
  • Init script - Usually located in /etc/init.d/rrmonitd

Interface access and disk location

DNS Manager comes with a dedicated web management interface, accessible in the browser at:

https://<your_server_ip>

To log in to the interface for the first time, you must supply the following login credentials:

user: admin
password: welcome

The skin directory can be found in:

DNSMANAGER_ROOT_D/admin/htdocs/skins

The language pack directory can be found in:

DNSMANAGER_ROOT_D/admin/htdocs/language

All important paths are defined in /etc/dnsmanager/dnsmanager.conf

#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))

Except where otherwise noted, content in this space is licensed under a Creative Commons Attribution 4.0 International.