DNS: 使用 Bind 9 配置权威 DNS 服务器

写在前面


  • 分享一些通过 Bind9 配置DNS服务器的笔记
  • 博文内容涉及 一个基本的 DNS 权威服务器 配置流程
  • 理解不足小伙伴帮忙指正

我承认爱情是空幻的,只有情感才是真实的,是情感在促使我们去追求,使我们产生爱情的真正的美 ----卢梭《爱弥儿》


DNS 部署

DNS 系统中,权威 DNS 用于存储 DNS 资源记录,并为其管理的区域提供权威答案

BIND9 (Berkeley Internet Name Domain)可以实现权威的 DNS 服务器。BIND 允许将 权威服务器 配置为 zone主要 服务器或辅助服务器

官网地址: http://www.isc.org/bind/

在 DNS 系统中,zone 有且只能有一台服务器,但可具有多台辅助服务器。辅助服务器定期从主服务器下载区域信息的最新版本。它们执行区域传输的频率以及如何知道其数据是否过时由区域的SOA资源记录控制。

SOA 资源记录,也叫做起始授权机构记录,提供有关 DNS 区域如何运行的信息。每个区域必须有一个 SOA 记录

example.com.  86400 IN SOA classroom.example.com. root.classroom.example.com.  
                    2015071700  
                    3600  
                    300  
                    604800  
                    60
  • MNAME | classroom.example.com. : 该 DNS 服务器是这个区域主要 DNS 服务器负责维护区域资源记录。
  • RNAME | root.classroom.example.co :该区域中负责人邮件地址,(@用.代替,例如root@classroom.example.com.
  • SERIAL | 2015071700 :该区域版本号,随着区域中记录更改而增加。
  • REFRESH | 3600 : 从 DNS 服务器向主 DNS 服务器更新数据频.单位秒。
  • RETRY | 300 : 在重试失败的刷新前,应当等待的时间间隔。单位秒。
  • EXPIRE | 604800 : 如果刷新失败,从服务器在停止其旧的区域副本响应查询之前等待的时间。单位秒。
  • MINIMUM:| 60 :如果解析器查找某个名称,并且该名称不存在,解析器应将“记录不存在”这一信息缓存的时间。单位秒。

部署 Bind9 权威服务器

基本步骤

  1. 安装 bind 软件
  2. 修改配置文件 /etc/named.conf
  3. 启用并启动服务 named.service
  4. 开通防火墙 dns

虽然名字叫 bind,但主要服务,以及配置文件都是 叫 named

bind9 安装

[root@serverb ~]# yum -y install bind

简单看一下服务文件

# /usr/lib/systemd/system/named.service
[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Wants=named-setup-rndc.service
Before=nss-lookup.target
After=named-setup-rndc.service
After=network.target

[Service]
Type=forking
Environment=NAMEDCONF=/etc/named.conf
EnvironmentFile=-/etc/sysconfig/named
Environment=KRB5_KTNAME=/etc/named.keytab
PIDFile=/run/named/named.pid

ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi'
ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS

ExecReload=/bin/sh -c '/usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID'

ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'

PrivateTmp=true

[Install]
WantedBy=multi-user.target
~

配置

named 主要配置文件是 /etc/named.conf,该文件控制 BIND 的基本操作,由 root用户和 named 组拥有,具有权限 0640,并且具有named_conf_t SELinux类型。

配置DNS服务器需要执行以下步骤:

  • 配置地址匹配列表
  • 配置 named 侦听的IP地址
  • 配置 客户端 的访问控制
  • 配置 zone(区域)
  • 编写 区域文件

默认配置:

  • 将服务配置为基本的递归缓存名称服务器
  • 侦听IPv4和IPV6环回接口的端口 53 UDP/TCP(127.0.0.1和::1)上的连接。
  • 每个区域的配置文件保存在 /var/named 中。
[student@serverb ~]$ man named.conf

定义地址匹配列表

使用 acl 指令定义地址匹配列表。acl 指令不是用于控制客户端对服务器的访问,而是使用它们来定义IP地址和网络列表。

条目可以是完整的IP地址或网络,用尾点(192.168.0.)CIDR表示法(192.168.0/24),也可以使用先前定义的地址匹配列表的名称。acl语句定义的地址集可以被多个指令引用。

可以单纯的理解为 acl 别名, 示例:

acl trusted  {  172.25.250.11; 192.168.0.11; };
acl internal {  172.25.250.0/24; };
acl classroom { 192.168.0.0/24; trusted; };

named 中内置了四个ACL

ACL: Description
none :Matches no hosts.
any :Matches all hosts.
localhost :Matches all IP addresses of the DNS server.
localnets :Matches all hosts from the DNS server’s local subnets.

配置客户端的访问控制

options 块中使用以下三个指令配置控制访问:

allow-query,控制所有查询

默认情况下,allow-query 设置为 localhost。对于公开权威服务器必须定义为allow-query{any;};允许任意客户端查询。

allow-query{localhost;172.25.250.254;192.168.0.0/24;};

allow-recursion,控制递归查询

权威服务器不应允许递归查询,防止服务器被用于DNS放大分布式拒绝服务攻击,并更好地保护其免受缓存中毒攻击。配置此功能最简单的方法是完全关闭递归:recursion no;如果必须允许受信任的客户端执行递归,则可以打开递归并为这些特定主机或网络设置:

allow-recursion{trusted-nets;};

allow-transfer,控制区域转移

区域转移允许客户端获取您 区域中所有数据的转储。区域转移应该受到限制,以使潜在的攻击者更难执行一个DNS查询来快速获取您区域中的所有资源记录。

主服务器必须配置允许转移,以允许您的从服务器执行区域转移。您应该禁止其他主机执行区域传输。您可能允许localhost执行区域传输以帮助进行故障排除。

zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    allow-transfer { 192.168.1.1; };
};

配置 zone

默认的 zone 文件

[root@serverb named]# ls
data     named.ca     named.localhost  slaves
dynamic  named.empty  named.loopback
[root@serverb named]#

根域服务器的 zone 文件

在 DNS 中,. 表示根域名(root domain),它是所有其他域名的顶级域名。根域名由一组根 DNS 服务器维护,这些服务器存储了所有顶级域名的 DNS 服务器地址。当一个 DNS 客户端需要解析一个域名时,它会向根 DNS 服务器发出查询请求,以获取该域名的顶级域名的 DNS 服务器地址。

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

type hint 表示该区域是一个提示(hint)区域,它包含了其他 DNS 服务器的地址信息

对应配置文件中 directory "/var/named";中对应的文件

[root@serverb named]# cat named.ca

; <<>> DiG 9.11.3-RedHat-9.11.3-3.fc27 <<>> +bufsize=1200 +norec @a.root-servers.net
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46900
;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1472
;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       518400  IN      NS      a.root-servers.net.
.                       518400  IN      NS      b.root-servers.net.
.                       518400  IN      NS      c.root-servers.net.
.                       518400  IN      NS      d.root-servers.net.
.......
.                       518400  IN      NS      m.root-servers.net.

;; ADDITIONAL SECTION:
a.root-servers.net.     518400  IN      A       198.41.0.4
b.root-servers.net.     518400  IN      A       199.9.14.201
c.root-servers.net.     518400  IN      A       192.33.4.12
d.root-servers.net.     518400  IN      A       199.7.91.13
.......
m.root-servers.net.     518400  IN      A       202.12.27.33
a.root-servers.net.     518400  IN      AAAA    2001:503:ba3e::2:30
b.root-servers.net.     518400  IN      AAAA    2001:500:200::b
c.root-servers.net.     518400  IN      AAAA    2001:500:2::c
d.root-servers.net.     518400  IN      AAAA    2001:500:2d::d
e.root-servers.net.     518400  IN      AAAA    2001:500:a8::e
f.root-servers.net.     518400  IN      AAAA    2001:500:2f::f
.........
m.root-servers.net.     518400  IN      AAAA    2001:dc3::35

;; Query time: 24 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Thu Apr 05 15:57:34 CEST 2018
;; MSG SIZE  rcvd: 811

[root@serverb named]#

主根域名服务器是 DNS 系统中最高层次的服务器,它们存储着所有顶级域名的 DNS 服务器地址信息。目前,主根域名服务器共有 13 台,它们分别由不同的组织和机构管理,位于世界各地。这些主根域名服务器的名称分别为 a.root-servers.net 到 m.root-servers.net

在配置文件中,我们可以看到其他的 zone 文件通过引入的方式实现


include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

查看 zone 文件信息 "/etc/named.rfc1912.zones";

[root@serverb named]# cat /etc/named.rfc1912.zones
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

// 当前 zone 的为master 服务器,解析由文件 named.localhost 决定
zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};

