一、DNS系统的作用及类型
在整个以太网中连接了数以亿计的服务器、个人主机,其中大部分的网站,邮箱都使用了域名形式的地址。也就是使用名字就可以直接访问网站,而不需要使用IP地址去访问网站,即方便人们记忆,表现形式也更加直观。DNS系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以方便为客户提供正向或反向的地址查询服务,即正向解析和反向解析。
正向解析:根据域名查询IP地址,就是将指定的域名解析为相对应的IP地址。域名的正向解析是DNS服务器最基本的功能,也是最常用的功能。
反向解析:与正向解析相反,就是用IP地址去查询域名。域名的反向解析不常用,只有在特殊场合才会使用,比如反垃圾邮件的验证
根据所管理的区域地址数据的来源不同,DNS系统可分为不同的类型/在同一天DNS服务器中相对于不同的区域来说,也有不同的身份。常见的类型如下:
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率, 但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定 其他 DNS 服务器作为解析来源。
主域名服务器:维护某一个特定 DNS 区域的地址数据库,对其中的解析记录具有 自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务 器时,需要自行建立所负责区域的地址数据文件。
从域名服务器:与主域名服务器提供完全相同的 DNS 解析服务,通常用于 DNS 服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询的结果都是一样的。关键区别在于,从域名服务器提供的解析结果不是由自己决定 的,而是来自于主域名服器。构建从域名服务器时,需要指定主域名服务器的位 置,以便服务器能自动同步区域的地址数据库。
二、BIND的安装和控制
BIND不是唯一能够提供域名服务的DNS服务程序,但他确是应用最为广泛的,BIND可以运行在大多数Linux和UNIX主机中。
1.安装BIND软件
在CentOS系统中,系统光盘自带了BIND服务的安装文件主要包括以下几个安装包:
bind-9.9.4-37.el7.x86_64.rpm。
bind-utils-9.9.4-37.el7.x86_64.rpm。
bind-libs-9.9.4-37.el7.x86_64.rpm。
bind-chroot-9.9.4-37.el7.x86_64.rpm。
此命令就是查询所有已安装的bind程序
2.BIND服务的配置文件
主配置文件 named.conf 通常位于/etc/目录下,在 named.conf 文件中,主要包括全局
配置、区域配置两个部分,每一条配置记录的行尾以分号“;”表示结束,以“#”号或“//”开始的
部分表示注释文字(大段注释可以使用“/* …… */”的格式)。
(1)全局配置文件与区域配置文件
vim /etc/named.conf ###进入编辑器编辑配置文件
全局配置文件信息
options {
listen-on-v6 poet 53 { 192.168.161.136 ; }; #监听53端口,IP地址使用提供服务的本地IP,也可用any代表所有
# listen-on-v6 port 53 { : :1; }; #ipv6行如不使用可以注释掉或者删除
directory "/var/named"; #区域数据文件的默认存放位 置
dump- file "/var/ named/data/cache_ dump . db"; #域名缓存数据库文件的位置
statistics-file "/var/named/data/named stats.txt"; #状态统计文件的位置
memstatistics-file "/var/named/data/named_ mem_ stats. txt"; #内存统计文件的位置
allow-query
{ any; }; #允许使用本DNS解析服务的网段,也可用any代表所有
区域配置文件信息
zone "." IN { #正向解析“. "根区域
type hint; #类型为根区域
file "named.ca"; #区域数据文件为named.ca,记录了13台根域服务器的域名和IP地址等信息
};
在上述配置内容中,有几个地方需要注意:
每个 zone 区域都是可选的(包括根域、回环域、反向域),具体根据实际需要而 定,zone 配置部分的“IN”关键字也可以省略。
反向区域的名称由倒序的网络地址和“.in-addr.arpa”组合而成。例如,对于
192.168.1.0/24 网段,其反向区域名称表示为“1.168.192.in-addr.arpa”
file 配置项用于指定实际的区域数据文件,文件名称由管理员自行设置。
区域配置中的部分参数(如 allow-transfer)也可以放在全局配置中。 修改完主配置文件以后,可以执行“named-checkconf”命令对 named.conf 文件进行语 法检查。如果文件中没有语法错误命令将不给出任何提示;反之,则会给出相应的提 示信息,然后根据出错提示修正文件中的错误可。带“-z”选项的“named-checkconf”命令 还可以尝试加载主配置文件中对应的区域数据库文件,并检查该文件是否存在问题。例如,当出现“…file not found”的错误时,表示找不到对应的文件。
(2)区域数据配置文件
区域数据配置文件通常位于/var/named/目录下,每个区域数据文件对应一个 DNS 解析 区域,文件名及内容由该域的管理员自行设置。
根域“.”的区域数据文件比较特殊。Internet 中所有的 DNS 服务器都使用同一份根区域 数据文件,其中列出了所有根服务器的域名和 IP 地址。根区域数据文件可以从国际互联网 络信息中心(InterNIC)的官方网站地址 http://www.internic.net/下载。
在区域数据文件中,主要包括 TTL(Time To Live,生存时间)配置项、SOA(Start OFAuthority,授权信息开始)记录、地址解析记录。文件中的注释信息以“;”(分号)开始。
$TTL 1D #设置缓存解析结果的有效时间
@ IN SOA liang.com. admin.liang.com. ( //SOA 标记、域名、管理邮箱
0; serial . //更新序列号,可以是 10 位以内的整数
1D; refresh //刷新时间,重新下载地址数据的间隔
1H; retry //重试延时,下载失败后的重试间隔
1W; expire //失效时间,超过该时间仍无法下载则放弃
3H ) ; minimum //无效解析记录的生存周期
地址解析记录部分
@ NS ns1.bdqn.com. #记录当前区域的DNS服务器的名称
A 192.168.161.136 #记录主机IP地址
IN MX 10 mail.bdqn.com. #MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.161.136 #记录正向解析www.liang.com对应的IP
mail IN A 192.168.161.100
ftp IN CNAME www #CNAME使用别名,ftp是www的别名
* IN A 192.168.161.200 #泛域名解析,“*"代表任意主机名
三、使用BIND构建域名服务器
1.构建缓存域名服务器
(1)建立主配置文件 named.conf
[root@localhost ~]# vim /etc/named.conf
修改红色部分的,区域部分默认即可
options {
listen-on port 53 { 192.168.10.101; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
}
zone "." IN {
type hint;
file "named.ca";
};
备注:
也可以不指向根服务器,去掉“zone '.' IN {……};”的设置,在option中添加如下内容
[root@localhost ~]# vi /etc/named.conf
options {
…… //省略部分内容
forwarders { 114.114.114.114; 8.8.8.8; };
};
(2)确认根域的区域数据文件 named.ca
[root@localhost ~]# cat /var/named/named.ca
a.root-servers.net. 518400 IN A 198.41.0.4
##VeriSign, Inc.VeriSign公司(美国,弗吉尼亚州)
b.root-servers.net. 518400 IN A 199.9.14.201
##美国加州,玛丽那德尔湾
c.root-servers.net. 518400 IN A 192.33.4.12
##Cogent Communications(美国,弗吉尼亚州)
d.root-servers.net. 518400 IN A 199.7.91.13
##美国 马里兰州立大学公园
e.root-servers.net. 518400 IN A 192.203.230.10
##NASA Ames Research Center美国航空航天管理局(美国加利福尼亚州)
f.root-servers.net. 518400 IN A 192.5.5.241
##Internet Systems Consortium, Inc.因特网软件联盟(美国加利福尼亚州)
g.root-servers.net. 518400 IN A 192.112.36.4
##U.S. DOD Network Information Center美国国防部网络信息中心(美国弗吉尼亚州)
h.root-servers.net. 518400 IN A 198.97.190.53
##美国 马里兰州 阿帕丁
i.root-servers.net. 518400 IN A 192.36.148.17
##Autonomica公司(瑞典,斯德哥尔摩)
j.root-servers.net. 518400 IN A 192.58.128.30
##VeriSign公司(美国,弗吉尼亚州)
k.root-servers.net. 518400 IN A 193.0.14.129
##RIPE NCC(英国,伦敦)
l.root-servers.net. 518400 IN A 199.7.83.42
##ICANN(美国政府授权的互联网域名与号码分配机构)
m.root-servers.net. 518400 IN A 202.12.27.33
##WIDE Project(日本,东京)
由于我们国家互联网起步比较晚,因此13个DNS根服务器没有一个在中国,我们国家虽然错过了ipv4的13个根服务器,但ipv6根DNS服务器中,中国拥有4台服务器,其中,一台为主根,其他三台为辅根。
(3)启动 named 服务
[root@localhost ~]# systemctl start named
[root@localhost ~]# netstat -anptu | grep named
备注:
IPv4的DNS使用TCP53端口和UDP53端口
IPv4的DNS使用TCP953端口和UDP953端口
TCP是用来做区域传送
TDP是用来做DNS解析的
(4)验证缓存域名服务器
在局域网内的客户机中,将首选 DNS 服务器的地址设为 192.168.10.101,生效后,执行“nslookup qq.com”命令对其进行解析,验证其是否能够获得该域名对应的 IP 地址信息。
[root@client ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
将dns服务地址改为192.168.10.101
[root@client ~]# yum -y install bind-utils
[root@client ~]# nslookup qq.com
构建完成便会发现先客户机用的DNS服务来自于自己设置好的机器。
2:构建主域名服务器
(1)确认本机的网络地址、主机映射、默认 DNS 服务器地址
将主从服务器的IP地址和主机名直接写入到hosts文件,这样可以加快两个服务器之间的域名解析速度
DNS1的配置
[root@ns1 ~]# vim /etc/hosts
192.168.10.101 ns1.bdqn.com ns1
192.168.10.102 ns2.bdqn.com ns2
(2)建立主配置文件 named.conf
[root@ns1 ~]# vim /etc/named.conf
zone "bdqn.com" IN {
type master;
file "bdqn.com.zone";
allow-transfer { 192.168.10.102; };
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
allow-transfer { 192.168.10.102; };
};
备注:
将文件中原来的zone选项删掉。
(3)建立正向区域数据文件
[root@ns1 ~]# cd /var/named
[root@ns1 named]# vim bdqn.com.zone
$TTL 86400
@ SOA bdqn.com. admin.bdqn.com. (
2011030301
4H
30M
12H
1D
)
@ IN NS ns1.bdqn.com.
IN NS ns2.bdqn.com.
IN MX 10 mail.bdqn.com.
ns1 IN A 192.168.10.101
ns2 IN A 192.168.10.102
ftp IN A 192.168.10.104
mail IN A 192.168.10.105
www IN A 192.168.10.106
* IN A 192.168.10.106
(4)建立反向区域数据文件
[root@ns1 named]# vim 192.168.10.arpa
$TTL 86400
@ SOA bdqn.com. admin.bdqn.com. (
2011030301
4H
30M
12H
1D
)
IN NS ns1.bdqn.com.
IN NS ns2.bdqn.com.
106 IN PTR www.bdqn.com.
105 IN PTR mail.bdqn.com.
104 IN PTR ftp.bdqn.com
101 IN PTR ns1.bdqn.com.
102 IN PTR ns2.bdqn.com.
(5)为区域文件设置属主与属组
[root@ns1 named]# chown :named bdqn.com.zone
[root@ns1 named]# chown :named 192.168.10.arpa
(6)检测配置文件和区域文件
[root@ns1 named]# named-checkconf /etc/named.conf
[root@ns1 named]# named-checkzone bdqn.com /var/named/bdqn.com.zone
zone bdqn.com/IN: loaded serial 2011030301
OK
[root@ns1 named]# named-checkzone 10.168.192.in-addr.arpa /var/named/192.168.10.arpa
zone 10.168.192.in-addr.arpa/IN: loaded serial 2011030301
OK
注意:在检测区域文件的时候,要分别使用正向区域名对正向区域文件检测,使用反向区域名对反向区域文件进行检测。不能都用正向区域名。
(6)重启动或重载服务
[root@ns1 named]# systemctl restart named
(7)客户端验证主域名服务器
[root@client ~]# nslookup www.bdqn.com
Server: 192.168.10.101
Address: 192.168.10.101#53
Name: www.bdqn.com
Address: 192.168.10.106
泛域名解析的测试:
[root@client ~]# nslookup 123.bdqn.com
Server: 192.168.10.101
Address: 192.168.10.101#53
Name: 123.bdqn.com
Address: 192.168.10.106
3:构建从域名服务器
(1)确认本机的网络地址、主机映射、默认 DNS 服务器地址
DNS2的配置
[root@ns2 ~]# vim /etc/hosts
192.168.10.101 ns1.bdqn.com ns1
192.168.10.102 ns2.bdqn.com ns2
(2)安装bind服务
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
[root@localhost ~]# yum -y install bind bind-utils bind-libs bind-chroot
(2)修改主配置文件
[root@ns2 ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.10.102; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
zone "bdqn.com" IN {
type slave;
masters { 192.168.10.101; };
file "slaves/bdqn.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
masters {192.168.10.101; };
file "slaves/192.168.10.arpa";
};
(3)启动 named 服务,查看区域数据文件是否下载成功
[root@ns2 ~]# systemctl start named
[root@ns2 ~]# ll /var/named/slaves/
总用量 8
-rw-r--r--. 1 named named 544 7月 3 10:00 192.168.10.arpa
-rw-r--r--. 1 named named 488 7月 3 09:58 bdqn.com.zone
(4)验证从域名服务器
将客户端的DNS服务器修改为192.168.10.102
[root@localhost ~]# nslookup www.bdqn.com
Server: 192.168.10.102
Address: 192.168.10.102#53
Name: www.bdqn.com
Address: 192.168.10.106