DNS服务讲解

DNS服务讲解

1、DNS服务介绍

DNS(Domain Name System)域名系统,在TCP/IP网络中有非常重要的地位,能够提供域名与IP地址的解析服务

  • DNS是一个分布式的数据库,命名系统会采用层次的逻辑结构
  • DNS是划分了域名空间;
  • 域名空间中,最深不得超过127层,每个节点可以存储63个字节

域和域名的讲解

  • DNS 树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。域名空间的每个域的名字,通过域名进行表示。
  • 域名:通常由一个完全合格域名(FQDN)标识。FQDN能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS 域google来说,其完全正式域名(FQDN)为google.com。

注意:通常,FQDN 有严格的命名限制,长度不能超过256 字节,只允许使用字符a-z,0-9,A-Z和减号(-)。点号(.)只允许在域名标志之间(例如“google.com”)或者FQDN 的结尾使用。域名不区分大小。

由最顶层到下层,可以分成:根域、顶级域、二级域、子域。

www.baidu.com.

顶层是根域:

  • 其记录着Internet 的重要DNS 信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织。“.”全球有13个根(root)服务器

第二层是顶级域

  • 也由Internet 域名注册授权机构管理。共有3 种类型的顶级域。
  • 组织域:
    • 采用3 个字符的代号,表示DNS 域中所包含的组织的主要功能或活动。
    • 比如com 为商业机构组织,edu 为教育机构组织,gov 为政府机构组织,mil 为军事机构组织,net 为网络机构组织,org 为非营利机构组织,int 为国际机构组织。
  • 地址域:
    • 采用两个字符的国家或地区代号。如cn 为中国,kr 为韩国,us 为美国。
  • 反向域:
    • 这是个特殊域,名字为in-addr.arpa,用于将IP 地址映射到名字(反向查询)。
    • 对于顶级域的下级域,Internet 域名注册授权机构授权给Internet 的各种组织。
    • 当一个组织获得了对域名空间某一部分的授权后,该组织就负责命名所分配的域及其子域,包括域中的计算机和其他设备,并管理分配的域中主机名与IP 地址的映射信息。

第三层是区(zone)

  • 区是DNS 名称空间的一部分,其包含了一组存储在DNS 服务器上的资源记录。
  • 使用区的概念,DNS 服务器回答关于自己区中主机的查询,每个区都有自己的授权服务器。

第四层是主域名服务器与辅助域名服务器

  • 当区的辅助服务器启动时,它与该区的主控服务器进行连接并启动一次区传输,区辅助服务器定期与区主控服务器通信,查看区数据是否改变。如果改变了,它就启动一次数据更新传输。
  • 每个区必须有主服务器,另外每个区至少要有一台辅助服务器,否则如果该区的主服务器崩溃了,就无法解析该区的名称。

辅助服务器的优点:

  • 容错能力:
    • 配置辅助服务器后,在该区主服务器崩溃的情况下,客户机仍能解析该区的名称。一般把区的主服务器和区的辅助服务器安装在不同子网上,这样如果到一个子网的连接中断,DNS 客户机还能直接查询另一个子网上的名称服务器。
  • 减少广域链路的通信量:
    • 如果某个区在远程有大量客户机,用户就可以在远程添加该区的辅助服务器,并把远程的客户机配置成先查询这些服务器,这样就能防止远程客户机通过慢速链路通信来进行DNS 查询。
  • 减轻主服务器的负载
    • 辅助服务器能回答该区的查询,从而减少该区主服务器必须回答的查询数。

2、DNS的相关概念

DNS服务器用来干什么的?

运行DNS 服务器程序的计算机,储存DNS 数据库信息;DNS 服务器会尝试解析客户机的查询请求。

  • 在解答查询时,如果DNS 服务器能提供所请求的信息,就直接回应解析结果;
  • 如果该DNS 服务器没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址;
  • 如果以上两种方法均失败,则回应客户机没有所请求的信息或请求的信息不存在。

DNS也有缓存的概念

  • DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器;
  • 当其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存;
  • 当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。

DNS的查询方式:

  • 递归查询:
    • 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。
    • 如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
    • 简单的理解就是一键包办;
  • 迭代查询:
    • DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
    • 简单的理解就是自己去问问问,问到有就有,没有就没有了

完整的DNS解析过程简介

1)首先客户机体检域名解析的请求–>这个请求会直接发送给到本地的域名服务器