[root@serverb named]#

zone 解释

zone "localhost.localdomain":

  • 该区域的名称是 localhost.localdomain
  • 类型是 master,
  • 使用文件 named.localhost 来存储该区域的数据
  • 该区域不允许更新(allow-update { none; })

zone "1.0.0.127.in-addr.arpa":

  • 该区域的名称是 1.0.0.127.in-addr.arpa
  • 类型是 master,使用文件 named.loopback 来存储该区域的数据。
  • 该区域不允许更新(allow-update { none; })。

具体区域数据文件

[root@serverb named]# cat named.localhost
$TTL 1D
@       IN SOA  @ rname.invalid. (              ;@ 是一个特殊的符号,表示当前域名本身
                                        0       ; serial,序列号
                                        1D      ; refresh,刷新时间
                                        1H      ; retry,重试时间
                                        1W      ; expire,过期时间
                                        3H )    ; minimum,最小时间间隔
        NS      @                               ; name server,域名服务器
        A       127.0.0.1                       ;      IPv4 地址
        AAAA    ::1                             ; IPv6 地址
[root@serverb named]#

数据文件包括:

  • SOA 记录:DNS 区域如何运行的信息
  • NS 记录: 每个权威 DNS 服务器都必须有其 NS 记录,将域名映射到 DNS 服务器或者权威DNS
  • A 记录 :IPV4 正向解析
  • AAAA 记录:ipv6 正向解析
