DNSv6和DNS64简单配置
上次说了下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。如下图
为了测试方便,还有一些准备工作:
- 设置系统的DNS服务器地址,
- 关闭iptables和ip6tables防火墙,
- 设置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的运行初期,很多问题都是依靠过度办法解决的,真诚希望此文能够帮助到和我曾经一样迷茫的你!
当前暂无评论 »