Chapter 8 - $ORIGIN Directive

$ORIGIN defines a base value from which 'unqualified' name substitutions are made when processing the zone file. Zone files which do not contain an $ORIGIN directive, while being perfectly legitimate are also much more confusing. In general always explicitly define an $ORIGIN directive unless there is a very good reason not.

$ORIGIN is a standard directive defined in RFC 1035.

$ORIGIN values must be 'qualified' (they end with a 'dot'). Confusingly some documentation omits this dot.

If an $ORIGIN directive is not defined - BIND synthesizes one from the zone name in the named.conf file as the initial ORIGIN e.g.

// named.conf file fragment

zone "example.com" in{
	type master;
	file "pri.example.com";
};

example.com is the initial value of $ORIGIN if none present in the zone file.

$ORIGIN is used in two contexts during zone file processing:

  1. The symbol @ is used in BIND to denote 'zone root'. The current value of $ORIGIN is substituted for (replaces) the symbol @.
  2. The current value of $ORIGIN is added to any 'unqualified' name (any name which does not end in a 'dot').

Examples

@ Symbol replacement:

; example.com zone file fragment 
; no ORIGIN present
....
@          IN      NS     ns1.example.com. 
; ns1.example.com is the name server for example.com
....
$ORIGIN uk.example.com.
@          IN      NS     ns2.example.com. 
; functionally identical to
; uk.example.com IN NS ns2.example.com
; ns2.example.com is the name server for uk.example.com

Unqualified name addition:

; example.com zone file fragment 
; no ORIGIN present
....
www          IN      A    192.168.23.15 
; www.example.com = IP 192.168.23.15
joe          IN      CNAME www ;unqualified name
; joe.example.com = www.example.com
....
$ORIGIN uk.example.com.
ftp          IN      A     10.0.16.34 
; functionally identical to
; ftp.uk.example.com IN A 10.0.16.34

Pro DNS and BIND by Ron Aitchison

Contents

tech info
guides home
dns articles
intro
contents
1 objectives
big picture
2 concepts
3 reverse map
4 dns types
quickstart
5 install bind
6 samples
reference
7 named.conf
8 dns records
operations
9 howtos
10 tools
11 trouble
programming
12 bind api's
security
13 dns security
bits & bytes
15 messages
resources
notes & tips
registration FAQ
dns resources
dns rfc's
change log