[root@serverb named]# cat named.loopback
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        PTR     localhost.
[root@serverb named]#

除了上面的配置,多了一条 PTR localhost.,用于 IP 地址 到 域名的反向解析

防火墙放行

配置完对应的 zone 文件,启动 named 之前需要放行防火墙相关配置,然后设置开机自启

[root@serverb ~]# firewall-cmd --add-service=dns --permanent
success
[root@serverb ~]# firewall-cmd --reload
success
[root@serverb ~]# systemctl enable named.service --now

默认配置文件说明

[root@serverb ~]# cat /etc/named.conf
// named.conf
// 这是一个 DNS 服务器配置文件,用于配置 ISC BIND named(8) DNS 服务器作为一个只提供缓存服务的本地 DNS 解析器。

// 定义一个名为 trusted 的 ACL,包含两个 IP 地址,用于限制可以访问 DNS 服务器的 IP 地址。
acl trusted  {  172.25.250.11; 192.168.0.11; };
// 定义一个名为 internal 的 ACL,包含一个 IP 地址段,用于限制可以访问 DNS 服务器的 IP 地址。
acl internal {  172.25.250.0/24; };
// 定义一个名为 classroom 的 ACL,包含一个 IP 地址段和一个名为 trusted 的 ACL,用于限制可以访问 DNS 服务器的 IP 地址。
acl classroom { 192.168.0.0/24; trusted; };

// 配置选项
options {
        // 监听任意 IPv4 地址的 53 端口
        listen-on port 53 { any; };
        // 监听任意 IPv6 地址的 53 端口
        listen-on-v6 port 53 { any; };
        // 指定 DNS 数据文件的存储目录
        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";
        // 指定 DNSSEC 安全根密钥文件的存储路径
        secroots-file   "/var/named/data/named.secroots";
        // 指定递归查询缓存文件的存储路径
        recursing-file  "/var/named/data/named.recursing";
        // 允许查询 DNS 数据的客户端 IP 地址
        allow-query     { localhost; classroom; };
        /*
         - 如果你正在构建一个权威 DNS 服务器,请不要启用递归查询。
         - 如果你正在构建一个递归查询(缓存)DNS 服务器,请启用递归查询。
         - 如果你的递归 DNS 服务器有一个公共 IP 地址,你必须启用访问控制,以限制查询到合法的用户。如果不这样做,你的服务器将成为大规模 DNS 放大攻击的一部分。在你的网络中实施 BCP38 将大大减少这种攻击面。
        */
        // 禁止递归查询
        recursion no;

        // 启用 DNSSEC 安全根密钥验证
        dnssec-enable yes;
        // 启用 DNSSEC 数据验证
        dnssec-validation yes;

        // 指定动态密钥的存储目录
        managed-keys-directory "/var/named/dynamic";

        // 指定 PID 文件的存储路径
        pid-file "/run/named/named.pid";
        // 指定会话密钥文件的存储路径
        session-keyfile "/run/named/session.key";

        /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
        // 包含加密策略配置文件
        include "/etc/crypto-policies/back-ends/bind.config";
};

