DNS概述
DNS 是Domain Name System)的缩写,是一种层次结构的计算机IP和网络服务命名系统。它的作用是:把域名转换成为网络可以识别的 IP 地址,并告诉给客户端。
DNS查询过程
DNS的查询过程是指客户端是通过访问DNS服务器将一个IP地址转换为一个域名、或域名转换为一个IP地址的过程。
1.按查询方式分类为:
a.递归查询:当DNS服务器接收到查询请求时,要么做出查询成功响应,要么做出查询失败的响应。递归查询一般发生在DNS客户端与DNS服务器之间。
b.迭代查询:DNS服务器根据自己的高速缓存或区域的数据,以最佳结果响应。如果DNS服务器无法解析,它可能返回一个指针,指针指向有下级域名的DNS服务器,继续该过程,直到找到拥有所查询名字的DNS服务器,或直到出错、超时为止。迭代查询一般发生在DNS服务器之间。
2.按查询内容分为:
a.正向查询;域名--》IP
b.反向查询:IP----》域名
DNS在Linux下的安装(以CentOS7为例)
DNS服务的安装
安装DNS服务器
yum install bind bind-chroot bind-utils
安装DNS缓存服务
yum install caching-nameserver
配置DNS服务器
a. 修改主配置文件/etc/named.conf
b. 修改配置文件/etc/named.rfc1912.zones增加新域定义
type类型有三种,它们分别是master,slave和hint,它们的含义分别是:
Master:表示定义的是主域名服务器。
slave:表示定义的是辅助域名服务器。
hint:表示是互联网中根域名服务器。
file用来指定存放DNS记录的文件
allow-update定义是否允许客户主机或服务器自行更新DNS记录,上面指定的这个正向区域不允许更新DNS记录
c.增加正向域名解析配置文件/var/named/named.docker
$TTL
1D
@
IN
SOA
ns.docker.freebody.com. root.docker.freebody.com.(
0
; serial
1D
; refresh
1H
; retry
1W
; expire
3H )
; minimum
NS
@
A
192.168.81.131
正向解析数据文件内容说明:
第一行是一个TTL设定,定义区域数据文件里面的各项记录的默认TTL值为86400 秒,缺少此行不影响使用,但是会出现警告信息。
第二行﹐是一个SOA记录的设定,“@”代表相应的域名,也就是在named.conf中设定的zone,IN表示后面的数据使用的是INTERNET标准。SOA,全称是“Start Of Authority”的意思,表示目前区域授权开始。每一个区域数据文件只能有一个SOA,不能重复,而且必须是所负责的zone中第一个“记录”。在SOA后面分别指定了这个区域的授权主机名称和管理者的信箱,特别注意,授权主机名和管理员信箱后面都要有一个“.”,而且授权主机名称必须能够在DNS设置中找到一个A记录(下面会讲到),由于“@”在区域数据文件中有其它含义,因此管理员信箱邮件地址中用“.”代替“@”符号。
接下来包含在括弧中的5组数字是作为与slave服务器同步信息而设置的,含义如下:
Serial:表示配置文件的修改版本,格式是年月日加上修改的次数,每次修改这个配置文件时都应该修改这个数字,因为slave DNS进行信息同步时,会比较这个数值,如果这个数值比自身的数值大,那么就进行更新,否则忽略更新。注意,这个设置很重要,如果你在修改区域数据文件后,没有更新该值,那么所作的更改就不会更新到网上的其它DNS服务器。
refresh:用来设定slave DNS与Master DNS进行同步的间隔时间。
retry:如果slave DNS在进行更新失败后,要隔多久再进行重试。
expiry:设定slave DNS在与Master DNS同步失败后,多长时间清除对应的记录。
Minimum:这是默认的最小TTL值,如果在前面没有指定TTL值,就以这个为基准。
以上的数字都是以秒为单位,但也可以用 H(小时)、D(天)、W(星期)来做单位。
A指针:定义了一个A记录,即域名到IP的记录。
d.增加反向域名解析配置文件/var/named/named.docker.loopback
$TTL 1D
@ IN SOA ns.docker.freebody.com. root.docker.freebody.com.(
0 ; serial
1D ; refres
1H ; retry
1W ; expire
3H ) ; minimum
NS @
PTR ns.docker.freebody.com
A 192.168.81.131
可以看出,基本结构与正向区域数据文件完全相同,只不过这里多出了一个PTR选项。PTR用来定义一个反向记录,也就是通过IP可以查到对应的域名信息检查配置文件
可能使用named-checkconf命令检查配置文件的正确性,使用方法如下:
named-checkconf/etc/named.conf修改防火墙
修改linux防火墙配置文件/etc/sysconfig/iptables增加以下配置期项,放通DNS服务的端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT
service iptables restart #重启防火墙,使规则生效启动DNS server服务
systemctl start named.service