IPv6 DNS Setup Information

Setting up correctly DNS with IPv4 is already somewhat complex, but don't worry, doing it for IPv6 is not rocket science, ... but close.

This page gives some guidelines on how to properly setup DNS in support of IPv6. Within the examples, the important items are hyperlinked to the relevant portion of text explaining them.

Table of Contents

Introduction
DNS Platform
Study case scenario
BIND Configuration File
Forward lookup zone file
    Global names
Reverse lookup zone files
    Local addresses
    Global addresses
Copyright


Introduction

There is not yet a native IPv6 DNS root server. At the present time the DNS implementations available all run on top of IPv4, and the DNS system supporting IPv6 is linked to IPv4 information. However, some of the DNS implementations begin to support native IPv6 transportation such as bind8 with KAME patch, newbie and bind9(under developing).

RFC1886 defines the changes that need to be made the DNS to support IPv6. The changes include a new resource record type, AAAA record. Currently, AAAA record is used in order to store an IPv6 addresses because the extensions are designed to be compatible with existing DNS implementations.

In addition to RFC1886, there is another DNS extensions to support IPv6 addresses. Draft-ietf-ipngwg-dns-lookups-06 supports renumberable and aggregatable IPv6 addressing.   But no implementation which support the extensions is available. Bind9 will support it but under developing.

Furthermore, RFC 1912 provides recommendations on how to setup DNS for IPv4. It insists in particular on declaring local zone files for the reverse lookup of loopback and broadcast addresses so that the load on the root name servers is minimized. The setup described here follows the same philosophy, but applied to IPv6.

 


DNS platform

The recommended platform for running DNS with IPv6 is BIND 8.2.2-P5. Although previous BIND version (starting with 4.9.4) could be used as well, BIND 8.2.2-P5 is preferred, because:

This is the currently developed code;
IPv6 will eventually make extensive use of dynamic updates, and other recent enhancements to the DNS protocol. Those are supported in BIND 8.*;
If one is already playing with IPv6, he/she should have the right mindset to undertake a quantum leap with his/her DNS platform;
Security reasons.

The use of DNS in support of IPv6 as described here will therefore assume that BIND 8.2.2-P5 is in place. The most recent BIND kits are available from the Internet Software Consortium.

By the way, If you want to use the bind8 which supports IPv6 native transportation, KAME provides an IPv6 transportation patch for bind-8.1.2.

 


Study case scenario

The different files described here correspond to the actual setup in use by the ipv6domain-tottaro organization.

The organization uses the domain ipv6-tottaro.org for the computer lab where systems are connected to the 6Bone. In order to avoid mixing IPv6 and IPv4 attributes for domain names, it has been decided to list all the IPv6 hosts and resources within the v6.ipv6domain-tottaro.org subdomain. The principal (and primary) nameserver in use is ns.ipv6domain-tottaro.org The resolver on all the hosts in the computer lab are using as ns.ipv6domain-tottaro.org their name server.

 


BIND Configuration File

The BIND configuration file (usually /etc/named.conf) instructs the BIND name server about the zone files it is serving. The following configuration is in place on ns.ipv6domain-tottaro.org:


/*
 * BIND 8.2.2 boot configuration file
 *
 * Author: Bertrand Buclin
 *
 * Modification History:
 *	16-Sep-97	Buclin
 *		Initial Version
 *      31-Jan-00      Sekiya
 *             Revised
 */

options {
	directory "/var/named";
};

//
// localhost
//
zone	"localhost"	{
		type master;
		file "localhost";
};


//
// IPv4 zone files
//
zone	"."	{ 
		type hint;
		file "root.cache" ;
};

zone	"1.0.0.127.in-addr.arpa"	{
		type master;
		file "localhost";
};

//
// IPv6 zone files
// ==========
//
// First, load the zone for the IPv6 loopback address.
//
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int."	{
		type master;
		file "localhost";
};

//
// 	If your IPv6 domain is "ipv6domain-tottaro.org", you need below zone.
//
zone "v6.ipv6domain-tottaro.org"	{
		type master;
		file "v6.ipv6domain-tottaro.org";
};