// 配置日志记录
logging {
        // 定义一个名为 default_debug 的日志通道,将日志输出到 data/named.run 文件中
        channel default_debug {
                file "data/named.run";
                // 日志级别为动态调整
                severity dynamic;
        };
};

// 配置根域名服务器
zone "." IN {
        // 指定该区域为“提示”类型,即提示 DNS 服务器根域名服务器的 IP 地址
        type hint;
        // 指定根域名服务器的数据文件
        file "named.ca";
};

// 包含 RFC1912 中定义的标准 DNS 区域文件配置
include "/etc/named.rfc1912.zones";
// 包含根域名服务器的公钥
include "/etc/named.root.key";


[root@serverb ~]#

测试

使用 dig 命令在 serverb 上查询 localhost.localdomainDNS 解析结果。

其中 @172.25.250.11 表示使用 IP 地址为 172.25.250.11 的 DNS 服务器进行查询,输出信息中的

  • status: REFUSED 表示查询被拒绝,
  • WARNING: recursion requested but not available 表示递归查询不可用。
[student@servera ~]$ dig  @serverb localhost.localdomain @172.25.250.11

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> @serverb localhost.localdomain @172.25.250.11
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 56767
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: f08d1204f74faabe21d039db63f384b8068d2e4c06fc6f50 (good)
;; QUESTION SECTION:
;localhost.localdomain.         IN      A

;; Query time: 0 msec
;; SERVER: 172.25.250.11#53(172.25.250.11)
;; WHEN: Mon Feb 20 22:33:28 CST 2023
;; MSG SIZE  rcvd: 78

servera 上使用 dig 命令查询 localhost.localdomain 的 DNS 解析结果。

其中 @192.168.0.11 表示使用 IP 地址为 192.168.0.11 的 DNS 服务器进行查询。输出信息中的

  • status: NOERROR 表示查询成功
  • flags: qr aa rd 表示查询是一个回答(answer)查询,使用了授权(authoritative)回答和递归(recursion desired)查询。
  • ANSWER SECTION 中的 127.0.0.1 表示 localhost.localdomain 的 IP 地址为 127.0.0.1。
  • AUTHORITY SECTION 中的 localhost.localdomain. 表示 localhost.localdomain 的授权 DNS 服务器为本地主机。
  • ADDITIONAL SECTION 中的 ::1 表示 localhost.localdomain 的 IPv6 地址为 ::1。
[student@servera ~]$ dig  localhost.localdomain @192.168.0.11

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> localhost.localdomain @192.168.0.11
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65182
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: efa0893e5d57752d3c67034563f388fb9f496bfc771dadb4 (good)
;; QUESTION SECTION:
;localhost.localdomain.         IN      A

;; ANSWER SECTION:
localhost.localdomain.  86400   IN      A       127.0.0.1

;; AUTHORITY SECTION:
localhost.localdomain.  86400   IN      NS      localhost.localdomain.

;; ADDITIONAL SECTION:
localhost.localdomain.  86400   IN      AAAA    ::1

;; Query time: 9 msec
;; SERVER: 192.168.0.11#53(192.168.0.11)
;; WHEN: Mon Feb 20 22:51:39 CST 2023
;; MSG SIZE  rcvd: 136

[student@servera ~]$

实战

当前权威服务器添加一个 zone

我们希望配置下面的一个 zone 到当前权威名称服务器

下面为 zone 相关的配置

zone "blog.liruilong.com" IN {
        type master;
        file "blog.liruilong.com.zone";
        forwarders {};
};

添加完,需要检测配置文件是否正确

