Linux中的DNS--域名解析服务
一、DNS简介
1.1、概述
DNS(Domain Name Systern) 域名系统,应用层协议,是互联网的一项服务,是将域名转换成网络可以识别的IP地址,再通过IP地址访问主机。这种由文字组成的名称,显而易见更容易记忆
它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构服务器端:53/udp, 53/tcp。实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为zone(区域〉。根据地址解析的方向不同,DNS区域相应地分为正向区域(包含域名到IP地址的解析记录)和反向区域(包含IP地址到域名的解析记录)。
1.2、DNS服务工作原理
- 先查本机的缓存记录,查询etc/hosts文件,文件中如果存在域名与IP的记录直接调用,没有就利用DNS服务器
- 客户端请求DNS域名服务器解析域名,交给DNS域名服务器处理此过程成为递归查询
- 这个DNS服务器可能是本地域名服务器,查询自己的缓存记录,如果有直接返回结果,如果没有则进行下一步
- 本地域名服务器求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域(一级域)服务器
- 求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
- 求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
- 本地域名服务器将结果记录到缓存,然后把域名和IP的对应关系返回给客户端,客户机根据返回的IP地址进行访问
1.3、DNS中的查询方式
递归查询:客户端和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向其他的DNS服务器发出查询请求,得到最终肯定或否定的结果转交给客户机。但是客户机不会自己再继续向域名服务器寻找,客户机属于等待状态。
迭代查询:一般情况下本地DNS服务器向其它DNS服务器的查询属于迭代查询,若这个DNS服务器不能返回查询的IP地址,则这个DNS服务器会向下一个DNS服务器再次发起请求进行查询,直到返回查询的结果为止
二、搭建DNS服务
2.1、正反向解析DNS
安装软件包bind和测试包bind-untils
[root@localhost ~]# yum install bind bind-untils -y
查看软件包配置
rpm -qc bind #查询bind软件配置文件所在路径
/etc/named.conf #主配置文件
/etc/named/rfc1912.zonrs #区域配置文件
/var/named/named.localhost #区域数据配置文件p
配置主配置文件
[root@localhost ~]# vim /etc/named.conf
listen-on port 53 { any; }; # 监听53端口,IP地址使用提供服务的本地IP,也可用any代表所有
allow-query { any; }; # 允许所有网段通过
#zone "." IN { #将根注释掉
# type hint;
# file "named.ca";
#};
配置区域配置文件
1 [root@localhost ~]# vim /etc/named.rfc1912.zones
2
3 zone "zyl.com" IN { # 正向解解析域名
4 type master;
5 file "zheng.zyl.com"; #正向解析区域文件
6 allow-update { none; };
7 };
8
9 zone "139.168.192.in-addr.arpa" IN { #配置反向地址
10 type master;
11 file "fan.zyl.com"; #配置反向区域文件
12 };
13 zone "." IN { #配置根
14 type hint;
15 file "named.ca";
16 };
配置区域数据配置文件
1 [root@localhost named]# cd /var/named #切到这个目录
2
3 [root@localhost named]# cp -p named.localhost zheng.zyl.com 复制到数据配置文件
4
5 [root@localhost named]# vim zheng.zyl.com #编辑正向配置文件
6
7 $TTL 1D #设置缓存解析结果的有效时间
8 @ IN SOA zyl.com. admin.zyl.com. (
9 0 ; serial
10 1D ; refresh
11 1H ; retry
12 1W ; expire
13 3H ) ; minimum
14 NS zyl.com. #记录当前区域的DNS服务器的名称
15 A 192.168.139.100 记录主机IP地址
16 smtp IN A 192.168.139.100
17 www IN A 192.168.139.102
18
19
20
21 [root@localhost named]# cp -p zheng.zyl.com fan.zyl.com 复制到数据配置文件
22
23 [root@localhost named]# vim fan.zyl.com #编辑反向配置文件
24 $TTL 1D
25 @ IN SOA zyl.com. admin.zyl.com. (
26 0 ; serial
27 1D ; refresh
28 1H ; retry
29 1W ; expire
30 3H ) ; minimum
31 NS zyl.com.
32 A 192.168.139.100
33 101 IN PTR smtp.zyl.com
34 100 IN PTR www.zyl.com
35
重启服务和修改dns
[root@localhost named]# systemctl restart named #重启服务
[root@localhost named]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改网卡配置
DNS1=192.168.139.100 #修改dns
[root@localhost named]# systemctl restart network #重启网络
验证
1 [root@localhost named]# nslookup www.zyl.com #验证正向解析
2 Server: 192.168.139.100
3 Address: 192.168.139.100#53
4
5 Name: www.zyl.com
6 Address: 192.168.139.102
7
8
9 [root@localhost named]# nslookup 192.168.139.100 #验证反向解析
10 100.139.168.192.in-addr.arpa name = www.zyl.com.139.168.192.in-addr.arpa.
2.2、主从复制DNS
主服务器配置
1 [root@www ~]# vim /etc/named.rfc1912.zones #配置区域文件
2 zone "zyl.com" IN {
3 type master;
4 file "zheng.zyl.com";
5 allow-transfer { 192.168.139.10; }; #允许从服务器下载正向区域数据,这里添从服务器的
6 IP地址
7 also-notify { 192.168.139.10; };
8 };
9 zone "139.168.192.in-addr.arpa" IN {
10 type master;
11 file "fan.zyl.com";
12 allow-transfer { 192.168.139.10; }; #同上
13 };
14 zone "." IN {
15 type hint;
16 file "named.ca";
17 };
18 };
19
20
在主服务器网卡上修改dns
1 [root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
2 #配置网卡
3 DNS2=192.168.139.10
4 #添加dns
5 [root@www ~]# syetemctl restart network
6 #重启网卡
从服务器配置
1 [root@localhost named]# vim /etc/named.conf
2 #配置主文件
3 listen-on port 53 { any; }; 端口放行
4 allow-query { any; }; 通过端口
5
6 #zone "." IN { 注释根
7 # type hint;
8 # file "named.ca";
9 #};
10
11 [root@localhost named]# vim /etc/named.rfc1912.zones
12 #配置区域文件
13
14 zone "zyl.com" { #类型为从区域
15 type slave;
16 file "slaves/zheng.zyl.com"; #下载的区域数据文件保存到slaves/目录下
17 masters{192.168.139.100;}; #指定主服务器的IP地址
18 };
19
20
21 zone "139.168.192.in-addr.arpa" IN {
22 type slave;
23 file "slaves/fan.zyl.com";
24 masters{192.168.139.100;};
25 };
26 zone "." IN {
27 type hint;
28 file "named.ca";
29 };
重启服务、在网卡添加dns、重启网卡
1 [root@localhost named]# systemctl restart named
2 #重启服务
3
4 [root@localhost named]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
5 #配置网卡
6
7 DNS1=192.168.139.100
8 #新添dns
9
10 [root@localhost named]# systemctl restart network
11 #重启网络服务
验证
1 [root@www ~]# systemctl stop named 关闭dns服务
2
3 [root@www ~]# nslookup www.zyl.com 域名解析验证
4 Server: 192.168.139.10
5 Address: 192.168.139.10#53
6
7 Name: www.zyl.com
8 Address: 192.168.139.102