//
//	Reverse lookup zones
//	If you have 3ffe:800::/24 pTLA ID, you need below zone.
//
zone "0.8.e.f.f.3.ip6.int"	{
		type master;
		file "3ffe:08";
 };

//
//	If you have 3ffe:801::/32 pNLA ID, you need below zone.
//
zone "1.0.8.0.e.f.f.3.ip6.int"	{
		type master;
		file "3ffe:0801";
};

//
//	If you have 2001:200::/35 sTLA ID, you need below zones.
//
zone "0.0.0.2.0.1.0.0.2.ip6.int"	{
		type master;
		file "2001:0200:0";
};

zone "1.0.0.2.0.1.0.0.2.ip6.int"	{
		type master;
		file "2001:0200:1";
};

The zone files are stored in the /var/named/ filesystem in prevision of dynamic updates: it might be dangerous to located them on /etc or /usr since with dynamic updates, the system manager does not master the anymore the updates to the zones files. These might grow rapidly (especially when there is some misconfiguration going on...), and could easily fill up the root partition.

 


Forward lookup zone file

The forward lookup zone file is the most straightforward to set up. For each host or domain carrying an IPv6 address, it is simply a matter of adding a AAAA (pronounced quad-A) resource record. There are several forward lookup zones to set up, though:

One for the globally valid domain names and routable addresses,
One, or more, for the link local addresses and corresponding names,
Maybe, one or more zones if a site is using site-local or organization local addresses.

One might be tempted to add the AAAA record to an existing domain name. Although the temptation is big, and it is natural to do so, especially for systems running IPv4 and IPv6, one should think twice before doing it: the AAAA record type is not understood by all DNS resolvers, and some applications might fail when receiving such a record back. Of course, such applications only get what they deserve since they should not ask for something they don't understand... Another situation is when a host is running both stacks and attempts to resolve the name of a remote party. Depending again on the implementation, the calling party might be confused if it is presented with both an IPv4 and IPv6 address... At the end of the day, though, those issues will need to be sorted out to ensure a smooth migration.

The forward translation file for zone v6.ipv6domain-tottaro.org is given below.

; File:v6.ipv6domain-tottaro.org
; IPv6 Domain Tottaro Organization.
; IP v6 test network
;
@		IN	SOA	ns.ipv6domain-tottaro.org.	root.ipv6domain-tottaro.org. (
						100013117 
                                                3H	; refresh
						15M	; retry
						1W	; expiry
						1D )	; minimum 
		IN	NS		ns.ipv6domain-tottaro.org.
		IN	NS		ns2.ipv6domain-tottaro.org.
		IN	NS		ns.ipv4domain-tottaro.org.
		IN	MX	10	mail.ipv6domain-tottaro.org.
;
;
; Network names
;
pTLA-ipv6domain-tottaro		IN	AAAA	3FFE:800::
sTLA-ipv6domain-tottaro		IN	AAAA	3FFE:200:0::
							IN	AAAA	3FFE:200:1000::
pNLA-ipv6domain-tottaro		IN	AAAA	3FFE:801::

;
; Local hosts
; ------------------
host1 			IN	AAAA	3FFE:800::2A8:79FF:FE32:1982
				IN	AAAA	3FFE:800::80
WWW			IN	CNAME	host1.v6.ipv6domain-tottaro.org.
;	
host2			IN	AAAA	2001:200:1000:0:25F:23FF:FE80:1234
;
host3			IN	AAAA	3FFE:801:1000::2EF:6FFF:FE11:2222
host4			IN	AAAA	3FFE:801:2000:100:280:9AFF:FE80:3333
;
;  Add more hosts !

 


Reverse lookup zone files

Similarly to the forward translation of names, the reverse lookups under IPv6 have to cope with the various scopes of the addresses.

There are a few major differences in the way that domain names are used to support IPv6 reverse address lookup compared to IPv4. The first one lies in the fact that the reverse lookup domain names for IPv6 addresses are listed under the IP6.INT domain. The second one is that each digit in the address makes a domain token of its own.

Loopback, localhost, etc...