[root@serverb ~]# named-checkconf  /etc/named.conf

然后我们编写对应的 zone 数据文件,赋予相关权限,编写完检测 数据文件

[root@serverb ~]# chmod 640 /var/named/blog.liruilong.com.zone
[root@serverb ~]# chgrp named /var/named/blog.liruilong.com.zone
[root@serverb ~]# named-checkzone blog.liruilong.com /var/named/blog.liruilong.com.zone
zone blog.liruilong.com/IN: has no NS records
zone blog.liruilong.com/IN: not loaded due to errors.
[root@serverb ~]# cat /var/named/blog.liruilong.com.zone
$TTL 300
@ IN SOA serverb.lab.example.com. dnslab.example.com. (
 2023072900 ; serial
 1H ; refresh
 5M ; retry
 1W ; expire
 1M ) ; minimum
600 IN NS serverb.


serverb IN A 192.168.0.11
servera IN A 192.168.0.10

这里发现有两个报错,提示 NS 记录配置的有问题,修改完配置,重新启动,每个 zone 需要一个 NS 记录,将域名映射到 DNS 服务器或者权威DNS

[root@serverb ~]# systemctl  restart  named
[root@serverb ~]# named-checkzone blog.liruilong.com /var/named/blog.liruilong.com.zone
zone blog.liruilong.com/IN: loaded serial 2023072900
OK
[root@serverb ~]# cat /var/named/blog.liruilong.com.zone
$TTL 300
@ IN SOA serverb.blog.liruilong.com. dnslab.example.com. (
 2023072900 ; serial
 1H ; refresh
 5M ; retry
 1W ; expire
 1M ) ; minimum
    600 IN      NS      serverb.blog.liruilong.com.

serverb IN A 192.168.0.11
servera IN A 192.168.0.10

[root@serverb ~]#

使用 dig 命令测试

[root@serverb ~]# dig servera.blog.liruilong.com. @serverb

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> servera.blog.liruilong.com. @serverb
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28751
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: d8a667097d1cbf82e34d02ab64c647d0333415b139a9ef0d (good)
;; QUESTION SECTION:
;servera.blog.liruilong.com.    IN      A

;; ANSWER SECTION:
servera.blog.liruilong.com. 300 IN      A       192.168.0.10

;; AUTHORITY SECTION:
blog.liruilong.com.     600     IN      NS      serverb.blog.liruilong.com.

;; ADDITIONAL SECTION:
serverb.blog.liruilong.com. 300 IN      A       192.168.0.11

;; Query time: 0 msec
;; SERVER: 172.25.250.11#53(172.25.250.11)
;; WHEN: Sun Jul 30 19:21:52 CST 2023
;; MSG SIZE  rcvd: 137

[root@serverb ~]#

配置 DNS ipv4 正向反向解析

serverb配置主 DNS:

  • 配置正向解析servera,serverc 地址分别为172.25.250.10, 172.25.250.12
  • 配置反向解析servera,serverc
正向解析
zone "blog.liruilong.com" IN {
        type master;
        file "blog.liruilong.com.zone";
        forwarders {};
};
[root@serverb ~]# cat  /var/named/blog.liruilong.com.zone
$TTL 300
@ IN SOA serverb.blog.liruilong.com. dnslab.example.com. (
 2023072900 ; serial
 1H ; refresh
 5M ; retry
 1W ; expire
 1M ) ; minimum
    600 IN      NS      serverb.blog.liruilong.com.

serverb IN A 172.25.250.11
serverc IN A 172.25.250.12
servera IN A 172.25.250.10

[root@serverb ~]#
[root@serverb ~]# vim /var/named/blog.liruilong.com.zone
[root@serverb ~]# named-checkzone  blog.liruilong.com.zone /var/named/blog.liruilong.com.zone
zone blog.liruilong.com.zone/IN: loaded serial 2023072900
OK
[root@serverb ~]# systemctl  restart  named
[root@serverb ~]# dig serverc.blog.liruilong.com. @serverb

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> serverc.blog.liruilong.com. @serverb
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9608
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 196c643e805924a3ea772e3264c649cef6a873b5c3803907 (good)
;; QUESTION SECTION:
;serverc.blog.liruilong.com.    IN      A