2)域名服务器首先查询一下有没有缓存;

  • 有缓存则直接反馈结果;
  • 没有缓存则向根域服务器询问有没有解析;

3)根域服务器一看请求是什么?是www.qq.com.这种的;它自己查一下自己的本地有没有?

  • 有就直接反馈结果->给到本地域名服务器
  • 没有–>也会告诉你你应该找com这个顶级域的服务器这个地址,让你去找顶级域看看

4)本地服务器收到根域服务器的通知–>就去找顶级域服务器问起来,有没有这个记录;

5)然后顶级域也查一下本地自己有没有;

  • 有则直接反馈结果;
  • 没有–>就有告诉你去区服务器地址问问有没有;

6)区服务器有查一下自己有没有这个缓存,

7)本地域名服务器将查询请求发送给返回的DNS 服务器。

8)域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS 信息,直到返回解析信息或解析失败的回应)。

9)本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机。

DNS的正向解析和反向解析

正向解析:就是指定域名到IP地址的解析过程

反向解析:就是从ip地址到域名的解析过程,他的作用就是为服务器做身份验证的

有个网站可以查询:http://dns.aizhan.com/

DNS记录的资源记录

这里的解析就是配置文件的定义;

  • SOA资源记录
    • 每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA 记录。
      SOA 定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA 记录。
  • NS资源记录
    • NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。
    • 每个区在区根处至少包含一个NS 记录。
  • A资源记录:
    • 地址(A)资源记录把FQDN 映射到IP 地址。 因为有此记录,所以DNS服务器能解析FQDN域名对应的IP 地址。
  • PTR资源记录
    • 相对于A资源记录,指针(PTR)记录把IP地址映射到FQDN。 用于反向查询,通过IP地址,找到域名。
  • CNAME资源记录
    • 别名记录(CNAME)资源记录创建特定FQDN 的别名。用户可以使用CNAME 记录来隐藏用户网络的实现细节,使连接的客户机无法知道真正的域名。
  • MX记录
    • 邮件交换(MX)资源记录,为DNS 域名指定邮件交换服务器。
    • 邮件交换服务器是为DNS 域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。
    • 转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP 把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。

DNS的模式:

  • C/S模式

DNS的端口:

  • tcp/53 udp/53 用于客户端查询
  • tcp/953 udp/953 用于DNS主从同步

3、DNS的安装部署

dns的安装也是使用yum安装,但是安装的名字不叫dns–>使用bind服务

bind介绍:

  • BIND 全称为Berkeley Internet Name Domain(伯克利因特网名称域系统)。
  • BIND 主要有三个版本:BIND4、BIND8、BIND9。
  • BIND8 融合了许多提高效率、稳定性和安全性的技术;
  • BIND9 增加了一些超前的理念:IPv6支持、密钥加密、多处理器支持、线程安全操作、增量区传送等等。

安装bind服务

[root@Node4 ~]# yum -y install bind bind-chroot bind-utils
	#bind:是dns服务的主程序包
	#bind-chroot:是用于提高安全性
	#bindn-utils:这个是客户端工具,用于搜索域名指令
#启动bind服务
[root@Node4 ~]# systemctl start named
[root@Node4 ~]# netstat -ntlup | grep 53
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      9061/named          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      9061/named          
tcp6       0      0 ::1:53                  :::*                    LISTEN      9061/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      9061/named          
udp        0      0 127.0.0.1:53            0.0.0.0:*                           9061/named          
udp6       0      0 ::1:53                  :::*                                9061/named      

bind-chroot的理解:

  • bind-chroot是bind的一个功能,使bind可以在一个chroot 的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已;
  • 这样做的目的是为了提高安全性.因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中。

DNS的配置文件讲解

#查找一下dns的配置文件
[root@Node4 ~]# ll /etc/named.conf 
-rw-r----- 1 root named 1806 2月  24 01:17 /etc/named.conf

	#name.conf文件是bind的核心配置文件,包括了基本的配置;
	#注意区域数据不在这个文件中;
	#/etc/named/这个目录是存放dns的数据文件,每个域文件都是存放到这;

配置文件的修改解析

  • 注意双/是用来注释的
  • 每一行都以分号结束

options:是对全局生效的

zone:是对某个区域生效的