;File: localhost
@		IN	SOA	ns.ipv6domain-tottaro.org.	root.ipv6domain-tottaro.org. (
					3 ; Serial
					3H	; refresh
					15M	; retry
					1W	; expiry
					1D )	; minimum 
;
		IN	NS		localhost.
;
localhost.				IN	A	127.0.0.1
1.0.0.127.in-addr.arpa.		IN	PTR		localhost.
;
localhost. 				IN 	AAAA	::1
;
$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0	IN	PTR		localhost.

 

Global addresses

The globally routable address must have a reverse lookup defined. Each organization operating a top level aggregator receives a sub-domain corresponding to their TLA. In turn, they will delegate further subdomains to transit providers. The process goes recursively until a prefix is assigned to an end site or network.

The first example below corresponds to a the zone file the pTLA organization would operate, although the actual zone here is that of a pTLA on the 6Bone.

; File: 3ffe:80
; IPv6 reverse lookup zone for 3ffe:800::/24
; For the 6Bone pTLA
; Created: 27 August 1997, by Bertrand Buclin
; Revised: 31 January 2000, by Yuji Sekiya
;
;
@		IN	SOA	ns.ipv6domain-tottaro.org.	root.ipv6domain-tottaro.org. (
                                                100013117 
                                                3H	; refresh
						15M	; retry
						1W	; expiry
						1D )	; minimum
		IN	NS		ns.ipv6domain-tottaro.org.
		IN	NS		ns2.ipv6domain-tottaro.org.
		IN	NS		ns.ipv4domain-tottaro.org.
;
; Set the origin to the pTLA prefix.
;
$ORIGIN	8.0.e.f.f.3.ip6.int.
0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0	IN	PTR		pTLA-ipv6domain-tottaro
2.8.9.1.2.3.e.f.f.f.9.7.8.a.2.0.0.0.0.0.0.0.0.0.0.0.0	IN	PTR		host1.v6.ipv6domain-tottaro.org.
0.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0	IN	PTR		www.v6.ipv6domain-tottaro.org.


;
; pNLA = 01 (3ffe:801::/32) 
;
$ORIGIN	1.0.8.0.e.f.f.3.ip6.int.
@		IN	NS		ns.ipv6domain-tottaro.org.
		IN	NS		ns2.ipv6domain-tottaro.org.
		IN	NS		ns.ipv4domain-tottaro.org.
0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0		IN	PTR		pNLA-ipv6domain-tottaro
;

The second example below shows a zone file for a pNLA site. In this case, all the hosts within the site are listed in this zone. One could also choose to organize the file by subnets, and only use the equivalent of the EUI-64 interface ID in domain label of the resource record.

; file: 3ffe:801
; IP v6 reverse lookup addresses for 3ffe:801::/32 zone
;
;
@		IN	SOA	ns.ipv6domain-tottaro.org.	root.ipv6domain-tottaro.org. (
                                                100013117 
                                                3H	; refresh
						15M	; retry
						1W	; expiry
						1D )	; minimum
		IN	NS		ns.ipv6domain-tottaro.org.
		IN	NS		ns2.ipv6domain-tottaro.org.
		IN	NS		ns.ipv4domain-tottaro.org.
;
;	Subnet 3ffe:801:1000::/64
;
$ORIGIN	0.0.0.0.0.0.0.1.1.0.8.0.e.f.f.3.ip6.int.
2.2.2.2.1.1.e.f.f.f.f.6.f.e.2.0		IN	PTR		host3.v6.ipv6domain-tottaro.org.

;
;	Subnet 3ffe:801:2000:100::/64
;
$ORIGIN	0.0.0.1.0.0.0.0.2.1.0.8.0.e.f.f.3.ip6.int.
3.3.3.3.0.8.e.f.f.f.a.9.0.8.2.0		IN	PTR		host4.v6.ipv6domain-tottaro.org.
This document was written by Betrand.Buclin@ch.att.com and revised by Yuji Sekiya
Last Modified: Monday January 31,2000.
Questions or problems regarding this document should be directed to sekiya@ISI.EDU