BIND 9 fully supports all currently defined
    forms of IPv6 name to address and address to name lookups. It will also use
    IPv6 addresses to make queries when running on an IPv6 capable system.
    For forward lookups, BIND 9 supports both A6
    and AAAA records. The use of AAAA records is deprecated, but it is still
    useful for hosts to have both AAAA and A6 records to maintain backward
    compatibility with installations where AAAA records are still used. In fact,
    the stub resolvers currently shipped with most operating system support only
    AAAA lookups, because following A6 chains is much harder than doing A or
    AAAA lookups.
    For IPv6 reverse lookups, BIND 9 supports
    the new "bitstring" format used in the ip6.arpa
    domain, as well as the older, deprecated "nibble" format used in
    the ip6.int domain.
    BIND 9 includes a new lightweight resolver
    library and resolver daemon which new applications may choose to use to
    avoid the complexities of A6 chain following and bitstring labels, see Chapter
    5.
    For an overview of the format and structure of IPv6 addresses, see Section
    A.3.1.
    
      
      The AAAA record is a parallel to the IPv4 A record. It specifies the
      entire address in a single record. For example,
      $ORIGIN example.com.
host            3600    IN      AAAA    3ffe:8050:201:1860:42::1
      While their use is deprecated, they are useful to support older IPv6
      applications. They should not be added where they are not absolutely
      necessary.
     
    
      
      The A6 record is more flexible than the AAAA record, and is therefore
      more complicated. The A6 record can be used to form a chain of A6 records,
      each specifying part of the IPv6 address. It can also be used to specify
      the entire record as well. For example, this record supplies the same data
      as the AAAA record in the previous example:
      $ORIGIN example.com.
host            3600    IN      A6      0 3ffe:8050:201:1860:42::1
      
        
        A6 records are designed to allow network renumbering. This works when
        an A6 record only specifies the part of the address space the domain
        owner controls. For example, a host may be at a company named "company."
        It has two ISPs which provide IPv6 address space for it. These two ISPs
        fully specify the IPv6 prefix they supply.
        In the company's address space:
        $ORIGIN example.com.
host            3600    IN      A6      64 0:0:0:0:42::1 company.example1.net.
host            3600    IN      A6      64 0:0:0:0:42::1 company.example2.net.
        ISP1 will use:
        $ORIGIN example1.net.
company         3600    IN      A6      0 3ffe:8050:201:1860::
        ISP2 will use:
        $ORIGIN example2.net.
company         3600    IN      A6      0 1234:5678:90ab:fffa::
        When host.example.com is looked up, the
        resolver (in the resolver daemon or caching name server) will find two
        partial A6 records, and will use the additional name to find the
        remainder of the data.
       
      
        
        When an A6 record specifies the address of a name server, it should
        use the full address rather than specifying a partial address. For
        example:
        $ORIGIN example.com.
@               14400           IN      NS              ns0
                14400           IN      NS              ns1
ns0             14400           IN      A6              0 3ffe:8050:201:1860:42::1
ns1             14400           IN      A               192.168.42.1
        It is recommended that IPv4-in-IPv6 mapped addresses not be used. If
        a host has an IPv4 address, use an A record, not an A6, with ::ffff:192.168.42.1
        as the address.
       
     
    
      
      While the use of nibble format to look up names is deprecated, it is
      supported for backwards compatiblity with existing IPv6 applications.
      When looking up an address in nibble format, the address components are
      simply reversed, just as in IPv4, and ip6.int. is
      appended to the resulting name. For example, the following would provide
      reverse name lookup for a host with address 3ffe:8050:201:1860:42::1.
      $ORIGIN 0.6.8.1.1.0.2.0.0.5.0.8.e.f.f.3.ip6.int.
1.0.0.0.0.0.0.0.0.0.0.0.2.4.0.0   14400 IN      PTR     host.example.com.
     
    
      
      Bitstring labels can start and end on any bit boundary, rather than on
      a multiple of 4 bits as in the nibble format. They also use ip6.arpa
      rather than ip6.int.
      To replicate the previous example using bitstrings:
      $ORIGIN \[x3ffe805002011860/64].ip6.arpa.
\[x0042000000000001/64]         14400   IN      PTR     host.example.com.
     
    
      
      In IPV6, the same host may have many addresses from many network
      providers. Since the trailing portion of the address usually remains
      constant, DNAME can help reduce the number of zone
      files used for reverse mapping that need to be maintained.
      For example, consider a host which has two providers (example.net
      and example2.net) and therefore two IPv6
      addresses. Since the host chooses its own 64 bit host address portion, the
      provider address is the only part that changes:
      $ORIGIN example.com.
host                    IN      A6      64      ::1234:5678:1212:5675 cust1.example.net.
                        IN      A6      64      ::1234:5678:1212:5675 subnet5.example2.net.
$ORIGIN example.net.
cust1                   IN      A6      48      0:0:0:dddd:: ipv6net.example.net.
ipv6net                 IN      A6      0       aa:bb:cccc::
$ORIGIN example2.net.
subnet5                 IN      A6      48      0:0:0:1:: ipv6net2.example2.net.
ipv6net2                IN      A6      0       6666:5555:4::
      This sets up forward lookups. To handle the reverse lookups, the
      provider example.net would have:
      $ORIGIN \[x00aa00bbcccc/48].ip6.arpa.
\[xdddd/16]             IN      DNAME           ipv6-rev.example.com.
      and example2.net would have:
      $ORIGIN \[x666655550004/48].ip6.arpa.
\[x0001/16]             IN      DNAME           ipv6-rev.example.com.
      example.com needs only one zone file to handle
      both of these reverse mappings:
      $ORIGIN ipv6-rev.example.com.
\[x1234567812125675/64] IN      PTR             host.example.com.