一、DNS简介
1、DNS
DNS是域名系统(Domain Name System)的简称,它是一个将域名和IP相互映射的分布式数据库。有了DNS服务器,我们只需要记录一个网站的域名即可访问,而再也不需要记忆那一串长长的IP地址了。在2014.1.21号,就由于国内的DNS域名解析系统遭攻击出现了大规模的故障而导致全国网络的访问故障,可想而知,DNS对于网络来说是至关重要的。
全球有386台根服务器,被编号为A到M共13个标号,编号相同的根服务器使用同一个IP,386台根服务器总共只使用13个IP,因此可以抵抗针对其所进行的分布式拒绝服务攻击(DDoS)。中国大陆在北京有两台编号为L的根服务器镜像,编号为F、I、J的各一,共5台镜像,所以刚才提到的那个故障应该就是国内的DNS根域镜像的故障。
2、分布式数据库
早期的网络比较单一,域名也比较少,所以hosts文件可以说是比较简单的数据库了,但到了后来网络的爆炸式发展,一个hosts文件、一台服务器、一组DNS集群都不能扛得住越来越多的主机请求,所以到后来出现了分布式数据库,把一个数据库切成n片,放到不同的主机上来解析客户端的请求,当需要解析不同的主机时,就到不同的服务器上去实现,以到达缓解根服务器巨大的压力。
3、域名的划分
根域:.
一级域:.com,.org,.mil,.gov,.edu,.net
国家域:.cn,.hk,.tw,.jp,.us,.uk,.ir,.iq
二级域:www.ibm.com中的ibm就是二级域名
主机名:上面的www是主机而不是域名
FQDN(Full Qualified Domain Name):安全合格域名,按照中国人的习惯是从大到小写,但老外习惯从小往大了写,就像写信一样,自底向上,所以一个FQDN应该是"www.ibm.com."。
4、DNS查询方式
1)递归查询(recursion)
客户端只发出一次请求,要求对方给出最终结果。如果客户端要查找的内容直接在服务器上得到结果,刚给出的答案是一个权威答案,否则就是一个参考答案。
2)迭代查询(iteration)
客户端发出一次请求,服务器替代客户端一次次的去请求以获得最终答案,所以迭代查询是服务器代为其查询,因此,客户端指向的DNS服务器,一定是允许给本地主机做递归的。
5、资源记录(Resource Record)
DNS数据库文件中的每一个条目叫做资源记录,它是一个纯文本文件,只能包含资源记录或宏定义。
资源记录的格式:
Name [ttl] IN RRtype Value
1)、SOA:
Start of Authority,起始授权
SOA必须是区域数据库文件的第一条记录
name:只能是区域名称,通常可以简写为@,如shuishui.com
value:主DNS的FQDN
例:@ 600 IN SOA ns.shuishui.com. dnsadmin.shuishui.com.(
serial number;序列号,不能超过10位,如:2014031801
refresh time;刷新时间,第每隔多久到主服务器检查一次
retry time;重试时间,如果刷新失败,多久重试
expire time;过期时间
negative answer ttl;否定答案的ttl )
上面的那个dns.admin.shuishui.com.是管理员邮箱,第一个点代表的是@,但这里@是一个宏,所以就用.代替了。
注意:SOA后面ns.shuishui.com.中最后面那个.一定不能省略,如果省略,系统会默认给补上你的区域名称。
2)、NS
Name Server,域名服务器
name:区域名称,通常可以简写为@
value:DNS服务器的FQDN(可以使用相对名称)
3)、A
Address,IP地址,负责FQDN——>IP的解析
name:FQDN(可以使用相对名称)
value:IP
4)、AAAA
IPv6地址
5)、MX
Mail eXchanger:邮件交换器,可以有多个,那就需要做优先级
name:区域名称,用于标识smtp服务器
value:包含优先级和FQDN,优先级的范围:0-99,数字越小,级别越高
6)、CNAME
Canonical Name,别名记录
name:FQDN
value:FQDN
注意:但凡value上是FQDN,那么这个FQDN都需要有一个A记录,否则不能解析,PTR除外
7)、PTR
负责IP——>FQDN的解析,只能定义在反向区域数据文件中,反向区域名称为逆向网络地址加.in-addr.arpa.后缀组成
name:IP,逆向的主机地址,如:93.251.16.172.in-addr.arpa.
value:FQDN,这里的FQDN不需要有A记录,反向区域中不能出现A记录和MX
二、DNS的安装
DNS是同时监听TCP与UDP协议的53号端口的,它的协议是DNS,软件名称是BIND(当然也有其它的)、进程名是named,这里就详细介绍以BIND方式安装DNS服务
1、安装bind,最好提前装好yum源,省得解决依赖关系。
1
|
[root@nmshuishui ~]
# yum -y install bind
|
2、启动服务,检查是否已经监听53号端口
启动服务成功,默认监听tcp与udp的53号端口
3、配置DNS
1)修改主配置文件
现在DNS虽然已经启动成功,但还不能提供正常的解析服务,因为还没有创建区域数据库文件。
主配置文件:定义区域,在/etc/named.conf
区域数据文件:区域数据文件其实就是区域文件数据库,里面定义资源记录,它是一个纯文本文件,只能包含资源记录或宏定义。
修改完主配置文件后,再重启下named,这时它就会监听服务器的22号端口了。
2)创建正向区域
DNS服务器有四种类型:主DNS服务器,从DNS服务器,缓存名称服务器,转发服务器
因为这里新建的是第一台DNS服务器,所以DNS服务器类型为主DNS服务器,使用file指定数据文件,以;号结尾。
在/var/named/下创建正向区域文件数据库,命令为shuishui.com.zone,并填写资源记录
1
2
3
|
[root@nmshuishui named]
# pwd
/var/named
[root@nmshuishui named]
# vim shuishui.com.zone
|
修改配置文件及区域后需要执行的6个步骤
测试正向区域解析
使用dig进行测试,-t选项指定类型,@指定使用哪台主机去解释,如果不使用@的话,默认会使用/etc/resolv.conf 下指定的DNS服务器进行解析。
3)创建反向区域
直接定义在shuishui.com这个区域下就可以了,当然也是主服务器类型,使用file指定区域数据文件,要以;号结尾。
1
|
vim
/etc/named
.rfc1912.zones
|
在/var/named/下创建反向区域文件数据库,命令为172.16.251.zone,并填写资源记录
修改配置文件及区域后需要执行的6个步骤
测试反向区域解析
使用dig进行测试,-t选项指定类型,@指定使用哪台主机去解释,如果不使用@的话,默认会使用/etc/resolv.conf 下指定的DNS服务器进行解析。
三、DNS主从同步
1、向区域中添加从服务器的关键两步:
1)、在上级获得授权
2)、在区域数据文件中为从服务器添加一条NS记录和对应的A或PTR记录。
2、向从区域中添加区域,但不需要自己创建数据文件,因为要从主DNS服务器上做区域传送,为了安全,要放在/var/named/slaves目录下,这也是系统专门为从服务器准备的存放区域数据文件的路径。
3、查看同步过来的正向区域数据文件,很直观,很明了
4、在从服务器上解析下试试
从服务器解析成功,DNS主从同步OK!