IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

DNSv6和DNS64简单配置

昔我往矣 2014-03-19 22:27:10 累计浏览 1,738 次
本机暂存

上次说了下DHCPv6的部署方法,详见此处,这次说说DNSv6的哪些事儿!
Linux系统下的各类服务基本上都已经支持IPv6,DNS是一个常用而且重要的服务,可以算是互联网的入口了。根据通常需求,说说几个和IPv6相关的重要选项!

一、首先当然是安装Bind
主要讲解配置方法,所以选择最简单的安装-从源安装,bind本身已经支持了IPv6,所以还是一样的软件包!

yum -y install bind bind-utils

二、配置好IPv6地址及准备
此文不再讲解怎么配置IPv6地址,可以从DHCPv6那篇文章找到在Linux上配置动态和静态IPv6地址的方法。我们测试环境随便玩,就配置IPv6地址是1234:5678:890::88/64。如下图
ifconfig-eth0为了测试方便,还有一些准备工作:
1. 设置系统的DNS服务器地址,
2. 关闭iptables和ip6tables防火墙,
3. 设置selinux为允许模式。

[root@localhost named]# cat /etc/resolv.conf
nameserver 1234:567:890::88
[root@localhost named]# /etc/init.d/ip6tables stop
ip6tables:清除防火墙规则:                                [确定]
ip6tables:将 chains 设置为 ACCEPT 策略:filter            [确定]
:正在卸载模块:                                           [确定]
[root@localhost named]# /etc/init.d/iptables stop
iptables:清除防火墙规则:                                 [确定]
iptables:将链设置为政策 ACCEPT:filter                    [确定]
iptables:正在卸载模块:                                   [确定]
[root@localhost named]# setenforce 0

在线上服务环境最好把防火墙什么的都开起来啦,合理的配置就是了!

三、主配置文件
最核心的全局配置内容,为避免误导(其它配置和DNSv4保持一样就行),只给出最精简的配置文件/etc/named.conf,

[root@localhost named]# cat /etc/named.conf
options {
   listen-on-v6 port 53 { any; };  #监听端口,其实IPv4和v6的所有地址都监听了!
   directory   "/var/named";   #定义区域文件保存路径
};

zone "." IN {
   type hint;
   file "named.ca";
};

zone "lhzhi.com" IN {
   type master;
   file "lhzhi.com.host";
};

除了必备的根域外,此处我还创建了一个lhzhi.com域用作测试,编辑该域的区域配置文件:

[root@localhost named]# vim /var/named/lhzhi.com.host
$TTL 3H
@   IN SOA  @ root.lhzhi.com. (
                   0   ; serial
                   1D  ; refresh
                   1H  ; retry
                   1W  ; expire
                   3H )    ; minimum
   IN      NS      ns.lhzhi.com.
ns      IN      AAAA    1234:567:890::88
www     IN      A       192.168.1.111
www     IN      AAAA    1234:4321::100
www2    IN      A       254.254.254.254

指向的IP地址都比较随意,主要是为了方便计算和查看!
解释:首先定义了ns记录,然后建立了两个子域名www.lhzhi.com和www2.lhzhi.com!给www子域名配置了一个IPv4地址和一个IPv6地址,www2只配置了IPv4 地址!
这就算把lhzhi.com域配置完成,然后重启named服务,并测试:

[root@localhost named]# chmod +r /var/named/lhzhi.com.host  #授予读权限
[root@localhost named]# service named restart           #重启服务
停止 named:                                               [确定]
启动 named:                                               [确定]
[root@localhost named]# host www.lhzhi.com         #解析www.lhzhi.com域名
www.lhzhi.com has address 192.168.1.111
www.lhzhi.com has IPv6 address 1234:4321::100
[root@localhost named]# host www2.lhzhi.com
www2.lhzhi.com has address 254.254.254.254

结果完全和我们配置的一样,最基本的功能已经实现!

四、IPv6的固定前缀
在IPv4向IPv6的过渡期中,有一种技术是在IPv4的地址上加上固定的前缀,使其成为长度为128的IPv6地址。Bind有一种功能把获取到的IPv4地址转成固定前缀的IPv6地址。以添加well-known前缀64:FF9B::/64为例。向/etc/named.conf的options段中添加如下一句即可:

options {
   ...    
     dns64 64:FF9B::/96 {};  
};
...

重启named服务,然后测试解析www.lhzhi.com和www2.lhzhi.com,看看有什么不同:

[root@localhost named]# host www.lhzhi.com
www.lhzhi.com has address 192.168.1.111
www.lhzhi.com has IPv6 address 1234:4321::100
[root@localhost named]# host www2.lhzhi.com
www2.lhzhi.com has address 254.254.254.254
www2.lhzhi.com has IPv6 address 64:ff9b::fefe:fefe

#这个IPv6地址就是DNS服务器通过IPv4地址计算来的
解释:因为www.lhzhi.com本来就配置了AAAA记录,所以,解析结果不变。但是www2.lhzhi.com原来只配置了一个IPv4的地址254.254.254.254,通过IPv4到IPv6的转换,再加上固定前缀就变成了64:ff9b::fefe:fefe(很显然,254转成16进制就是fe)。

五、转发DNSv6
有可能,你的网络和我的网络一样,只能访问IPv6的资源,不能和IPv4的DNS服务器通信。由于目前大多数域名服务器只有IPv4的地址,所以没法向他们查询!幸好,世界上有一部分IPv6已经和IPv4打通了,我们只需要把用户的解析请求发往这些连通了IPv4的IPv6网内的DNS服务器即可(好晕)!也就是说,把我们的DNSv6服务器配置成DNS转发服务器!向/etc/named.conf的options中添加两句,使其如下:

options {
   ...    
   forward only;
   forwarders { 2001:4860:4860::8888; } ;   #Google’s DNS
};
...

添加这两句话的意思是把所有的域名解析请求发往2001:4860:4860::8888这个地址,实际上,它是谷歌的DNSv6服务器,而且能和IPv4的DNS服务器通信,取得解析结果!
重启!此时,这台DNS服务器就能获取到DNSv4和DNSv6的域名服务器解析结果了,解析结果都是谷歌的DNSv6服务器返回的,哈哈!

在IPv6的运行初期,很多问题都是依靠过度办法解决的,真诚希望此文能够帮助到和我曾经一样迷茫的你!

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. 如何拿下简短的域名 (累计阅读 16,935)
  2. Linux如何统计进程的CPU利用率 (累计阅读 16,308)
  3. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  4. 我的 RHCA 之路 (累计阅读 14,013)
  5. Linux内存点滴 用户进程内存空间 (累计阅读 13,232)
  6. 自建DNS以防止GFW干扰 (累计阅读 13,125)
  7. 给程序员新手的一些建议 (累计阅读 13,090)
  8. Linux 性能监控、测试、优化工具 (累计阅读 13,013)
  9. 关于linux内存free的一些事情 (累计阅读 12,869)
  10. ps - 按进程消耗内存多少排序 (累计阅读 12,690)