DNS介绍与部署-Day 01

1. 什么是DNS

DNS(Domain Name System)域名系统,是一种采用客户端/服务器机制,负责实现计算机名称与IP地址转换的系统。DNS作为一种重要的网络服务,既是Internet工作的基础,同时在企业内部网络中也得到了广泛地应用。

2. 递归查询与迭代查询

在域名解析的过程中,分别用到了两种不同类型的查询,分别是用户和自己所设置使用的本地域名服务器之间的递归查询,以及本地域名服务器与其它DNS服务器之间的迭代查询。
(1)递归查询
DNS客户端发出查询请求后,如果本地域名服务器内没有所需的数据,则服务器会代替客户端向其它的DNS服务器进行查询。在这种方式中,客户端只需发出一次查询请求,而域名服务器必须要给客户端做出回答。普通上网用计算机和所设置的DNS服务器之间都是采用递归查询。

(2)迭代查询
DNS服务器与服务器之间进行的查询,需要多次反复发出查询请求。也就是在上面的例子中,用户所使用的本地域名服务器从根服务器开始逐级往下查询,直到最终找到负责解析ytvc.com.cn域名的DNS服务器为止的过程。

3. DNS查找区域与DNS服务器类型

组成DNS系统的核心是DNS服务器,DNS服务器上保存了包含主机名和相应IP地址的数据库。
配置DNS服务,首先要创建DNS查找区域。
所谓查找区域是指DNS服务器所要负责解析的域名空间,如百度注册了baidu.com的域名,在百度的DNS服务器上就要创建名为“baidu.com”的查找区域。查找区域有正向和反向之分,正向查找区域负责把域名解析为IP,而反向查找区域负责把IP解析为域名。我们通常使用的主要是正向查找区域。
但并非所有的DNS服务器中都要创建查找区域,按照对查找区域的维护方式不同,
DNS服务器可分为三种类型:

  • 缓存域名服务器,这种服务器里没有要负责解析的区域,只是将域名查询结果缓存到本地,以提高客户端重复查询时的速度。
  • 主域名服务器,是我们最常使用的DNS服务器,要负责解析一个或几个区域,而且也可以起到缓存域名服务器的作用。
  • 从域名服务器,也称为辅助域名服务器,主要是作为主域名服务器的备份,所有数据都来源于主域名服务器。会自动从主DNS服务器上下载资源配置文件,或定期跟主DNS服务器同步资源配置文件数据。辅助DNS服务器可以帮助主DNS服务器分担一定的域名解析压力。

4. 部署自建DNS

4.1 安装bind

BIND的软件名为bind,对应的服务进程名为named。

[root@bind-01 ~]#  yum install bind -y
[root@bind-01 ~]# systemctl start named
[root@bind-01 ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@bind-01 ~]# netstat -lntup |grep 53
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      7057/named # tcp的53,主要是主DNS和从DNS进行数据同步时使用
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      7057/named
tcp6       0      0 ::1:53                  :::*                    LISTEN      7057/named
tcp6       0      0 ::1:953                 :::*                    LISTEN      7057/named
udp        0      0 127.0.0.1:53            0.0.0.0:*                           7057/named # udp的53,就是客户端和服务端进行域名解析用
udp6       0      0 ::1:53                  :::*                                7057/named

4.2 配置文件讲解

(1)主配置文件
/etc/named.conf:主要用于配置全局选项以及创建查找区域。比如要创建一个名为“example.com”的查找区域,此项操作就应该在主配置文件中完成。在CentOS7系统中,为了避免主配置文件变得过于庞大,新增了一个配置文件/etc/named.rfc1912.zones,这个文件被包含在主配置文件中,在该文件中做的所有设置都等同于在主配置文件中进行设置。因而,/etc/named.rfc1912.zones可以被视为/etc/named.conf的子配置文件。如果要创建查找区域,更加推荐在/etc/named.rfc1912.zones文件中完成。


(2)区域配置文件
/var/named/:用来存放DNS服务所要负责解析的区域的相关数据,其中主要是各种DNS记录。服务器中所创建的每个查找区域都要有一个相对应的区域配置文件,区域配置文件默认都保存在/var/named/目录中。

4.2.1 /etc/named.conf

主配置文件主要分成3部分:options、logging、zone

[root@bind-01 ~]# cat /etc/named.conf|grep -v "^/"options { # 全局配置,该部分配置,在所有区域中都生效。(重要)listen-on port 53 { 127.0.0.1; };  # dns服务端口默认为53,127.0.0.1为默认监听地址,默认监听地址只能为自己提供服务。这里还可以写any,表示监听本机所有网卡,也可以写一个固定的ip地址listen-on-v6 port 53 { ::1; }; # 表示ipv6环境下的监听端口和监听地址。directory       "/var/named";  # 区域配置文件存放目录dump-file       "/var/named/data/cache_dump.db";  # 客户端向dns服务器发起域名解析请求,该请求会缓存一份到该目录下named.run文件中,下次请求就不会卡一下了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; };  # 允许客户端请求配置(允许谁向dns服务器发起请求),默认只允许本机。一般都会改成any,不过也可以指定网段或者某一个ip地址/*- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.- If you are building a RECURSIVE (caching) DNS server, you need to enablerecursion.- If your recursive DNS server has a public IP address, you MUST enable accesscontrol to limit queries to your legitimate users. Failing to do so willcause your server to become part of large scale DNS amplificationattacks. Implementing BCP38 within your network would greatlyreduce such attack surface*/recursion yes;  # 递归查询配置,默认开启(是否允许客户端把该dns当成它的首选DNS服务器)dnssec-enable yes;  # dns的安全配置,默认启用(一般在公网的dns服务器上启用)dnssec-validation yes;  # dns安全认证配置,默认启用(一般在公网的dns服务器上启用)/* Path to ISC DLV key */bindkeys-file "/etc/named.root.key"; # named提供的受信任密钥的路径,默认即可,不需要更改。managed-keys-directory "/var/named/dynamic"; # 指定目录中的文件存储,跟踪管理DNSSEC密钥。pid-file "/run/named/named.pid"; # pid文件路径,不需要更改。session-keyfile "/run/named/session.key"; # 会话密钥路径,由named生成,默认即可。
};logging {  # 日志配置channel default_debug {file "data/named.run";severity dynamic;};
};zone "." IN {  # 区域配置。(重要) .是该区域的名字,也就是该DNS服务的根域type hint;file "named.ca";
};include "/etc/named.rfc1912.zones"; # 该文件中的内容,都会被视为主配置文件中的一部分,主要是用来配置查找区域的
include "/etc/named.root.key"; 