;; ANSWER SECTION:
serverc.blog.liruilong.com. 300 IN      A       172.25.250.12

;; AUTHORITY SECTION:
blog.liruilong.com.     600     IN      NS      serverb.blog.liruilong.com.

;; ADDITIONAL SECTION:
serverb.blog.liruilong.com. 300 IN      A       172.25.250.11

;; Query time: 0 msec
;; SERVER: 172.25.250.11#53(172.25.250.11)
;; WHEN: Sun Jul 30 19:30:22 CST 2023
;; MSG SIZE  rcvd: 137

解析测试

[root@serverb ~]# dig servera.blog.liruilong.com. @172.25.250.11

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> servera.blog.liruilong.com. @172.25.250.11
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37549
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 7e67c9a9f9d30b3df695a33864c64a1bb0d653a623775fd6 (good)
;; QUESTION SECTION:
;servera.blog.liruilong.com.    IN      A

;; ANSWER SECTION:
servera.blog.liruilong.com. 300 IN      A       172.25.250.10

;; AUTHORITY SECTION:
blog.liruilong.com.     600     IN      NS      serverb.blog.liruilong.com.

;; ADDITIONAL SECTION:
serverb.blog.liruilong.com. 300 IN      A       172.25.250.11

;; Query time: 0 msec
;; SERVER: 172.25.250.11#53(172.25.250.11)
;; WHEN: Sun Jul 30 19:31:39 CST 2023
;; MSG SIZE  rcvd: 137

[root@serverb ~]#
反向解析
zone "25.172.in-addr.arpa" IN {
        type master;
        file "25.172.loopback"
        allow-update { none; };

};
[root@serverb ~]# named-checkconf  /etc/named.conf
/etc/named.conf:67: missing ';' before 'allow-update'
[root@serverb ~]# vim /etc/named.conf
[root@serverb ~]# named-checkconf  /etc/named.conf
[root@serverb ~]#
zone "25.172.in-addr.arpa" IN {
        type master;
        file "25.172.loopback";
        allow-update { none; };

};
[root@serverb ~]# cat /var/named/25.172.loopback
$TTL 1D
@       IN SOA  serverb.blog.liruilong.com rname.invalid. (
                                        2023073000       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      serverb.blog.liruilong.com.
10.250       PTR     servera.blog.liruilong.com.
11.250       PTR     serverb.blog.liruilong.com.
12.250       PTR     serverc.blog.liruilong.com.
[root@serverb ~]#

DNS解析测试工具

除了上面的 dig 命令,这里在分析其他的一些工具。

正反向解析测试,这里我们使用 host 命令,它是 bind-utils 中的一个命令

[root@serverb ~]# vim /var/named/25.172.loopback
[root@serverb ~]# systemctl  restart  named
[root@serverb ~]# host serverc.blog.liruilong.com 172.25.250.11
Using domain server:
Name: 172.25.250.11
Address: 172.25.250.11#53
Aliases:

serverc.blog.liruilong.com has address 172.25.250.12
[root@serverb ~]# host servera.blog.liruilong.com 172.25.250.11
Using domain server:
Name: 172.25.250.11
Address: 172.25.250.11#53
Aliases:

servera.blog.liruilong.com has address 172.25.250.10
[root@serverb ~]# host 172.25.250.10 172.25.250.11
Using domain server:
Name: 172.25.250.11
Address: 172.25.250.11#53
Aliases:

10.250.25.172.in-addr.arpa domain name pointer servera.blog.liruilong.com.
[root@serverb ~]#

也可以使用 nslookup,该命令同样适用于 windows

[root@serverb ~]# nslookup  servera.blog.liruilong.com 172.25.250.11
Server:         172.25.250.11
Address:        172.25.250.11#53

Name:   servera.blog.liruilong.com
Address: 172.25.250.10

[root@serverb ~]# nslookup 172.25.250.10 172.25.250.11
10.250.25.172.in-addr.arpa      name = servera.blog.liruilong.com.

[root@serverb ~]#

博文部分内容参考

文中涉及参考链接内容版权归原作者所有,如有侵权请告知


https://www.isc.org/bind/

<RH358 授课课堂笔记>


© 2018-2023 liruilonger@gmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山河已无恙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值