Updated: 2005-01-07
Created: 2004-06-15
Licensing and disclaimer of warranty
For DNS, the OReilly book is probably the nicest and it explains both the easy bits and the subtle things. What follows is a fairly general homily with things that you already know, but just to present a coherent picture.
$INCLUDE
).$
and things like @
pseudo-domain
names and “blank” domain names, and the use of "."
as the last component of a domain name to mean it is
absolute.A
RR that defines the address of the target of an
NS
record. Unnecessary glue records are as a rule
a very bad idea. A zone(file) should as far as possible
only contain RRs about domains in that zone[file]
or glue required by that zone. Some DNS server packages check
this.General principles:
$ORIGIN com. .... example NS A.example.com. example NS B.example.com.A and B must be authoritative for
example.com
.$ORIGIN example.com. .... @ NS A.example.com. @ NS B.example.com. @ NS C.example.com.Other authoritative servers like C may be added to the list, but it is not necessary.
Specifically about RRs (resource records, represented by lines inside a zone file):
SOA
RR must contain the name of an
authoritative server from which other (authorized)
authoritative servers can AXFR the zone. As a rule this should
be the name of the master server.@
or
equivalent) cannot be a CNAME
.NS
RR cannot
be a CNAME
and cannot be an IP address.MX
RR cannot
be a CNAME
and cannot be an IP address.CNAME
RR it cannot
have any other RR, because it must be an exact synonym for the
domain name it is CNAME
d to, and one cannot
superset or override the RRs for the target domain.CNAME
should not be another
CNAME
d domain; that is there cannot be chains of
CNAME
s. This can be difficult to avoid in
practice and violating this rule is not so bad.SOA
RR, but any sensible values will not violate
them.$INCLUDE
to achieve an equivalent effect is often
not a good idea.US.CA.SF.dotCom.garage
if the domain name for
the zone is garage.dotCom.SF.CA.US
. The reason
for this is that the inverted order unfortunately used by the
DNS for domains makes them hard to sort in a meaningful
way..
to ensure they are
understood as absolute unless they do refer to domains in the
zone file.@
or a verbatim repetition of the field in
the previous line.$ORIGIN
makes non absolute domain names
belong to the specified zone explicitly, and means that one
cannot share a zone file between two zones, which instead is
often desirable.NS
and MX
cannot target IP addresses means that in practice their
targets must be A
/AAAA
RRs. The
no-CNAME restriction is often not enforced, and the symbolic
name only one sometimes is not enforced.$TTL
than
put one on every RR or take whatever default is assumed by
BIND.RP
for a subdomain is not necessary, but some
ISPs/services require it (mostly for weak antispam reasons).DNS
, SMTP
, POP3
,
FTP
, WWW
.TXT
, RP
, LOC
,
SRV
, ... and some obscure practices especially
concerning reverse DNS mappings that I do out of a sense of
historical style or for geek value but are not necessary. They
are often only explained in the OReilly book on DNS.MX
records and there is any other RR for them. I
do something like that, but it is for carefully calculated
reasons and for very great benefit.; -*- outline-regexp: ";;* " -*- vim:ft=bindzone $TTL 1H @ SOA DNS hostmaster ( ;serial refresh retry expire negTTL 2004022300 1H 30M 20D 1H ; YYYYmmDDnn ) @ RP root rp @ TXT "Zone for example.org" rp TXT "example.org hostmaster" ; ; '@', name servers and mail exchangers cannot be 'CNAME's. ; @ NS DNS ; @ MX 1 SMTP ; @ A IPaddress ; DNS A IPaddress SMTP A IPaddress ; POP3 CNAME @ WWW CNAME @ FTP CNAME @ ; ; Anti-SPAM domains. ; remove-this TXT "This is a spamtrap subdomain. Remove it from email addresses." ; ; Recipient-specific domains. ; *.to MX 1 SMTP *.to MX 99 MXbackup.Gradwell.net. *.for MX 1 SMTP *.for MX 99 MXbackup.Gradwell.net.
; -*- outline-regexp: ";;* " -*- vim:ft=bindzone $TTL 1H @ SOA DNS hostmaster ( ;serial refresh retry expire negTTL 2004060900 1H 30M 20D 1H ; YYYYmmDDnn ) @ RP root rp @ TXT "Zone for example.com" rp TXT "example.com hostmaster" @ LOC 52 14 05 N 00 08 50 E 50m ; ; '@', name servers and mail exchangers cannot be 'CNAME's. ; @ NS ns1.Gradwell.net. @ NS ns2.Gradwell.net. @ NS DNS ; hq NS DNS ; @ MX 10 @ @ MX 20 SMTP @ MX 30 SMTP2 @ MX 99 MXbackup.Gradwell.net. ; @ A IPaddress IP6 AAAA IPv6address ; DNS A IPaddress DNS.IP6 AAAA IPv6address SMTP A IPaddress SMTP.IP6 AAAA IPv6address SMTP2 A IPaddress SMTP2.IP6 AAAA IPv6address ; POP3 CNAME @ POP3.IP6 CNAME IP6 WWW CNAME @ WWW.IP6 CNAME IP6 FTP CNAME @ FTP.IP6 CNAME IP6 SSL CNAME @ SSL.IP6 CNAME IP6 H323 CNAME @ H323.IP6 CNAME IP6 SIP CNAME @ SIP.IP6 CNAME IP6 ; ; The IPv6 network is 2001:0618:0400:b4eb::/64. gw.IP6 AAAA IPv6address net.IP6 AAAA IPv6prefix:: net.IP6 PTR IPv6reversemap.IP6.ARPA. net.IP6 PTR IPv6reversemap.IP6.INT. sm.IP6 AAAA ffff:ffff:ffff:ffff:: ; ; Anti-SPAM domains. ; 0406.exp TXT "This subdomain loses its MX RR sometime after Jun 2004" 0406.exp MX 1 SMTP ; remove-this TXT "This is a spamtrap subdomain. Remove it from email addresses." ; ; Recipient-specific domains. Remember special rules about '*'. ; *.to MX 1 SMTP *.to MX 99 MXbackup.Gradwell.net. *.for MX 1 SMTP *.for MX 99 MXbackup.Gradwell.net. ; ; Dynamic subzone. ; ;dyn NS @
One might want to add a section for listing services:
; ;domain [ttl] IN NAPTR order preference flags service regexp target @ NAPTR 0 0 "s" "DNS+D2U" "" _dns._udp @ NAPTR 0 0 "s" "DNS+D2T" "" _dns._tcp @ NAPTR 0 0 "s" "SMTP+D2T" "" _pop3._tcp @ NAPTR 0 0 "s" "SSMTP+D2T" "" _ssmtp._tcp @ NAPTR 0 0 "s" "POP3+D2T" "" _pop3._tcp @ NAPTR 0 0 "s" "POP3+D2T" "" _pop3._tcp @ NAPTR 0 0 "s" "POP3S+D2T" "" _pop3s._tcp @ NAPTR 0 0 "s" "HTTP+D2T" "" _http._tcp @ NAPTR 0 0 "s" "HTTPS+D2T" "" _https._tcp @ NAPTR 0 0 "s" "FTP+D2T" "" _ftp._tcp @ NAPTR 0 0 "s" "H323+D2T" "" _h323._tcp @ NAPTR 0 0 "s" "SIPS+D2T" "" _sips._tcp @ NAPTR 1 0 "s" "SIP+D2T" "" _sip._tcp @ NAPTR 2 0 "s" "SIP+D2U" "" _sip._udp ; ;_service._proto.name SRV prio weight port target _dns._udp SRV 1 10 53 DNS _dns._tcp SRV 1 10 53 DNS _smtp._tcp SRV 1 10 25 POP3 _ssmtp._tls SRV 1 10 465 SSL _pop3._tcp SRV 1 10 110 POP3 _pop3s._tls SRV 1 10 995 SSL _http._tcp SRV 1 10 80 WWW _https._tls SRV 1 10 443 SSL _ftp._tcp SRV 1 10 21 FTP _h323._tcp SRV 1 10 1720 H323 _sips._tcp SRV 1 10 5060 SIP _sip._tcp SRV 1 10 5060 SIP _sip._udp SRV 1 10 5060 SIP
The services above are generic ones. For a list of (some) of the names used for Microsoft AD compatibility, check the Samba Network Browsing HOWTO.