5. DNS的几种模式

5.1 缓存域名模式

缓存域名模式,即不创建查找区域,服务器直接把客户端的DNS请求发往根域服务器,并把查询结果保存在本地缓存里。因而这里只需修改主配置文件,而不涉及区域配置文件。

5.1.1 修改配置文件
[root@bind-01 ~]# vim /etc/named.conf
把 listen-on port 53 { 127.0.0.1; }; 中的127.0.0.1改成自己的ip
把 allow-query     { localhost; }; 中的localhost改成any
把 dnssec-enable yes; 中的yes改成no
把 dnssec-validation yes; 中的yes改成no[root@bind-01 ~]# egrep "10.0.0.10|allow|dnssec" /etc/named.conflisten-on port 53 { 10.0.0.10; };allow-query     { any; };dnssec-enable no;dnssec-validation no;# 检查语法配置是否有误
[root@bind-01 ~]# named-checkconf /etc/named.conf # 没有返回值表示语法正确
[root@bind-01 ~]# systemctl restart named
root@bind-01 ~]# netstat -lntup |grep 53
tcp        0      0 10.0.0.10:53            0.0.0.0:*               LISTEN      22234/named # 这里可以看到监听地址已经发生了变化
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      22234/named
tcp6       0      0 ::1:53                  :::*                    LISTEN      22234/named
tcp6       0      0 ::1:953                 :::*                    LISTEN      22234/named
udp        0      0 10.0.0.10:53            0.0.0.0:*                           22234/named # 这里可以看到监听地址已经发生了变化
udp6       0      0 ::1:53                  :::*                                22234/named
5.1.2 验证缓存域名服务器配置

这里需要用到一台客户机,并把dns指向dns服务器