[root@Node4 ~]# vim /etc/named.conf 
//
// named.conf
.......................
options {
        listen-on port 53 { 127.0.0.1; };
        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     { localhost; };
..............
        recursion yes;					#这里是表示支递归查询

zone "." IN {
        type hint;
        file "named.ca";
};
................


type的参数详细讲解:
	type 字段指定区域的类型,对于区域的管理至关重要,一共分为六种:
	#Master:主DNS 服务器:拥有区域数据文件,并对此区域提供管理数据
	#Slave:辅助DNS 服务器:拥有主DNS 服务器的区域数据文件的副本,辅助DNS 服务器会从主DNS服务器同步所有区域数据。
	#Stub:stub 区域和slave 类似,但其只复制主DNS 服务器上的NS 记录而不像辅助DNS 服务器会复制所有区域数据。
	#Forward:一个forward zone 是每个域的配置转发的主要部分。一个zone 语句中的type forward可以包括一个forward 和/或forwarders 子句,它会在区域名称给定的域中查询。如果没有forwarders 语句或者forwarders 是空表,那么这个域就不会有转发,消除了options 语句中有关转发的配置。
	#Hint:根域名服务器的初始化组指定使用线索区域hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。

实际修改一下配置文件;便于理解

[root@Node4 ~]# vim /etc/named.conf 
//
// named.conf
.........
options {
        listen-on port 53 { any; };				#监听全部
        listen-on-v6 port 53 { any; };			#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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };				#允许所有
..........
        recursion yes;							#这里支持递归查询

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;					#添加这一行;
................
logging {										#这里都使用默认的
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
........
zone "." IN {
        type hint;
        file "named.ca";
};
#这里自己制定一个属于自己的区域;
zone "liangjiawei.cn" IN {
        type master;					#指定的是主dns服务器
        file "liangjiawei.cn.zone";		#它的文件在/var/named/liangjiawei.cn.zone需要自己创建
};


#查看一下
[root@Node4 ~]# ls /etc/named* -l
-rw-r--r-- 1 root root   621 2月  24 01:17 /etc/named-chroot.files
-rw-r----- 1 root named 1890 3月  12 14:17 /etc/named.conf
-rw-r--r-- 1 root named 3923 2月  24 01:17 /etc/named.iscdlv.key
-rw-r----- 1 root named  931 6月  21 2007 /etc/named.rfc1912.zones
-rw-r--r-- 1 root named 1886 4月  13 2017 /etc/named.root.key


#创建自己的zone文件
[root@Node4 ~]# cd /var/named/
	#复制模板文件-->注意保存属性
[root@Node4 named]# cp named.localhost  liangjiawei.cn.zone -a
[root@Node4 named]# ll liangjiawei.cn.zone 
-rw-r----- 1 root named 152 6月  21 2007 liangjiawei.cn.zone

#开始修改内容
[root@Node4 named]# vim liangjiawei.cn.zone 
$TTL 1D
liangjiawei.cn.  IN SOA  dns.liangjiawei.cn.  root.liangjiawei.cn. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
liangjiawei.cn. NS      dns.liangjiawei.cn.
dns.liangjiawei.cn.     A       192.168.75.134
www.liangjiawei.cn.     A       192.168.75.134
www.bieming.cn. CNAME   www.liangjiawei.cn.

#以上修改的东西具体的参数解释:
$TTL 1D ;设置有效地址解析记录的默认缓存时间,默认为1天也就是1D。
liangjiawei.cn. 	IN SOA	dns. liangjiawei.cn. root.liangjiawei.cn.
	#原来的@表示当前的域liangjiawei.cn.,
	#设置SOA记录为:dns.liangjiawei.cn.  
	#在此配置文件中写域名时,都把根. 也要写上。
	#域管理邮箱root.liangjiawei.cn.由于@有其他含义,所以用“.”代替@。
0 ;更新序列号,用于标示数据库的变换,可以在10位以内,如果存在辅助DNS区域,建议每次更新完数据库,手动加1.
1D ;刷新时间,从域名服务器更新该地址数据库文件的间隔时间,默认为1天
1H ;重试延时,从域名服务器更新地址数据库失败以后,等待多长时间,默认为为1小时
1W ; 到期,失效时间,超过该时间仍无法更新地址数据库,则不再尝试,默认为一周
3H ;设置无效地址解析记录(该数据库中不存在的地址)默认缓存时间。设置无效记录,最少缓存时间为3小时

NS @ ;域名服务器记录,用于设置当前域的DNS服务器的域名地址,
A 127.0.0.1 ; 设置域名服务器的A记录,地址为ipv4的地址127.0.0.1,可以设置成192.168.75.134
AAAA ::1 ; 设置域名服务器的A记录,地址为ipv6的地址

资源记录的参数

CNAME 资源记录
	别名(CNAME)资源记录用于为某个主机指定一个别名
	CNAME 资源记录语法格式:
			别名 CNAME 主机名
			www.bieming.cn. CNAME   www.liangjiawei.cn.
MX 资源记录
		MX(邮件交换器)资源记录提供邮件传递信息。该记录会指定区域内的邮件服务器名称。
PTR 资源记录
		指针(PTR)资源记录。该记录与A 记录相反,用于查询IP 地址与主机名的对应关系。

根区域设置及对应区域文件

  • 根区域是一个较为特殊的区域,记录列出了全球根域名服务器的信息,域名通常用“.”表示,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NfNkuvbC-1647072042792)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsBDC0.tmp.jpg)]

