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.pidExecStartPre=/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} $OPTIONSExecReload=/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       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      @A       127.0.0.1AAAA    ::1PTR     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 ; serial1H ; refresh5M ; retry1W ; expire1M ) ; 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 ; serial1H ; refresh5M ; retry1W ; expire1M ) ; minimum600 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 ; serial1H ; refresh5M ; retry1W ; expire1M ) ; minimum600 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       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      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#53Name:   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)

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

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

相关文章

第17章-Spring AOP经典应用场景

文章目录 一、日志处理二、事务控制三、参数校验四、自定义注解五、AOP 方法失效问题1. ApplicationContext2. AopContext3. 注入自身 六、附录1. 示例代码 AOP 提供了一种面向切面操作的扩展机制&#xff0c;通常这些操作是与业务无关的&#xff0c;在实际应用中&#xff0c;可…

Netty框架自带类DefaultEventExecutorGroup的作用,用来做业务的并发

一、DefaultEventExecutorGroup的用途 DefaultEventExecutorGroup 是 Netty 框架中的一个类&#xff0c;用于管理和调度事件处理器&#xff08;EventExecutor&#xff09;的组。在 Netty 中&#xff0c;事件处理是通过多线程来完成的&#xff0c;EventExecutor 是处理事件的基…

数据结构 二叉树(一篇基本掌握)

绪论 雄关漫道真如铁&#xff0c;而今迈步从头越。 本章将开始学习二叉树&#xff08;全文共一万两千字&#xff09;&#xff0c;二叉树相较于前面的数据结构来说难度会有许多的攀升&#xff0c;但只要跟着本篇博客深入的学习也可以基本的掌握基础二叉树。 话不多说安全带系好&…

Elasticsearch3节点集群配置账号密码安全验证

Elasticsearch3节点集群配置账号密码安全验证 ES配置文件 rootnode1:~# grep -Ev "^#|^$" /etc/elasticsearch/elasticsearch.yml cluster.name: es-pre node.name: node1 node.master: true node.data: true path.data: /data/elk/es/data path.logs: /data/elk/…

Python爬虫在用户行为模型构建中的应用与挑战

嗨&#xff0c;大家好&#xff01;作为一名专业的爬虫代理&#xff0c;我今天要和大家分享一些关于爬虫与人类行为分析的知识。在数字化时代&#xff0c;我们每天都在互联网上留下大量的数据痕迹&#xff0c;通过分析这些数据&#xff0c;我们可以理解用户行为、性偏好和需求&a…

Clickhouse 优势与部署

一、clickhouse简介 1.1 clickhouse介绍 ClickHouse的背后研发团队是俄罗斯的Yandex公司&#xff0c;2011年在纳斯达克上市&#xff0c;它的核心产品是搜索引擎。我们知道&#xff0c;做搜索引擎的公司营收非常依赖流量和在线广告&#xff0c;所以做搜索引擎的公司一般会并行推…

QT图形视图系统 - 使用一个项目来学习QT的图形视图框架 - 终篇

QT图形视图系统 - 终篇 接上一篇&#xff0c;我们需要继续完成以下的效果&#xff1b; 先上个效果图&#xff1a; 修改背景&#xff0c;使之整体适配 上一篇我们绘制了标尺&#xff0c;并且我们修改了放大缩小和对应的背景&#xff0c;整体看来&#xff0c;我们的滚动条会和…

fastadmin自定义键值组件Fieldlist

需求场景&#xff1a; 后台设置前端的固定话费充值金额。编辑时要求能够增删改&#xff0c;给到前端的数据&#xff0c;是要根据金额正序排列&#xff0c;用fastadmin的键值组件(Fieldlist)&#xff0c;使用Art-Template模板语法自定义模板。 最终效果如下图所示&#xff1a; …

SpringBoot+MyBatis多数据源配置

1.先在配置文件application.yml中配置好数据源 spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedb1:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: rootjdbc-url: jdbc:mysql://192.168.110.128:3306/CampusHelp?useUnicodeyes&…

vscode extension 怎么区分dev prod

