一.DNS服务器概述
DNS是Domain Name System的缩写,即域名系统,DNS服务主要的功能是将域名转换为相应的IP地址,提供DNS服务的系统就是DNS服务器
1.域名级别
(1)顶级域名
顶级域名又分为国家顶级域名和国际顶级域名
国家顶级域名:如中国是cn,美国是us,日本是jp等
国际顶级域名:表示工商企业的 .com .top,表示网络提供商的.net,表示非盈利组织的.org,:
(2)二级域名
二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称,例如 ibm,yahoo,microsoft等;在国家顶级域名下,它是表示注册企业类别的符号,例如com,top,edu,gov,net等
(3)三级域名
三级域名用字母( A~Z,a~z,大小写等)、数字(0~9)和连接符(-)组成, 各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符
2. DNS服务器的类型
DNS服务器可以分为4种:主域名服务器、辅助域名服务器和缓存域名服务器、转发域名服务器
(1)主域名服务器本身提供DNS服务,并且本身含有区域数据文件。
(2)辅助域名服务器和主域名服务器一起提供DNS服务,当主域名服务器上的配置信息修改的时候,会自动更新到辅助域名服务器实现同步。
(3)缓存域名服务器没有自己的区域数据文件,只是帮助客户端向外部DNS请求查询,然后将查到的结果保存到它的缓存中
(4)转发域名服务器负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果
3. DNS域名查询方式
域名查询有两种常用的方式:递归查询和迭代查询。
(1)递归查询
递归查询由最初的域名服务器代替客户端进行域名查询。如该域名服务器不能直接回答,则会在域中的各分支的上下进行递归查询,最终将返回查询结果给客户端,在域名服务器查询期间,客户端将完全处于等待状态
(2)迭代查询
迭代查询则每次由客户端发起请求,如请求的域名服务器能提供需要查询的信息则返回主机地址信息。如不能提供,则引导客户端到其他域名服务器查询。 以上两种方式类似需要寻找东西的过程,一种是找个人替自己寻找,另外一种是自己完成,首先到一个地方寻找,如没有则向另外一个地方寻找
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS
8.8.8.8是google公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用
4. DNS名称解析方式
(1)正向解析:将FQDN转化为IP
(2)反向解析:将IP转化为FQDN
二.DNS服务配置
1. 安装bind软件
[root@RHEL ~]# yum -y install bind
2. named.conf配置文件详解
[root@RHEL ~]# vim /etc/named.conf
options { #全局服务的配置选项
listen-on port 53 { 127.0.0.1; }; #指定IPv4监听的端口和IP
listen-on-v6 port 53 { ::1; }; #指定IPv6监听的端口和IP
directory "/var/named"; #制定named从var/named目录下读取数据文件
dump-file "/var/named/data/cache_dump.db"; #当执行导出命令时将DNS服务器的缓存数据存储到指定的文件中
statistics-file "/var/named/data/named_stats.txt"; #指定named服务的统计文件
memstatistics-file "/var/named/data/named_mem_stats.txt";
#用来设置服务器输出的内存使用统计信息
allow-query { localhost; }; #用来设置允许DNS查询的客户端地址
recursion yes; #用来设置递归查询
dnssec-enable yes; #用来设置是否启用DNSSEC支持
dnssec-validation yes; #用来设置是否启用DNSSEC确认
bindkeys-file "/etc/named.iscdlv.key"; #用来设置内置信任的密钥文件
managed-keys-directory "/var/named/dynamic"; #用来设置内置信任的密钥文件
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging { #定义 bind 服务的调试日志消息
channel default_debug { #用来定义日志输出方式
file "data/named.run"; #file表示输出到纯文本文件
severity dynamic; #severity表示消息的严重性等级,有critical、error、warning、notice、info、debug [level]、dynamic多种级别可选
};
};
zone "." IN { #定义一个正向域区
type hint; #type类型有三种,它们分别是master、slave和hint
file "named.ca"; #用来指定存放 DNS 记录的数据文件名称
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
#包含其他配置文件
3. 区域中数据文件的设定
[root@RHEL ~]# vim /var/named/named.baidu.com
$TTL 1D
@ IN SOA @ admin.admin.com. (
2019012302
1M
1M
1M
3M )
@ IN NS ns.baidu.com.
IN MX 10 mail.baidu.com. #10为优先级
ns IN A 192.168.1.151
mail IN A 192.168.1.151
www IN A 192.168.1.151
ftp IN A 192.168.1.151
vsftpd IN CNAME ftp
第1行是一个TTL设定,定义区域中数据文件里面的各项记录的默认TTL值为86400秒,缺少此行不影响使用,但是会出现警告消息
第2行是一个SOA记录的设定。其中,“@”代表相应的域名, IN表示后面的数据使用的是Internet标准。SOA的全称是“Start Of Authority”,表示目前区域授权开始。每一个区域数据文件只能有一个SOA,不能重复,而且必须是所负责区域中的第一个“记录”。在SOA后面分别指定了这个区域的授权主机名称和管理者的信箱。特别注意,授权主机名和管理员信箱后面都要有一个“.”,而且授权主机名称必须能够在DNS设置中找到一个A记录。由于“@”在区域数据文件中有其他含义,因此管理员信箱邮件地址中用“.”代替“@”符号。
接下来包含在括弧中的5组数字是作为与从服务器同步信息而设置的,含义如下。
serial:表示配置文件的修改版本,格式是年、月、日加上修改的次数。每次修改这个配置文件时都应该修改这个数字。因为辅助DNS进行信息同步时,会比较这个数值,如果这个数值比自身的数值大,就进行更新,否则,忽略更新。注意,这个设置很重要,如果你在修改区域中数据文件后,没有更新该值,那么所做的更改就不会更新到网上的其他DNS服务器。
refresh:用来设定辅助DNS与主DNS进行同步的间隔时间。
retry:如果辅助DNS在进行更新失败后,要隔多久再进行重试。
expiry:设定辅助DNS在与主DNS同步失败后,多长时间后清除对应的记录。
minimum:这是默认的最小 TTL值,如果在前面没有指定 TTL值,就以这个为基准。
以上数字都以秒为单位,但也可以用H(小时)、D(天)、W(周)来做单位。
第8~14行是对域名解析的具体设置。第一列表示不同的主机域名,但是省略了后面的域信息。例如“www”其实是 www.baidu.com,“mail”是指 mail.baidu.com。其他设置具有相同的含义。“IN”后面指令的含义如下:
NS:用来定义这个主机是个域名服务器。
MX:定义一个邮件交换器。
A指针:定义一个A记录,即域名到IP的记录。
CNAME:定义域名的别名。
之后开启该服务:[root@RHEL ~]# systemctl start named
三.配置案例
1. 正向解析
[root@CentOS7 ~]# vim /etc/named.conf
[root@CentOS7 ~]# vim /var/named/named.baidu.com
用另一台linux客户端将DNS设置为本DNS服务器的IP
重启该服务
测试
2.反向解析
[root@CentOS7 ~]# vim /etc/named.conf
[root@CentOS7 ~]# vim /var/named/named.192.168.1
3.完全区域传送
[root@CentOS7 ~]# vim /etc/named.conf
[root@RedHat ~]# vim /etc/named.conf
重启服务会动态同步主服务其中的区域数据文件,这时在从服务器(slave)上可以看到
4.增量区域传送
[root@CentOS7 ~]# vim /var/named/named.baidu.com
重启服务
测试
通过tail -f /var/log/messages来查看从服务器的日志
5.批量解析
[root@CentOS7 ~]# vim /etc/named.conf
重启服务
测试