重启dns服务以及验证配置

#服务器端重启
[root@Node4 named]# systemctl restart named

#客户端配置测试
[root@Node5 ~]# vim /etc/resolv.conf 
# Generated by NetworkManager
#nameserver 114.114.114.114
nameserver 192.168.75.134
[root@Node5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens32"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="192.168.75.135"
PREFIX="24"
GATEWAY="192.168.75.2"
#DNS1="114.114.114.114"
DNS1=192.168.75.134				#DNS填写这个

#然后测试
[root@Node5 ~]# systemctl restart network
[root@Node5 ~]# ping www.liangjiawei.cn				#成功解析
PING www.liangjiawei.cn (192.168.75.134) 56(84) bytes of data.
64 bytes from 192.168.75.134 (192.168.75.134): icmp_seq=1 ttl=64 time=0.322 ms

4、DNS的案例讲解

案例一:使用DNS支持递归查询

#修改服务器的配置文件
[root@Node4 named]# vim /etc/named.conf 
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        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; };

        recursion yes;			#这里默认就能够支持递归查询

#       dnssec-enable yes;
#       dnssec-validation yes;
#       dnssec-lookaside auto;
[root@Node4 named]# systemctl restart named


#接上个实验,完全不用修改别的,只需要注释dns的加密通讯功能关闭
#注意把dns加密通讯功能关闭,才可以和根服务器时行迭代查询。

#客户端测试-->直接瓶外网
[root@Node5 ~]# ping www.qq.com -c 2
[root@Node5 ~]# ping -c 2 www.baidu.com		#这里会发现ping的很慢
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=128 time=19.0 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=128 time=14.8 ms

案例二:搭建dns转发服务器

家庭路由器就是一个典型的转发服务器

同样是接上一个实验继续操作

#服务器端修改配置文件
[root@Node4 named]# vim /etc/named.conf 
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        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; };
...........
        recursion yes;

#       dnssec-enable yes;
#       dnssec-validation yes;
#       dnssec-lookaside auto;
	#添加这两行哦
forward  only ;  			#仅执行转发操作 ,only:仅转发;first:先查找本地zone,再转发
        forwarders  { 8.8.8.8; };	#指定转发查询请求的DNS服务器列表
...................
#zone "liangjiawei.cn." IN {
#       type master;
#       file "liangjiawei.cn.zone";
#};

#测试
[root@Node5 ~]# ping www.baidu.com -c 2
PING www.wshifen.com (45.113.192.101) 56(84) bytes of data.
64 bytes from 45.113.192.101 (45.113.192.101): icmp_seq=1 ttl=128 time=270 ms

案例三:搭建DNS主从服务器

配置主服务器的配置

#修改配置文件
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        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 "liangjiawei.cn." IN {
        type master;
        file "liangjiawei.cn.zone";
        allow-transfer { 192.168.75.0/24; };			#指定允许哪个网段的从DNS服务器,可以同步主DNS服务器zone文件,不写默认为所有。
};

[root@Node4 named]# vim /var/named/liangjiawei.cn.zone 
$TTL 1D
liangjiawei.cn. IN SOA  dns.liangjiawei.cn.  root.liangjiawei.cn. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
liangjiawei.cn. NS      dns.liangjiawei.cn.
dns.liangjiawei.cn.     A       192.168.75.134
www.liangjiawei.cn.     A       192.168.75.134
www.bieming.cn. CNAME   www.liangjiawei.cn.