开发模式注入环境变量 使用vsode 提供的api

WebRTC | 音视频直播客户端框架

端到端通信互动技术可分解为以下几个技术难点&#xff1a;客户端技术、服务器技术、全球设备网络适配技术和通信互动质量监控与展示技术。 一、音视频直播 音视频直播可分成两条技术路线&#xff1a;一条是以音视频会议为代表的实时互动直播&#xff1b;另一条是以娱乐直播为代…

在工作中使用ChatGPT需要担心泄密问题吗?

​OpenAI的ChatGPT可以通过自动简化繁琐的任务&#xff0c;针对挑战性问题的提供创造性的解决方案来提高员工的生产力。但随着这项技术被整合到人力资源平台和其他工作场所中&#xff0c;它给各个企业带来了巨大的挑战。苹果、Spotify、Verizon和三星等大公司已禁止或限制员工在…

C++内存泄漏

什么是内存泄露 内存泄露是指&#xff1a;内存泄漏也称作"存储渗漏"&#xff0c;用动态存储分配函数动态开辟的空间&#xff0c;在使用完毕后未释放&#xff0c;结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存…

Java分布式微服务1——注册中心(Eureka/Nacos)

文章目录 基础知识注册中心Eureka注册中心与Ribbon负载均衡1、Eureka注册中心2、Eureka的搭建3、Eureka服务注册4、复制服务实例5、拉取服务6、Ribbon负载均衡的流程及Eureka规则调整&#xff1a;7、Ribbon负载均衡饥饿加载 Nacos注册中心1、服务端Nacos安装与启动2、客户端Nac…

【如何构建自己的基于Arduino的Scara 机器人】

【如何构建自己的基于Arduino的Scara 机器人】 1. 概述2. Scara机器人3D模型3. 3D打印机器人零件4. 组装机器人5. SCARA机器人电路图6. 完成装配7. SCARA机器人的工作原理8. 对 SCARA 机器人进行编程 – Arduino 和处理代码9. 总结在本教程中,我们将学习如何构建基于 Arduino …

明年,HarmonyOS不再兼容Android应用!

2023年华为开发者大会&#xff0c;不知道各位老铁们是否观看了&#xff0c;一个震撼的消息就是&#xff0c;首次公开了HarmonyOS NEXT的概念&#xff0c;简而言之就是&#xff0c;这是一款专为开发者打造的预览版操作系统&#xff0c;旨在提供"纯正鸿蒙操作系统"的体…

【前端实习生备战秋招】—HTML 和 CSS面试题总结(三)

【前端实习生备战秋招】—HTML 和 CSS面试题总结&#xff08;三&#xff09; 1.行内元素有哪些&#xff1f;块级元素有哪些&#xff1f; 空(void)元素有那些&#xff1f; CSS 规范规定&#xff0c;每个元素都有 display 属性&#xff0c;确定该元素的类型&#xff0c;每个元素…

react-use-gesture

介绍 react-use-gesture 是一个基于 React Hooks 的库&#xff0c;用于处理手势事件。它提供了一种简单且灵活的方式来处理用户的手势操作&#xff0c;例如拖动、缩放、旋转等。 使用 安装 react-use-gesture&#xff1a; npm install react-use-gesture 导入所需的模块和钩…

体验自制免费开源闯关学SQL

文章目录 前言mac安装nodejs启动体验 前言 sql是常用必不可少的一种语言&#xff0c;我们都或有各种各样的学习经历&#xff0c;最近看鱼皮大佬开源了一款自制的闯关学SQL项目&#xff0c;该项目是纯前端语言&#xff0c;不需要太多依赖以及前置知识&#xff0c;直接下载就可以…

pg实现月累计

获取每月累计数据&#xff1a; ​​​ SELECT a.month, SUM(b.total) AS total FROM ( SELECT month, SUM(sum) AS total FROM ( SELECT to_char(date("Joinin"),YYYY-MM) AS month , COUNT(*) AS sum FROM "APP_HR_Staff_Basic_Info" GROUP BY month ) …