[root@bind-client ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.10 # dns配置[root@bind-client ~]# ping www.baidu.com # 首次ping的时候,会卡一下,为什么会卡,是因为它向根dns服务器发起了迭代查询请求(它本身并不做解析),并把请求结果缓存到dns服务器上,第二次请求就不会卡了。
PING www.a.shifen.com (112.80.248.75) 56(84) bytes of data.
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=1 ttl=128 time=34.7 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=2 ttl=128 time=14.0 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=3 ttl=128 time=11.3 ms# 这里所有的缓存都会保存到下面的文件中
[root@bind-01 /var/named/data]# ll
total 20
-rw-r--r-- 1 named named 18341 Jul 19 00:04 named.run

5.2 转发器模式

除了迭代查询之外,对于在内网中架设的DNS服务器,还可以通过设置转发器的方式,将无法解析出来的域名请求转发给其他的DNS服务器,由其代为完成域名解析工作,转发到的目标DNS服务器一般都是公网上由ISP提供的DNS服务器。 配置转发器可以在/etc/named.conf配置文件的全局配置部分增加以下两个设置项:
forward only;
forwarders ( 202.102.134.68; }; # 一般为公网上的dns服务器,要允许递归

forward only,表示仅转发(禁用迭代查询功能),对于自己无法直接解析的查询请求,全部转发给目标DNS服务器。另外还可以设置为forward first,表示先将解析请求转发给目标服务器,如果目标服务器无法解析出结果,那么再由自己发起迭代查询。
forwarders ( 202.102.134.68; },用于指定转发目标服务器。
保存退出后,重启服务生效。

5.3 配置主从DNS模式

该模式也是工作中常用

5.3.1 配置主域名服务器,并创建一个正向查找区域

完成该项要求,需要分别进行两步操作:

  1. 在主配置文件/etc/named.conf或/etc/named.rfc1912.zones中创建查找区域。
  2. 在/var/named目录中生成区域配置文件。
    推荐在/etc/named.rfc1912.zones中创建查找区域,这样主配置文件就不会因为配置太多而显得臃肿。
# 创建查找区域
[root@bind-01 ~]# tail -n 5 /etc/named.rfc1912.zones
zone "example.com" IN {type master;file "example.com.zone"; # 这里区域配置文件的名字,可以自定义,但是更加推荐现在这种写法。allow-update { none; };  # 当IP发生变化后,是否允许自动更新,一般都不开启,不加这行,默认也是none。
};[root@bind-01 ~]# named-checkconf /etc/named.conf
[root@bind-01 ~]# echo $?
0# 创建查找区域配置文件
## 这里建议用系统的区域配置文件当模板来改,不容易出错
[root@bind-01 ~]# cd /var/named/
[root@bind-01 /var/named]# ll  # 注意区域文件的权限
total 16
drwxrwx--- 2 named named   23 Jul 19 00:03 data
drwxrwx--- 2 named named   60 Jul 19 21:50 dynamic
-rw-r----- 1 root  named 2253 Apr  5  2018 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named    6 Feb 24 01:17 slaves
[root@bind-01 /var/named]# cp -a named.localhost example.com.zone # 用cp -a连带属性一起复制过来
[root@bind-01 /var/named]# ll
total 20
drwxrwx--- 2 named named   23 Jul 19 00:03 data
drwxrwx--- 2 named named   60 Jul 19 21:50 dynamic
-rw-r----- 1 root  named  152 Jun 21  2007 example.com.zone # 新复制的文件
-rw-r----- 1 root  named 2253 Apr  5  2018 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named    6 Feb 24 01:17 slaves[root@bind-01 /var/named]# cat example.com.zone
$TTL 1D  # DNS缓存保存时间
@       IN SOA  @ rname.invalid. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      @A       127.0.0.1 # A记录AAAA    ::1 # ipv6的A记录

5.3.2 DNS记录类型

  1. 主机记录(A记录)
    使用最广泛的DNS记录类型,用于将主机名解析成IPv4地址。另外还有类型为AAAA的主机记录,用于将主机名解析为IPv6地址。
  2. 指针记录(PTR记录)
    作用与A记录正好相反,用于将IP地址解析成主机名,即进行反向查询。
  3. 别名记录(CNAME记录)
    用来为现有的A记录定义别名。
    需要注意的是,主机名与IP地址之间并非是一一对应的关系,一个主机名可以对应多个IP地址,一个IP地址也可以对应多个主机名。通过别名记录就可以使一个IP对应到多个名字,比如某台服务器既是Web服务器,同时也是FTP服务器,那么就可以通过CNAME记录将服务器的IP地址对应到多个主机名上。
  4. 邮件交换器记录(MX记录)
    用于说明哪台服务器是当前区域的邮件服务器。
    例如在example.com区域中,mail.example.com是邮件服务器,那么所有发往后缀是@example.com的邮件都由该服务器负责接收。在一个区域中可能会有多台邮件服务器,因而MX记录必须要指明优先级,优先级用0~99之间的数字表示,数字越小,优先级越高。
  5. 名称服务器记录(NS记录)
    用于说明当前区域由哪些域名服务器负责解析。NS记录是任何一个DNS区域都必须要有的记录,而且当前区域中有几台DNS服务器,就应相应地设置几条NS记录。
  6. 起始授权记录(SOA记录)
    用于说明哪台服务器是当前区域的主域名服务器,同时还定义了一些域的全局参数。如果区域中只有一台DNS服务器,那么SOA也就是当前服务器。SOA也是任何一个DNS区域都不可缺少的记录,而且每个区域只能有一条SOA记录,另外SOA记录应位于区域配置文件的起始位置。
5.3.3 编辑区域配置文件

(1)配置SOA记录(必须)

[root@bind-01 /var/named]# cat example.com.zone
$TTL 1D
# dns.example.com.,由于DNS服务器没有域名,所以这里自定义一个,正式工作中写申请的域名。
# 1184964356.qq.com.:邮箱地址,由于@符号会被当成区域符号,所以用.代替
@       IN SOA  dns.example.com. 1184964356.qq.com. (  0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      @A       127.0.0.1AAAA    ::1
dns     IN      A      10.0.0.10 # 创建的A记录(主机记录)

区域配置文件中的第一条记录必须是SOA记录,该记录既指明了当前区域的主域名服务器,同时还包含了与从域名服务器之间进行数据同步的一些参数。 SOA记录的格式如下:
当前区域名 IN SOA 主域名服务器的FQDN名 管理员邮箱地址 ( 序列号 刷新间隔 重试间隔 过期间隔 TTL值) 。

  • 当前区域名:这里用@表示,在区域配置文件中@特指当前区域,这里即example.com(@=example.com)。
  • IN:关键字,代表Internet,在各种类型的DNS记录中均应包含IN关键字。
  • SOA:表示记录类型为SOA记录。
  • 主域名服务器的FQDN名(完整的域名):这里必须采用FQDN名的形式表示主域名服务器,而且FQDN名中最右侧表示根域的“.”不能省略。服务器的FQDN名可以通过在下面创建A记录来获得。
  • 管理员邮箱地址:负责维护DNS服务器的管理员邮箱地址。注意在书写时要用符号“.”代替符号“@”,因为“@”在本文件中特指当前区域,比如“root@example.com.”要写成“root.example.com.”(注意,最右侧的根域符号“.”也不能省略)。

其它与从域名服务器之间进行数据同步的参数将在配置从域名服务器部分介绍,需要注意的是,无论网络中是否存在从域名服务器,这些默认的同步参数都必须要保留下来。

(2)配置NS记录(必须)

区域配置文件中的第二条记录就应该是NS记录,用于指明当前区域中的所有域名服务器。
NS记录的格式:当前区域名 IN NS 域名服务器的FQDN名。
当前区域名同样可以使用@表示,另外在区域配置文件中还有一条默认规则:如果前后两条记录的名称是一样,那么后一条记录的名称可以省略不写。因而可以这样在配置文件中添加NS记录: IN NS dns.example.com. [root@bind-01 /var/named]# cat example.com.zone
$TTL 1D
@       IN SOA  dns.example.com. 1184964356.qq.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@       IN      NS      dns.example.com. # 有几台DNS服务器,就要添加几条NS记录。这里只有一台。这里还可以直接写成  IN NS dns.example.com. ,因为名称相同。A       127.0.0.1 # 这个可以删除AAAA    ::1 # 这个可以删除

(3)配置A记录

区域配置文件中的第一条记录必须是SOA记录,第二条记录必须是NS记录,再接下来对记录类型就没有要求了,不过通常都是添加A记录,因为这是最常用的DNS记录类型。
注意,主机名不要写“www.example.com”之类的全名,只需写“www”或“mail”,DNS就会自动在主机名称后面加上当前的区域名称作为后缀,形成完全合格域名。

[root@bind-01 /var/named]# cat example.com.zone
$TTL 1D
@       IN SOA  dns.example.com. 1184964356.qq.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@       IN      NS      dns.example.com.A       127.0.0.1AAAA    ::1
dns     IN      A      10.0.0.10 # 添加的A记录
web     IN      A      10.0.0.10 # 这里假设还有台web服务器
web     IN      A      10.0.0.11 # 可以一个主机名对应多个IP(负载均衡),这种对话,A请求web时,获得10.0.0.10,B请求web时,获得10.0.0.11(DNS轮询)

另外在添加A记录时有两个问题需要注意:

  1. 同一个IP地址可以对应到多个主机名。比如我们将192.168.80.10这个
    IP地址同时对应到了dns和www两个名字,这表明在这台服务器中同时提供了DNS和
    Web两种服务,通过这两个名字都可以访问到这台服务器。对于服务器,可以通过所接收的数据包中的目的端口来区分客户端所访问的是DNS服务还是Web服务。
  2. 同一个名字可以对应到多个IP。比如我们将www这个名字同时对应到了192.168.80.10和192.168.80.11两个IP,这表明这个网站由两台服务器组成了一个集群,网站同时部署在两台服务器上。当客户端访问网站时,DNS服务器将会实现轮询,将这两个IP地址依次解析给客户端。

(4)配置CNAME记录(别名)

CNAME记录必须以A记录为基础,即必须先有了A记录之后,才能再创建CNAME记录。 CNAME记录的格式:别名 IN CNAME 主机名

[root@bind-01 /var/named]# cat example.com.zone
$TTL 1D
@       IN SOA  dns.example.com. 1184964356.qq.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@       IN      NS      dns.example.com.A       127.0.0.1AAAA    ::1
dns     IN      A      10.0.0.10
web     IN      A      10.0.0.10
www     IN      CNAME  web.example.com. # CNAME记录,访问www.dns.example.com就会解析到web.dns.example.com

(5)配置MX记录(邮件)

MX记录也必须要以A记录为基础,同时必须要在MX记录中指明邮件服务器的优先级。 MX记录的格式: 当前区域名称 IN MX 优先级 邮件服务器的FQDN名 # 优先级0-99,越小优先级越高

[root@bind-01 /var/named]# cat example.com.zone
$TTL 1D
@       IN SOA  dns.example.com. 1184964356.qq.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@       IN      NS      dns.example.com.A       127.0.0.1AAAA    ::1
dns     IN      A      10.0.0.10
web     IN      A      10.0.0.10
www     IN      CNAME  web.example.com.
mail    IN      A      10.0.0.10 # 邮件服务器的A记录
@       IN      MX     10      mail.example.com.  # 邮件服务器的MX记录

**(6)实现泛域名解析 **

泛域名解析是指将所有匹配不到资源记录的请求都解析到指定的IP地址,比如用户要访问网站www.example.com,在输入网址时不小心写成了web.example.com,通过泛域名解析就可以将这些名字统一进行解析。
泛域名解析的原理就是利用通配符“*”来代替任意名字,因而只需添加如下一条记录即可。

[root@bind-01 /var/named]# cat example.com.zone
$TTL 1D
@       IN SOA  dns.example.com. 1184964356.qq.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@       IN      NS      dns.example.com.A       127.0.0.1AAAA    ::1
dns     IN      A      10.0.0.10
web     IN      A      10.0.0.10
www     IN      CNAME  web.dns.example.com.
mail    IN      A      10.0.0.10
@       IN      MX     10      mail.dns.example.com.
*       IN      A      10.0.0.10  # 泛域名解析[root@bind-01 /var/named]# named-checkconf /etc/named.conf
[root@bind-01 /var/named]# systemctl restart named

**(7)直接解析域名 **

# DNS服务默认只能解析www.example.com这样的FQDN名,而不能直接将域名example.com解析成IP。为了方便用户访问,可以添加下面的A记录,实现直接解析域名功能。 
## 修改配置文件,删除默认本地回环地址的解析
[root@bind-01 ~]# cat /var/named/example.com.zone
$TTL 1D
@       IN SOA  dns.example.com. 1184964356.qq.com. (1       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@       IN      NS      dns.example.com.A       127.0.0.1  # 删除这个AAAA    ::1  # 删除这个
dns     IN      A      10.0.0.10
web     IN      A      10.0.0.10
web     IN      A      10.0.0.11
www     IN      CNAME  web.dns.example.com.
mail    IN      A      10.0.0.10
@       IN      MX     10      mail.dns.example.com.
*       IN      A      10.0.0.10[root@bind-01 ~]# systemctl restart named# 客户端测试
[root@bind-client ~]# ping example.com # 这里发现ping不通了
ping: example.com: Name or service not known# 添加直接解析域名配置
[root@bind-01 ~]# !vi
vim /var/named/example.com.zone
[root@bind-01 ~]# tail -1 /var/named/example.com.zone
@       IN      A      10.0.0.10
[root@bind-01 ~]# systemctl restart named# 客户端测试
[root@bind-client ~]# ping example.com # 能ping通了
PING example.com (10.0.0.10) 56(84) bytes of data.
64 bytes from 10.0.0.10 (10.0.0.10): icmp_seq=1 ttl=64 time=0.360 ms
5.3.4 配置反向查找区域

根据已知的IP地址来查询DNS主机名称

# 配置文件中添加反向查找区域配置
[root@bind-01 ~]# tail -5 /etc/named.rfc1912.zones
zone "0.0.10.in-addr.arpa" IN { # .in-addr.arpa为固定写法type master;file "0.0.10.zone";allow-update { none; };
};# 创建反向查找区域配置文件
[root@bind-01 /var/named]# cp -a  named.loopback 0.0.10.zone
[root@bind-01 /var/named]# vim 0.0.10.zone
[root@bind-01 /var/named]# cat 0.0.10.zone
$TTL 1D
@       IN SOA  dns.example.com. 1184964356.qq.com (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      dns.example.com.
10      IN PTR  dns.example.com.
10      IN PTR  www.example.com.
11      IN PTR  web.example.com.[root@bind-01 /var/named]# systemctl restart named# 测试
[root@bind-client ~]# host -t ptr 10.0.0.10
10.0.0.10.in-addr.arpa domain name pointer www.example.com.
10.0.0.10.in-addr.arpa domain name pointer dns.example.com.[root@bind-client ~]# dig -x 10.0.0.10; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -x 10.0.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42325
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;10.0.0.10.in-addr.arpa.                IN      PTR;; ANSWER SECTION:
10.0.0.10.in-addr.arpa. 86400   IN      PTR     dns.example.com.
10.0.0.10.in-addr.arpa. 86400   IN      PTR     www.example.com.;; AUTHORITY SECTION:
0.0.10.in-addr.arpa.    86400   IN      NS      dns.example.com.;; ADDITIONAL SECTION:
dns.example.com.        86400   IN      A       10.0.0.10;; Query time: 0 msec
;; SERVER: 10.0.0.10#53(10.0.0.10)
;; WHEN: Sat Jul 23 18:20:12 CST 2022
;; MSG SIZE  rcvd: 128

6. DNS测试工具

主要是用来验证域名解析的结果的

6.1 dig命令使用

dig(domain information groper)是一个灵活的DNS测试工具,它专用于测试DNS系统,不会查询hosts文件以及缓存。 dig命令的格式:
dig [-t type] name [@server]
通过“-t”选项可以指定要解析的DNS记录类型,默认为A记录;通过“@server”可以指定要测试的DNS服务器,默认为“/etc/resolv.conf”中所设置的DNS服务器。

# 新开一台客户端机器,用来测试,然后把DNS调整下
[root@bind-client ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.10  # 调整dns地址为我们的dns服务器地址
6.1.1 A记录地址解析
[root@bind-client ~]# dig -t A web.example.com #;开头的为注释; <<> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t A web.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24135
;; flags: qr aa rd ra; QUERY(查询请求): 1, ANSWER(返回的记录): 2, AUTHORITY(权威的记录): 1, ADDITIONAL(附加的): 2;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:  # (问题部分:发出的请求是什么)重点关注
;web.example.com.               IN      A;; ANSWER SECTION: # (答案部分:请求对应的的解析)重点关注
web.example.com.        86400   IN      A       10.0.0.10
web.example.com.        86400   IN      A       10.0.0.11;; AUTHORITY SECTION: # (授权部门:example.com. 是由dns.example.com. DNS服务器进行解析的)重点关注
example.com.            86400   IN      NS      dns.example.com.;; ADDITIONAL SECTION: # (附加部分:返回DNS服务器对应的地址)
dns.example.com.        86400   IN      A       10.0.0.10;; Query time: 0 msec # 查询时间:0毫秒
;; SERVER: 10.0.0.10#53(10.0.0.10) # 服务端
;; WHEN: Thu Jul 21 22:26:59 CST 2022
;; MSG SIZE  rcvd: 110[root@bind-client ~]# dig -t A web.example.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t A web.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40515
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;web.example.com.               IN      A;; ANSWER SECTION:
web.example.com.        86400   IN      A       10.0.0.11  # 第二次探测,就是11在前面了,证明了dns是轮询的
web.example.com.        86400   IN      A       10.0.0.10;; AUTHORITY SECTION:
example.com.            86400   IN      NS      dns.example.com.;; ADDITIONAL SECTION:
dns.example.com.        86400   IN      A       10.0.0.10;; Query time: 0 msec
;; SERVER: 10.0.0.10#53(10.0.0.10)
;; WHEN: Thu Jul 21 23:08:49 CST 2022
;; MSG SIZE  rcvd: 110
6.1.2 CNAME记录解析
[root@bind-client ~]# dig -t A www.example.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t A www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 5135
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.example.com.               IN      A;; ANSWER SECTION: # 返回了一条CNAME记录,返回的CNAME为web.dns.example.com
www.example.com.        86400   IN      CNAME   web.dns.example.com.;; AUTHORITY SECTION:
example.com.            10800   IN      SOA     dns.example.com. 1184964356.qq.com. 0 86400 3600 604800 10800;; Query time: 0 msec
;; SERVER: 10.0.0.10#53(10.0.0.10)
;; WHEN: Thu Jul 21 22:59:19 CST 2022
;; MSG SIZE  rcvd: 116
6.1.3 MX 邮件记录解析
[root@bind-client ~]# dig -t MX mail.example.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t MX mail.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20805
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mail.example.com.              IN      MX;; AUTHORITY SECTION:
example.com.            10800   IN      SOA     dns.example.com. 1184964356.qq.com. 0 86400 3600 604800 10800;; Query time: 0 msec
;; SERVER: 10.0.0.10#53(10.0.0.10)
;; WHEN: Thu Jul 21 23:02:23 CST 2022
;; MSG SIZE  rcvd: 99
6.1.4 NS 记录解析

查看谁来为这个域提供的解析

[root@bind-client ~]# dig -t NS example.com.; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t NS example.com.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7392
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.                   IN      NS;; ANSWER SECTION:
example.com.            86400   IN      NS      dns.example.com. # 返回的dns域名;; ADDITIONAL SECTION:
dns.example.com.        86400   IN      A       10.0.0.10 # 返回的地址;; Query time: 0 msec
;; SERVER: 10.0.0.10#53(10.0.0.10)
;; WHEN: Thu Jul 21 23:05:20 CST 2022
;; MSG SIZE  rcvd: 74
6.1.5 SOA 记录解析

可以查看这个域的主域名服务器

[root@bind-client ~]# dig -t SOA example.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t SOA example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53106
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.                   IN      SOA;; ANSWER SECTION:
example.com.            86400   IN      SOA     dns.example.com. 1184964356.qq.com. 0 86400 3600 604800 10800;; AUTHORITY SECTION:
example.com.            86400   IN      NS      dns.example.com.;; ADDITIONAL SECTION:
dns.example.com.        86400   IN      A       10.0.0.10;; Query time: 0 msec
;; SERVER: 10.0.0.10#53(10.0.0.10)
;; WHEN: Thu Jul 21 23:07:09 CST 2022
;; MSG SIZE  rcvd: 124
6.1.6 +trace 显示解析步骤
[root@bind-client ~]# dig -t A +trace www.baidu.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t A +trace www.baidu.com
;; global options: +cmd
.                       515235  IN      NS      f.root-servers.net. # 先查根服务器
.                       515235  IN      NS      a.root-servers.net.
.                       515235  IN      NS      g.root-servers.net.
.                       515235  IN      NS      b.root-servers.net.
.                       515235  IN      NS      c.root-servers.net.
.                       515235  IN      NS      e.root-servers.net.
.                       515235  IN      NS      i.root-servers.net.
.                       515235  IN      NS      m.root-servers.net.
.                       515235  IN      NS      d.root-servers.net.
.                       515235  IN      NS      l.root-servers.net.
.                       515235  IN      NS      k.root-servers.net.
.                       515235  IN      NS      j.root-servers.net.
.                       515235  IN      NS      h.root-servers.net.
;; Received 811 bytes from 10.0.0.10#53(10.0.0.10) in 1 mscom.                    172800  IN      NS      l.gtld-servers.net. #再查顶级域
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    86400   IN      DS      30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.                    86400   IN      RRSIG   DS 8 1 86400 20220803140000 20220721130000 20826 . cs8IhZCr5UhGbC1J8ICnf+tO1HMNuLuv19Mr+aFlOWg+5CqRd7jhIVLa 2MGJm8/tkb+0s0HZF2yLBcCzTwmH3gLtfnehwaBKEGwKDj1C3Ch+yxZJ wYPkCVUZRnisr+lbsCWFsgCp/sRFwENU0wMjtyZ+uteVL425SfQG/OPt Vd/t7EM5SM1CuCiXXt841EtSUSPBCazTSAIiRZa362HWnsYODRvrdsss 603Vvo7tCrf0im35rPXs2YEIm+W6HTiUFT86PBw0I6uRJkt978kl45Ex tkUe36vVWIH5SQjHMjSCgHBZ62hFmZBFW2MmSpujdHzaKaaSOZcAeb33 eKQPYw==
;; Received 1176 bytes from 192.33.4.12#53(c.root-servers.net) in 192 msbaidu.com.              172800  IN      NS      ns2.baidu.com. # 再查二级域
baidu.com.              172800  IN      NS      ns3.baidu.com.
baidu.com.              172800  IN      NS      ns4.baidu.com.
baidu.com.              172800  IN      NS      ns1.baidu.com.
baidu.com.              172800  IN      NS      ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q2D6NI4I7EQH8NA30NS61O48UL8G5 NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20220726042407 20220719031407 32298 com. huiwFXn8HYzbaAxygaOQ1u56Q+FaHv0IcXlhxkbQbspEo8fMAxRxFNPB hLfIxcAj1pz94qDtC9jKU1VaXBieRFL9C456YpFXsFSpEBgDrVjFMTe9 uZ1naNeB5BdIzVeDIC+TfAqwO3Zd/zCjReVOWhbu9SjqjZ3L0mI1zlHe k3cikyasb4N6u2DB9FIOin9CzERuz38CpJ4eNq1bvxV47g==
HPVUVSGH5TFIA7CM6SS6SMPOS87OE0CE.com. 86400 IN NSEC3 1 1 0 - HPVV8SARM2LDLRBTVC5EP1CUB1EF7LOP NS DS RRSIG
HPVUVSGH5TFIA7CM6SS6SMPOS87OE0CE.com. 86400 IN RRSIG NSEC3 8 2 86400 20220726054003 20220719043003 32298 com. q3Hm7XRPzeHMx1xSNAboNM3iQRER3PT4PGjlzQNVvUeQ9MyvXHDzg0y4 O7j+WWdKhyyWeT+QW8mG7K8vSPn1I239gIBQQl0YUd4Ri8gAqrE3hj1A KXfj0J8eWykkXiPar/8+10eMkZC/1CnwijUfFyRcIYxoK8xamqScKS1B guKkcqv0nF/EqNl5zIg+dDTpLbJhfrKo4XVjgOTjuW5WFw==
;; Received 817 bytes from 192.54.112.30#53(h.gtld-servers.net) in 186 mswww.baidu.com.          1200    IN      CNAME   www.a.shifen.com. # 最后查到完整域名
;; Received 72 bytes from 112.80.248.64#53(ns3.baidu.com) in 11 ms

6.2 host命令使用

**host命令用来做简单的主机名信息查询,用法与dig命令类似,但输出的信息要简洁得多。 **

6.2.1 解析A记录
[root@bind-client ~]# host -t A web.example.com
web.example.com has address 10.0.0.10
web.example.com has address 10.0.0.11
6.2.2 解析NS记录
[root@bind-client ~]# host -t NS example.com
example.com name server dns.example.com.
6.2.3 解析SOA记录
[root@bind-client ~]# host -t SOA example.com
example.com has SOA record dns.example.com. 1184964356.qq.com. 0 86400 3600 604800 10800

6.3 nslookup命令使用

nslookup是一个在Linux和Windows系统中都自带的DNS测试工具,与之前的两个命令不同,执行nslookup命令后默认将进入交互模式,用户可按照需要,输入指令进行交互式的操作。

6.3.1 解析A记录
[root@bind-client ~]# nslookup
> web.example.com
Server:         10.0.0.10 # 当前提供域名解析服务的服务器IP
Address:        10.0.0.10#53 # 当前提供域名解析服务的服务器IP和端口# 这部是解析域名和对应出来的IP地址 
Name:   web.example.com
Address: 10.0.0.10
Name:   web.example.com
Address: 10.0.0.11> www.baidu.com
Server:         10.0.0.10
Address:        10.0.0.10#53Non-authoritative answer: # 非权威应答,表示当前的解析记录是通过迭代查询到的,并不是从本地数据库中查到的(该域名不是本地DNS解析出来的就会这样)
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 112.80.248.76
Name:   www.a.shifen.com
Address: 112.80.248.75
6.3.2 解析NS记录
[root@bind-client ~]# nslookup
> set type=NS # 或者set q=NS也行
> example.com
Server:         10.0.0.10
Address:        10.0.0.10#53example.com     nameserver = dns.example.com.
6.3.3 解析MX记录
> example.com.
Server:         10.0.0.10
Address:        10.0.0.10#53example.com     mail exchanger = 10 mail.dns.example.com.

7. 配置DNS服务主从模式

从域名服务器主要是作为主域名服务器的备份,并可以帮助主域名服务器分担一定的域名解析压力。
这里需要重新准备一台新的虚拟机充当从DNS的角色。

7.1 修改主域名服务器配置

7.1.1 修改正向区域配置文件
[root@bind-01 /var/named]# cat example.com.zone
$TTL 1D
@       IN SOA  dns.example.com. 1184964356.qq.com. (0       ; serial # 更新序列号。每当主域名服务器的解析库(配置文件)内容发生变化时,这个序列号就需要手动+1,这样从服务器才会同步新的数据过去。 1D      ; refresh # 从域名服务器检查主域名服务器更新序列号的时间,默认1天。1H      ; retry # 重试时间。如果主从服务器之间同步失败,那么从域名服务器经过多长时间后会再次向主域名服务器发起同步请求。1W      ; expire # 过期时间。如果从域名服务器一直联系不到主域名服务器,那么经过多长时间后,从域名服务器会放弃自己的角色,停止提供服务。3H )    ; minimum # 无效解析记录的最小缓存时间。
@       IN      NS      dns.example.com.
@       IN      NS      dns2.example.com. # 因为新加了一台DNS服务器,所以这也要新加一条NS记录
dns     IN      A      10.0.0.10
dns2     IN      A      10.0.0.11 # 新加DNS服务器的A记录
web     IN      A      10.0.0.10
web     IN      A      10.0.0.11
www     IN      CNAME  web.dns.example.com.
mail    IN      A      10.0.0.10
@       IN      MX     10      mail.dns.example.com.
*       IN      A      10.0.0.10
@       IN      A      10.0.0.10
7.1.2 修改反向区域配置文件
[root@bind-01 /var/named]# cat 0.0.10.zone
$TTL 1D
@       IN SOA  dns.example.com. 1184964356.qq.com (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      dns.example.com.NS      dns2.example.com.
10      IN PTR  dns.example.com.
11      IN PTR  dns2.example.com.
10      IN PTR  www.example.com.
11      IN PTR  web.example.com.[root@bind-01 /var/named]# systemctl restart named

7.2 配置从域名服务器

需要把从的DNS指向主

7.2.1 安装Bind服务并启动
[root@bind-02 ~]# yum -y install bind
[root@bind-02 ~]# systemctl start named
[root@bind-02 ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
7.2.2 修改主配置文件
[root@bind-02 ~]# grep -v "^//" /etc/named.confoptions {listen-on port 53 { any; }; #改这里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; }; #改这里/*- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.- If you are building a RECURSIVE (caching) DNS server, you need to enablerecursion.- If your recursive DNS server has a public IP address, you MUST enable accesscontrol to limit queries to your legitimate users. Failing to do so willcause your server to become part of large scale DNS amplificationattacks. Implementing BCP38 within your network would greatlyreduce such attack surface*/recursion yes;dnssec-enable no; #改这里dnssec-validation no; #改这里/* Path to ISC DLV key */bindkeys-file "/etc/named.root.key";managed-keys-directory "/var/named/dynamic";pid-file "/run/named/named.pid";session-keyfile "/run/named/session.key";
};logging {channel default_debug {file "data/named.run";severity dynamic;};
};zone "." IN {type hint;file "named.ca";
};include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
7.2.3 修改子配置文件

创建查找区域(从服务器是同步的查找区域配置文件,所以还是需要创建查找区域)

[root@bind-02 ~]# cat /etc/named.rfc1912.zones
………………省略部分内容
zone "example.com" IN {type slave;file "slaves/example.com.zone"; # 这里推荐放在slaves目录下,因为该目录的属主属组都是named,并且不用写绝对路径,因为主配置文件已经定义了文件存放目录。masters { 10.0.0.10; }; # 指定master的地址
};
7.2.4 重启服务

服务重启后,从服务器会自动同步主域名服务器的区域查找配置文件

[root@bind-02 ~]# systemctl restart named
[root@bind-02 /var/named/slaves]# ll
total 4
-rw-r--r-- 1 named named 528 Jul 23 19:07 example.com.zone # 这个文件在从域名服务器是无法查看的

7.3 验证主从

7.3.1 修改客户端的DNS为从的IP
[root@bind-client ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.11
7.3.2 测试
[root@bind-client ~]# dig -t A web.example.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t A web.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64687
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;web.example.com.               IN      A;; ANSWER SECTION:
web.example.com.        86400   IN      A       10.0.0.10;; AUTHORITY SECTION:
example.com.            86400   IN      NS      dns2.example.com.
example.com.            86400   IN      NS      dns.example.com.;; ADDITIONAL SECTION:
dns.example.com.        86400   IN      A       10.0.0.10
dns2.example.com.       86400   IN      A       10.0.0.11;; Query time: 0 msec
;; SERVER: 10.0.0.11#53(10.0.0.11)
;; WHEN: Sat Jul 23 21:39:59 CST 2022
;; MSG SIZE  rcvd: 129[root@bind-client ~]# dig -t A www.example.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t A www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 55701
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.example.com.               IN      A;; ANSWER SECTION:
www.example.com.        86400   IN      CNAME   web.dns.example.com.;; AUTHORITY SECTION:
example.com.            10800   IN      SOA     dns.example.com. 1184964356.qq.com. 1 86400 3600 604800 10800;; Query time: 0 msec
;; SERVER: 10.0.0.11#53(10.0.0.11)
;; WHEN: Sat Jul 23 21:40:42 CST 2022
;; MSG SIZE  rcvd: 116

8. DNS的安全配置

8.1 为什么要做安全配置

辅助DNS服务器从主DNS服务器处获得查找区域数据的过程称为区域传送。默认情况下,主DNS服务器允许任意客户端与自己进行区域传送,这存在很大的安全隐患,因为这样任何客户端都可以从主DNS服务器那里获取到查找区域的所有记录数据。比如在客户端执行“dig -t axfr”命令模拟区域传送,就可以获取到指定查找区域中的所有主机记录。

[root@Client ~]# vim /etc/resolv.conf nameserver 192.168.80.20 
[root@Client ~]# host -t A www.example.com www.example.com has address 192.168.80.10 www.example.com has address 192.168.80.11 [root@Client ~]# host -t NS example.com example.com name server dns.example.com. example.com name server dns2.example.com. [root@Client ~]# host -t PTR 192.168.80.10 10.80.168.192.in-addr.arpa domain name pointer www.example.com. 10.80.168.192.in-addr.arpa domain name pointer dns.example.com. 

为了避免上述安全隐患,可在DNS服务器上设置只允许与指定的DNS服务器之间进行区域传送,这就需要添加allow-transfer设置项。比如添加设置项“allow-transfer { 192.168.80.20; };”就表示只允许与指定IP地址的DNS服务器进行区域传送,添加设置项“allow-transfer { none; };”则表示不允许与任何服务器进行区域传送。

8.2 模拟盗取主NDS的区域配置

[root@bind-client ~]# dig -t axfr example.com # axfr模拟区域传送(区域传送只能发生在主和从之间); <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t axfr example.com
;; global options: +cmd
example.com.            86400   IN      SOA     dns.example.com. 1184964356.qq.com. 1 86400 3600 604800 108                                                                              00
example.com.            86400   IN      NS      dns.example.com.
example.com.            86400   IN      NS      dns2.example.com.
example.com.            86400   IN      MX      10 mail.dns.example.com.
example.com.            86400   IN      A       10.0.0.10
*.example.com.          86400   IN      A       10.0.0.10
dns.example.com.        86400   IN      A       10.0.0.10
dns2.example.com.       86400   IN      A       10.0.0.11
mail.example.com.       86400   IN      A       10.0.0.10
web.example.com.        86400   IN      A       10.0.0.10
www.example.com.        86400   IN      CNAME   web.dns.example.com.
example.com.            86400   IN      SOA     dns.example.com. 1184964356.qq.com. 1 86400 3600 604800 108                                                                              00
;; Query time: 1 msec
;; SERVER: 10.0.0.11#53(10.0.0.11)
;; WHEN: Sat Jul 23 21:53:56 CST 2022
;; XFR size: 12 records (messages 1, bytes 313)

8.3 配置区域传送(主DNS)

8.3.1 修改主DNS的子配置文件(也可以改主配置文件)
[root@bind-01 /var/named]# cat /etc/named.rfc1912.zones
zone "example.com" IN {type master;file "example.com.zone";allow-update { none; };allow-transfer { 10.0.0.11;}; # 指定允许进行区域传送的主机
};[root@bind-01 /var/named]# systemctl restart named
8.3.2 修改从DNS的主配置文件
[root@bind-02 ~]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.htmloptions {listen-on port 53 { any; };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; };allow-transfer { none;}; # 添加这里,因为从服务器不需要任何服务器来同步,所以直接设置成none
……省略部分输出[root@bind-02 ~]# systemctl restart name
8.3.3 测试
[root@bind-client ~]# dig -t axfr example.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t axfr example.com
;; global options: +cmd
; Transfer failed.

9. 检查配置文件语法

9.1 检查主配置文件语法正确性

# 如果配置文件没有问题,该命令不会输出任何内容。如果有错误,它会显示具体的错误信息。
named-checkconf /etc/named.conf

9.2 检查区域配置文件语法正确性

#$ named-checkzone xxx.com /var/named/xxx.com.zone
zone xxx.com/IN: loaded serial 1234567890
OK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/893061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM - 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM) 教程(2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145188660 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Scalin…

杰盛微 IRS2336STRPBF 700V带使能和故障报告的三相反逻辑驱动芯片 SOP28封装

IRS2336STRPBF 700V带使能和故障报告的三相反逻辑驱动芯片 IRS2336是 N型高压、高速功率 MOSFET/IGBT高低侧三相栅极驱动芯片&#xff0c;包含三路独立的半桥驱动电路。内部集成了欠压保护和过流保护功能&#xff0c;出现异常时立即关断六通道输出。提供外部使能控制可同时关断…

深入理解第三范式(3NF):数据库设计中的重要性与实践

title: 深入理解第三范式(3NF):数据库设计中的重要性与实践 date: 2025/1/17 updated: 2025/1/17 author: cmdragon excerpt: 在数据库设计中,规范化是确保数据完整性、减少冗余和提高查询效率的关键过程。第三范式(3NF)作为关系数据库设计的高级规范,建立在前两范式…

mongoose 支持https踩坑纪实

简述 mongoose是C编写的嵌入式web服务&#xff0c;它能够支持https协议&#xff0c;可以简单的部署&#xff0c;但要做到完美部署&#xff0c;不是那么容易。 部署方法 本人使用的是最新的7.16版&#xff0c;以前版本似乎是要通过修改 头文件中的 MG_ENABLE_SSL 宏定义&…

RK3576 Android14 状态栏和导航栏增加显示控制功能

问题背景&#xff1a; 因为RK3576 Android14用户需要手动控制状态栏和导航栏显示隐藏控制&#xff0c;包括对锁屏后下拉状态栏的屏蔽&#xff0c;在设置功能里增加此功能的控制&#xff0c;故参考一些博客完成此功能&#xff0c;以下是具体代码路径的修改内容。 解决方案&…

C#高级:通过 Assembly 类加载 DLL 和直接引用DLL的方法大全

一、主项目不添加引用 &#xff08;主项目不添加引用&#xff0c;而是通过路径获取指定dll&#xff09; 1.打印类的属性名称 namespace ReflectionDemo {class Program{static void Main(string[] args){// 指定【编译输出】的项目类库dll&#xff08;启动项目编译输出目录下…

【k8s面试题2025】1、练气期

主要通过呼吸吐纳等方法&#xff0c;将外界的天地灵气吸入体内&#xff0c;初步改造身体&#xff0c;使身体素质远超常人。 文章目录 docker 和虚拟机的不同Kubernetes 和 docker 的关系Kube-proxy IPVS 和 iptables 的异同蓝绿发布Kubernetes中常见的数据持久化方式关于 Docke…

音视频入门基础:RTP专题(4)——FFmpeg源码中,判断某文件是否为SDP文件的实现

一、引言 执行《音视频入门基础&#xff1a;RTP专题&#xff08;2&#xff09;——使用FFmpeg命令生成RTP流》中的“媒体文件转推RTP的FFmpeg命令”会生成一个SDP文件&#xff0c;该文件内容如下&#xff1a; v0 o- 0 0 IN IP4 127.0.0.1 sNo Name t0 0 atool:libavformat 61…

【大数据2025】Hadoop 万字讲解

文章目录 一、大数据通识大数据诞生背景与基本概念大数据技术定义与特征大数据生态架构概述数据存储数据计算与易用性框架分布式协调服务和任务调度组件数仓架构流处理架构 二、HDFSHDFS 原理总结一、系统架构二、存储机制三、数据写入流程四、心跳机制与集群管理 安全模式&…

电脑换固态硬盘

参考&#xff1a; https://baijiahao.baidu.com/s?id1724377623311611247 一、根据尺寸和缺口可以分为以下几种&#xff1a; 1、M.2 NVME协议的固态 大部分笔记本是22x42MM和22x80MM nvme固态。 在京东直接搜&#xff1a; M.2 2242 M.2 2280 2、msata接口固态 3、NGFF M.…

回顾2024年在CSDN的成长

文章目录 我与CSDN的初次邂逅初学阶段的阅读CSDN&#xff1a;编程新手的避风港初学者的福音&#xff1a;细致入微的知识讲解考试复习神器&#xff1a;技术总结的“救命指南”曾经的自己&#xff1a;为何迟迟不迈出写博客的第一步兴趣萌芽&#xff1a;从“读”到“想写”的初体验…

抖音ip属地不准是什么原因?可以改吗

在数字化时代&#xff0c;社交媒体平台如抖音已成为人们日常生活的重要组成部分。随着各大平台对用户隐私和数据安全的日益重视&#xff0c;IP属地的显示功能应运而生。然而&#xff0c;不少抖音用户在使用过程中发现&#xff0c;显示的IP属地与实际位置存在偏差&#xff0c;这…

Win11 安装与配置 Java环境 JDK(以JDK11为例)

0&#xff0c;下载JDK 访问JDK官网&#xff1a;Java Downloads | Oracle 选择对应版本进行下载&#xff0c;目前21和23都是可以直接下载的 但是如果需要下载旧版本&#xff0c;往下拉找到要下载的版本&#xff0c;不过这时候下载就需要登录账号了&#xff0c;注册一个就成 2&…

LabVIEW串口通信调试与数据接收问题

在使用LabVIEW进行串口通信时&#xff0c;常常会遇到无法接收数据的情况。这可能与串口设置、连接、设备响应等多方面因素相关。本文将详细讨论如何使用LabVIEW进行串口通信&#xff0c;并提供常见问题的排查与解决方法&#xff0c;帮助用户更高效地进行数据接收调试。通过调整…

概率扩散去噪模型DDPM

文章目录 摘要abstract高斯噪声扩散模型正向过程逆向过程 论文阅读论文创新点解决的问题 总结参考文献 摘要 本周主要学习了高斯噪声在扩散模型中的应用及相关算法实现。扩散模型受到自然现象的启发&#xff0c;通过在图像中引入高斯噪声&#xff0c;模拟出扩散效果&#xff0…

Python操作Excel——openpyxl使用笔记(3)

3 单元格基本操作 3.1 访问单元格和读写其内容 在前面的例子中&#xff0c;已经简单演示过了向单元格中写入和读取数据。这里进一步提供访问单元格的一些方法。和前面一样&#xff0c;使用工作表的索引方式&#xff0c;可以快速定位一个单元格&#xff1a; import openpyxl w…

2025.1.18机器学习笔记:PINN文献精读

第三十周周报 一、文献阅读题目信息摘要Abstract创新点物理背景网络框架实验实验一&#xff1a;直道稳定流条件实验二&#xff1a;环状网络中的非稳定流条件 结论缺点及展望 二、代码实践总结 一、文献阅读 题目信息 题目&#xff1a;《Enhanced physics-informed neural net…

CSS 的基础知识及应用

前言 CSS&#xff08;层叠样式表&#xff09;是网页设计和开发中不可或缺的一部分。它用于描述网页的视觉表现&#xff0c;使页面不仅实现功能&#xff0c;还能提供吸引人的用户体验。本文将介绍 CSS 的基本概念、语法、选择器及其在提升网页美观性方面的重要性。 什么是 CSS&…

Web开发 -前端部分-CSS-2

一 长度单位 代码实现&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

Linux shell zip 命令实现不切换当前终端的工作目录打包另一个路径下的文件和文件夹

如图&#xff0c;我想在当前目录 ~/Bypasser 下打包 src 文件夹&#xff0c;使得生成的 zip 压缩包中具有 src 文件夹下的所有文件夹、所有文件夹中的所有子项目、所有文件&#xff0c;保留层次结构但压缩包中最外面不包含 src 这一层。执行命令时&#xff0c;不要改变当前终端…