#重启服务
[root@Node4 named]# systemctl restart named

从服务器的配置

  • 这里需要注意一下时间点,要两台服务器的时间都需要保持一致
  • 安装的配置基本上也需要一样的
#做一下基本的配置
[root@Node6 ~]# systemctl stop firewalld.service 
[root@Node6 ~]# iptables -F
[root@Node6 yum.repos.d]# yum makecache

#安装对应的服务
[root@Node6 ~]# yum -y install bind bind-chroot bind-utils

#修改配置文件
[root@Node6 ~]# vim /etc/named.conf
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        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; };
......................
        recursion yes;

#       dnssec-enable yes;
#       dnssec-validation yes;
#       dnssec-lookaside auto;
............
zone "liangjiawei.cn." IN {
        type slave;
        file "slaves/liangjiawei.cn.zone.file";
        masters { 192.168.75.134; };
};

#从服务器的解释如下:
这样从DNS服务器就可以从主DNS服务器上获取DNS解析记录信息了。写时注意slave slaves  master单词的书写,有的加s有的不加;
重启从DNS服务器会在:/var/named/slaves文件夹下自动创建一个文件liangjiawei.cn.zone.file 这个文件是从DNS服务器从主DNS服务器上获取的数据;
这样随便一个DNS就可以获取主DNS服务器的解析记录,不安全;
注:主DNS记录中应该有两NS记录,一条是主DNS的NS记录,一条是从DNS服务器的域名记录。


#查看一下从服务器的结果--->看到这里代表主从已经搭建完成
[root@Node6 ~]# systemctl start named
[root@Node6 ~]# ll /var/named/slaves/
总用量 4
-rw-r--r-- 1 named named 273 3月  12 15:13 liangjiawei.cn.zone.file

#给客户端实现一下
[root@Node5 ~]# vim /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.75.136
[root@Node5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens32"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="192.168.75.135"
PREFIX="24"
GATEWAY="192.168.75.2"
#DNS1="114.114.114.114"
DNS1=192.168.75.136
[root@Node5 ~]# systemctl restart network
[root@Node5 ~]# ping www.liangjiawei.cn -c 2
PING www.liangjiawei.cn (192.168.75.134) 56(84) bytes of data.
64 bytes from 192.168.75.134 (192.168.75.134): icmp_seq=1 ttl=64 time=0.270 ms
64 bytes from 192.168.75.134 (192.168.75.134): icmp_seq=2 ttl=64 time=0.521 ms
...............

#把主服务器down了再测试
[root@Node4 named]# systemctl stop  named
[root@Node5 ~]# systemctl restart network
[root@Node5 ~]# ping www.liangjiawei.cn -c 2
PING www.liangjiawei.cn (192.168.75.134) 56(84) bytes of data.
64 bytes from 192.168.75.134 (192.168.75.134): icmp_seq=1 ttl=64 time=0.664 ms
64 bytes from 192.168.75.134 (192.168.75.134): icmp_seq=2 ttl=64 time=0.263 ms

案例四:搭建dns做负载均衡

编辑主dns服务器的配置文件

[root@Node4 named]# cd /var/named/
[root@Node4 named]# vim liangjiawei.cn.zone 
$TTL 1D
liangjiawei.cn. IN SOA  dns.liangjiawei.cn.  root.liangjiawei.cn. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
liangjiawei.cn. NS      dns.liangjiawei.cn.
dns.liangjiawei.cn.     A       192.168.75.134	
www.liangjiawei.cn. 1   A       192.168.75.134	#DNS做简单的负载均衡,1表示此记录在客户端保存1秒
www.liangjiawei.cn. 1   A       192.168.75.136	#DNS做简单的负载均衡,1表示此记录在客户端保存1秒
www.bieming.cn. CNAME   www.liangjiawei.cn.
liangjiawei.cn. MX      10      mail.liangjiawei.cn.	#这里是添加邮件记录
mail.liangjiawei.cn.    A       192.168.75.134
bbs.liangjiawei.cn.     CNAME   www.liangjiawei.cn.
~                                                   

案例五:DNS的主从密钥认证

在案例三的实验中,主从配置的时候具有不安全的因素,因此这里的主从密钥认证就能够解决这个安全性问题;

主服务器重启时,会主动给从服务器发送信息,让从服务器更新自己的记录,通讯端口采用TCP 的53端口。

一定要注意主从同步的时间

#两台服务器都实现主从同步
[root@Node4 named]# yum -y install ntpdate
[root@Node4 named]# ntpdate ntp1.aliyun.com
12 Mar 15:25:07 ntpdate[9508]: step time server 120.25.115.20 offset 2.581268 sec

在主服务器上面生成密钥,进行主从认证

#查看一下命令的包
[root@Node4 named]# rpm -qf `which dnssec-keygen`
bind-9.11.4-26.P2.el7_9.9.x86_64

#生成密钥
[root@Node4 named]# cd /var/named/chroot/
[root@Node4 chroot]# dnssec-keygen -a hmac-md5 -b 128 -n HOST abc #生成一对 对称钥匙
Kabc.+157+40736
	#-a:采用hmac-md5的加密算法
	#-b:指定生成秘钥长度是128
	#-n 密钥类型。我们选择主机类型:HOST 。 
		#-n : ZONE | HOST | ENTITY | USER | OTHER
        (DNSKEY generation defaults to ZONE)
   	#abc #为生成密钥的名字

#这里就能看到密钥对
[root@Node4 chroot]# ls
dev  etc  Kabc.+157+40736.key  Kabc.+157+40736.private  run  usr  var

#查看一下私钥的内容
[root@Node4 chroot]# cat Kabc.+157+40736.private 
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: PV6q4dn0pPQur1dDMs15mg==		#这就是密钥
Bits: AAA=
Created: 20220312072731
Publish: 20220312072731
Activate: 20220312072731

#这时候修改主DNS的配置
[root@Node4 chroot]# vim /etc/named.conf 
..............
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        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; };
..................
        recursion yes;

        dnssec-enable yes;					#这几个一定要打开哦
        dnssec-validation yes;
        dnssec-lookaside auto;
