配置IPv6下的的DNS服务器BIND

BIND上的IPv6功能介绍

BIND是目前互联网是使用最官方的DNS服务器端软件,对IPv6的支持也非常方便,BIND9 完全支持所有当前IPv6 中对名字到地址和地址到名字查询的定义。当运行在IPV6 兼容系统的时候,它也使用IPV6 地址进行请求。对于转发的查询,BIND9 同时支持A6 和AAAA 记录。同时具有对AAAA 和A6 记录的支持也是有用的,大多数操作系统所带的解析器只支持AAAA 的解析查询,因为A6 的解析要比A 和AAAA 的解析实现起来困难得多。
A6记录目前已被废除,不在使用

对于IP6 反向解析,BIND9 支持在域ip6.arpa 域中使用的新“bitstring”格式,同时也对于在ip6.int 域使用的老版本的,不建议使用的“单元组”格式化也是一样的。BIND9 包括新的轻量级的解析库和解析器后台进程,它使用了一些新的程序来避免A6的chain following 和bitstring 标签的复杂性。

配置服务器监听IPv6地址

首先我们只需要在Bind的配置文件中添加一个选项配置,即可使服务器监听IPv6地址:

  1. listen-on-v6  { any; };

复制代码 listen-on-v6 选项用来设定监听进入服务器的ipv6 请求的端口。

如果需要修改默认端口,以及只监听固定的IPv6地址, 则使用如下格式:

  1. listen-on-v6 port 1234 { 1234::1234; };

复制代码 要使服务器不监听任何ipv6 地址,使用:

  1. listen-on-v6 { none; };

复制代码 如果没有设定listen-on-v6 语句,服务器将不会监听任何ipv6 地址。

配置AAAA 记录

AAAA 记录和IPV4 的A 记录相似,需要在BIND的各个zone中进行配置。它在一个单独的记录中设定了全部地址。例如:

  1. $ORIGIN ipv6s.com.
  2. ipv6    3600 IN    AAAA         2001:1:2:3::1

复制代码
配置A6记录

虽然A6记录已被废除,但A6记录还是有部分应用,且是BIND支持的功能,A6 记录比AAAA 记录更灵活,也就更复杂。A6 记录可以用来形成一个A6 记录的链,其中每个记录设定了一部分的IPV6 地址。它也可以用来指定整个的记录。例如,这条纪录和前例中的AAAA 记录一样:

  1. $ORIGIN  ipv6s.com.
  2. ipv6   3600    IN    A6      0       2001:1:2:3::1

复制代码
A6 链(Chains)

A6 记录允许network renumbering。但只有当一个A6 记录设置了域自主控制的地址段时起作用。例如,一个主机名字可能是公司名“company”。它有两个为之提供IPV6 地址空间的ISP。这两个ISPs 完全设定了他们提供的IPV6 前缀。

在公司的地址段中:

  1. $ORIGIN ipv6s.com.
  2. ipv6     3600    IN    A6    0:0:0:0:1::1    company.ipv6s1.net.
  3. ipv6     3600    IN    A6    0:0:0:0:1::1    company.ipv6s2.net.

复制代码 ISP1 会使用:

  1. $ORIGIN  ipv6s1.net.
  2. company   3600   IN    A6    0      1234:1::

复制代码 ISP2 会使用:

  1. $ORIGIN  ipv6s2.net.
  2. company    3600   IN    A6   0      5678:2::

复制代码 当需要解析ipv6.ipv6s.com 时,解析器(在解析器后台进程或caching 域名服务器中)会发现2 个部分的A6 记录,并使用其它的名字来找到其余的数据。

DNS 服务器的A6 记录

当A6 记录设置了一个域名服务器的地址,它应该使用完整的地址而不是部分地址。例如:

  1. $ORIGIN ipv6s.com.
  2. @      14400     IN       ns0
  3.          14400     IN       ns1
  4. ns0   14400     IN       A6       2001:1:2:3::1
  5. ns1   14400     IN       A         1.2.3.4

复制代码 建议不要使用IPv4-in-IPv6 的地址映射。如果主机是IPV4 地址,就使用A 记录,而不是 ::ffff:1.2.3.4 的A6 记录。

使用Nibble 格式进行IPv6地址到域名的反向查询

虽然不建议使用Nibble 格式查找名字,但它能向下兼容支持现有的IPV6 应用。当解析一个nibble 格式的地址时,地址块被简单的翻转了,在名字的结果后面附加上一个ip6.int.,就象在IPv4 中一样。例如,下面的例子会为一台主机提供反转名称查询,地址是2001:1234:5678:1:987::1

  1. $ORIGIN    1.0.0.0.8.7.6.5.4.3.2.1.1.0.0.2.ip6.int.
  2. 1.0.0.0.0.0.0.0.0.0.0.0.7.8.9.0    14400   IN   PTR   ipv6.ipv6s.com.

复制代码
使用bitstring 格式进行IPv6地址到域名的反向查询

位串标签可以在任何位边界上开始和结素,而不是象在单元组中那样在四个字节的倍数上。它们使用ip6.arpa 而不是ip6.int

用位串复制前面的例子:

  1. $ORIGIN     [x2001123456780001/64].ip6.arpa.
  2. [x0987000000000001/64]      14400     IN      PTR     ipv6.ipv6s.com.

复制代码
用DNAME 来标示IPV6 的反向地址

在IPV6 中,同一台主机可能有许多来自不同网络提供商的地址。既然地址得结尾部分常常不变,DNAME 可以帮助减少需要维护的域反向映射文件的数量。例如,一台有两个提供商(ipv6s1.cn 和 ipv6s2.cn)的主机,这样有两个IPV6 地址。既然主机选择了它自己的64 位主机地址部分,变化得部分就只是提供商的地址了:

  1. $ORIGIN   ipv6s.com
  2. host    IN   A6   64   ::1234:5678:1212:5675   cust1.ipv6s1.cn.
  3.          IN   A6   64   ::1234:5678:1212:5675   subnet5.ipv6s2.cn.

复制代码

  1. $ORIGIN   ipv6s1.cn.
  2. cust1      IN   A6   48   0:0:0:dddd::   ipv6net.ipv6s1.cn.
  3. ipv6net   IN  A6    0    aa:bb:cccc::

复制代码

  1. $ORIGIN ipv6s2.cn.
  2. subnet5   IN  A6  48  0:0:0:1::  ipv6net2.ipv6s2.cn.
  3. ipv6net2  IN  A6   0   6666:5555:4::

复制代码 这里设置了正向查询。为了解决反向解析,提供者ipv6s1.cn 应该设置:

  1. $ORIGIN \[x00aa00bbcccc/48].ip6.arpa.
  2. \[xdddd/16]  IN  DNAME  ipv6-rev.ipv6s.com

复制代码 并且ipv6s2.cn 应该设置:

  1. $ORIGIN  \[x666655550004/48].ip6.arpa.
  2. \[x0001/16]  IN  DNAME  ipv6-rev.ipv6s.com

复制代码 ipv6s.com 只需要一个域文件处理这些反向映射:

  1. $ORIGIN  ipv6-rev.ipv6s.com
  2. \[x1234567812125675/64]  IN  PTR  host.ipv6s.com

复制代码

原创文章,作者:admin,如若转载,请注明出处:https://www.ipv6s.com/basis/application/20101125449.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注