CentOS6.7 DNS配置
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数字串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53,服务器之间备份使用TCP。
1、DNS的一些基本概念:
1)、根域 .
根域“.”(点),我们的网站www.qq.com,其实完整的写法是www.qq.com.(最后有一个点),我们都习惯了省略输入,这就是根域。全世界只有13台“根“服务器,1个主根服务器,其他的12台是辅助根服务器,DNS服务器根据使用的角色有:主DNS、从DNS、缓存DNS、DNS转发服务器。
2)、域名的划分
根域下面就是顶级域或者叫一级域:
有两种划分方式,一种互联网刚兴起时的按照行业性质划分的com.,net.等,一种是按国家划分的如cn.,jp.,等。
每个域都会有域名服务器,也叫权威域名服务器。
51cto.com就是一个顶级域名,而www.51cto.com却不是顶级域名,他是在51cto.com这个域里的叫做www的主机。
一级域之后还有二级域,三级域,只要我买了一个顶级域,并且我搭建了自己BIND服务器(或者其他软件搭建的)注册到互联网中,那么我就可以随意在前面多加几个域了(当然长度是有限制的)。
比如a.www.51cto.com,在这个网址中,www.51cto.com变成了一个二级域而不是一台主机,主机名是a。
3)、域名服务器
能提供域名解析的服务器,记录类型可以是A(address)记录,NS记录(name server),MX(mail),CNAME等。
A记录 又称IP指向,用户可以在此设置子域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器。
4)、域名解析过程
(1)、现在我有一台计算机,通过ISP接入了互联网,访问www.51cto.com,首先操作系统会检查本地的hosts文件是否有这个网址的映射关系,如果有,就先调用这个IP地址,完成域名解析。
(2)、如果host文件里面没有这个域名映射,则使用本地的ISPDNS(ISP提供的)解析服务器,如果有这个网址的映射,就会返回,完成域名解析。
(3)、如果缓存中没有的话,ISPDNS会从配置文件里面读取13个根域名服务器的地址(这些地址是不变的,直接在BIND的配置文件中),
(4)、然后像其中一台发起请求。
(5)、根服务器拿到这个请求后,知道他是com.这个顶级域名下的,所以就会返回com域中的NS记录,一般来说是13台主机名和IP。
(6)、然后ISPDNS向其中一台再次发起请求,com域的服务器发现你这请求是51cto.com这个域的,com域的服务器一查发现了这个域的NS,那就返回给51cto.com 的ip,你再去查。
(7)、ISPDNS不厌其烦的再次向51cto.com这个域的权威服务器发起请求,51cto.com收到之后,查了下有www的这台主机,就把这个IP返回给你了.
(8)、然后ISPDNS拿到了之后,将其返回给了客户端,并且把这个保存在高速缓存中。
2、DNS的安装和配置
在Linux下的DNS服务器的软件是bind。直接使用yum安装即可。安装后,DNS的服务名称叫named,配置文件存放在/etc/named.conf.
yum install bind* #安装dns软件bind
/etc/init.d/named start #启动 DNS 服务
/etc/init.d/named stop #关闭 DNS 服务
/etc/init.d/namedre start #重新启动 DNS 服务
/var/named/chroot/etc/named.conf #全局配置文件,
vim /var/named/chroot/etc/named.conf #全局配置文件内容
1 //
2 // named.conf
3 //
4 // Provided by Red Hat bind package to configure the ISC BIND named(8)DNS
5 // server as a caching only nameserver (as a localhost DNS resolveronly).
6 //
7 // See /usr/share/doc/bind*/sample/ for example named configurationfiles.
8 //
9
10 options {
11 listen-on port 53 {127.0.0.1; }; #监听的端口的ip(ip可多个,any表示所有)
12 listen-on-v6 port 53 {::1; } #ipv6的形式
13 directory "/var/named"; #DNS各域名数据文件默认存放位置
14 dump-file "/var/named/data/cache_dump.db";
15 statistics-file"/var/named/data/named_stats.txt";
16 memstatistics-file"/var/named/data/named_mem_stats.txt";
17 allow-query { localhost; }; #允许dns查询的客户机列表any表示所有
18 recursion yes; #是否允许客户机进行递归查询
19
20 dnssec-enable yes;
21 dnssec-validation yes;
22 dnssec-lookaside auto;
23
24 /* Path to ISC DLV key*/
25 bindkeys-file"/etc/named.iscdlv.key";
26
27 managed-keys-directory"/var/named/dynamic";
28 };
29
30 logging { #日志
31 channel default_debug {
32 file"data/named.run";
33 severity dynamic;
34 };
35 };
36
37 zone "." IN { #根域
38 type hint; #区域类型。hint为根区域;master为主区域; slave为辅助区
39 file"named.ca"; #对应/var/named/chroot/var/named目录下的配置文件
40 };
41
42 include "/etc/named.rfc1912.zones";
43 include "/etc/named.root.key";
配置一个正向解析和反向解析:域名为balichvm,ip地址为192.168.171.51,步骤:
1)、首先在全局配置文件/var/named/chroot/etc/named.conf增加正向解析的区域,增加内容如下:
#balichvm.org正向解析
zone "balichvm.org" IN {
type master;
file "balichvm.org.zone";
};
#balichvm.org反向解析
zone "171.168.192.in-addr.arpa"IN {
type master;
file "192.168.171.zone";
};
保存配置文件,然后在/var/named/chroot/var/named/目录下下新建balichvm.org.zone的正向解析文件和192.168.171.zone反向解析文件。
vim /var/named/chroot/etc/balichvm.org.zone #编辑正向解析文件
$TTL 86400 #定义生存周期
@ IN SOA @ root.balichvm.org. (
2015111001 ;serial #序列号
1D ;refresh #服务器更新时间
1H ;retry #重新更新时间
1W ;expire #失效时间
3H) ;minmun #缓存时间
@ IN NS dns.balichvm.org. #域名解析记录
@ IN MX 10 mail.balichvm.org. #邮件交换
dns IN A 192.168.171.51 #主机记录
mail IN A 192.168.171.48
www IN A 192.168.171.49
bbs IN CNAME www #别名记录
保存配置文件后,使用named-checkzone命令检查语法是否错误如下:
named-checkzone "balichvm.org"/var/named/chroot/var/named/balichvm.org.zone
zone balichvm.org/IN: loaded serial2015111001
OK
vim /var/named/chroot/etc/192.168.171.zone #编辑反向解析文件
$TTL 86400
@ IN SOA @ root.balichvm.org. (
2015111001 ;serial
1D ;refresh
1H ;retry
1W ;expire
3H) ;minmun
@ IN NS dns.balichvm.org.
51 IN PTR dns.balichvm.org. #反向解析
49 IN PTR www.balichvm.org.
48 IN PTR mail.balichvm.org.
~
保存配置文件后,使用named-checkzone命令检查语法是否错误如下:
named-checkzone "171.168.192.in-addr.arpa"/var/named/chroot/var/named/192.168.171.zone
zone 171.168.192.in-addr.arpa/IN: loadedserial 2015111001
OK
重启dns服务,然后使用dig命令测试。
/etc/init.d/named restart #重启dns服务
测试:
测试过程中,如果有开启防火墙,需要对dns的端口(tcp:53,953;udp:53)放行如下:
-A INPUT -m state --state NEW -m tcp -p tcp--dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp--dport 953 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp--dport 53 -j ACCEPT
保存,退出。然后重启防火墙:/etc/rc.d/init.d/iptables restart
使用dig @dns服务器域名 来找到对应的ip地址,如本机测试:dig@127.0.0.1 www.balichvm.org
使用dig @ dns服务器–x ip 来找到对应的域名,如本机测试:dig @127.0.0.1 -x192.168.171.49
3、DNS的转发
有些域名本地的DNS无法解析,可以把请求转发到上一级的DNS服务器解析,具体的配置是在全局配置文件/var/named/chroot/etc/named.conf 上的 options{} 增加。如下:
forward first;
forwarders {8.8.8.8;};
保存,重启DNS服务。
4、DNS主从配置
首先在防火墙上开放dns的端口(TCP:53,953 udp:53):
-A INPUT -m state --state NEW -m tcp -p tcp--dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp--dport 953 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp--dport 53 -j ACCEPT
首先在从服务器上安装bind软件:
yum install bind* #在从服务器上安装dns软件
安装DNS软件之后,把主DNS上的配置文件(/var/named/chroot/etc/named.conf)拷贝到从DNS的服务器上。
然后编辑:/var/named/chroot/etc/named.conf 修改如下:
###balichvm.org正向解析
zone "balichvm.org" IN {
type slave; #服务器类型为 slave
file "slaves/balichvm.org.zone";
masters { 192.168.171.50; }; #指定master的ip地址
};
##balichvm.org反向解析
zone "171.168.192.in-addr.arpa"IN {
type slave;
file "slaves/192.168.171.zone";
masters { 192.168.171.50; };
};
保存配置文件,然后启动dns服务。在/var/named/chroot/var/named/slaves 目录下生成和主DNS上一样的配置文件。
测试:
使用dig @dns服务器域名 来找到对应的ip地址,如本机测试:dig@127.0.0.1 www.balichvm.org
使用dig @ dns服务器–x ip 来找到对应的域名,如本机测试:dig @127.0.0.1 -x192.168.171.49
测试同步:
在主DNS服务上
/var/named/chroot/var/named/balichvm.org.zone
blog IN A 192.168.171.47 #增加记录
同时修改序列号:只能变大,不能变小:2015111001 ——> 2015111002
重启DNS服务器:/etc/init.d/named restart
然后在到从dns上测试是否同步。
本文转自 巴利奇 51CTO博客,原文链接:http://blog.51cto.com/balich/1711983