#重新添加一段
key abckey {
        algorithm hmac-md5;							#使用的算法是加密算法
        secret "PV6q4dn0pPQur1dDMs15mg==";			#这里是刚才看到的私钥串
};
zone "liangjiawei.cn." IN {
        type master;
        file "liangjiawei.cn.zone";
        allow-transfer { key abckey; };				#这里是指定的是密钥进行同步
};

#重启服务
[root@Node4 chroot]# systemctl restart named

到这里再回到从DNS服务器配置

#修改配置文件
[root@Node6 ~]# vim /etc/named.conf 
........
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        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; };
...............
        recursion yes;

        dnssec-enable yes;				#打开三个选项
        dnssec-validation yes;
        dnssec-lookaside auto;
...............
key abckey {
        algorithm hmac-md5;
        secret "PV6q4dn0pPQur1dDMs15mg==";		#这一串是在主dns生成的Kabc.+157+40736.key这里
};
zone "liangjiawei.cn." IN {
        type slave;
        file "slaves/liangjiawei.cn.zone.file";
        masters { 192.168.75.134 key abckey; };		#这里采用密钥进行同步
};


#删除指定的liangjiawei.cn.zone.file文件,测试同步
[root@Node6 ~]# rm -rf /var/named/slaves/liangjiawei.cn.zone.file 
#重启从dns服务器
[root@Node6 ~]# ls /var/named/slaves/liangjiawei.cn.zone.file 
/var/named/slaves/liangjiawei.cn.zone.file

5、dns的测试工具

nslookup命令

作用:测试域名解析

语法: nslookup+域名或者是ip

[root@Node5 ~]# yum -y install nslookup
[root@Node6 ~]# nslookup www.liangjiawei.cn
Server:		192.168.75.134
Address:	192.168.75.134#53

Name:	www.liangjiawei.cn
Address: 192.168.75.134
Name:	www.liangjiawei.cn
Address: 192.168.75.136

dig命令

作用:用于查询域名信息,

语法:dig+域名

[root@Node6 ~]# dig www.liangjiawei.net

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> www.liangjiawei.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 65418
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.liangjiawei.net.		IN	A

;; AUTHORITY SECTION:
net.			900	IN	SOA	a.gtld-servers.net. nstld.verisign-grs.com. 1647071910 1800 900 604800 86400

;; Query time: 3468 msec
;; SERVER: 192.168.75.134#53(192.168.75.134)
;; WHEN: 六 3月 12 15:58:44 CST 2022
;; MSG SIZE  rcvd: 121

你可能感兴趣的:(Linux-服务管理,服务器)