DNS域名解析系统-BIND服务
at 2年前 ca DNS pv 640 by touch
DNS服务相关概念
什么是DNS
DNS:‘Domain Name System’ 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,基于C/S架构,端口号:53/TCP、53/UDP。
BIND是干什么的
BIND:提供DNS软件实现DNS域名结构,点击访问官网地址。
DNS域名结构
根域:全球根服务器节点只有 13 个(这是IPv4跟名称服务器,IPv6根域名服务器全球25个,中国1主3从),10个在美国,1个在荷兰,1个在瑞典,1个在日本。
一级域名(顶级域名):
三类:组织域、国家域(.cn、.ca、.tw)、反向域 (.com、.edu、.gov、.int、.arpa)
二级域名(权威域名):baidu.com
三级域名:www.baidu.com
最多可达到127级域名。
DNS工作原理
DNS术语
阿里云有介绍
递归查询:是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用户。
一般情况下,客户机和本地DNS服务器之间属于递归查询。
递归算法:客户端向 LocalDNS(本地DNS)发起域名查询 ——> LocalDNS 不知道域名对应的IP,但他知道谁知道 ——> LocalDNS代为帮客户端去查找 ——> 最后在返回最终结果。
迭代查询:是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
一般情况下,LocalDNS 服务器向其他DNS服务器的查询属于迭代查询。
迭代算法:客户端向LocalDNS发起域名查询 ——> LocalDNS不知道域名对应的IP,但它知道谁知道并推荐客户端应该找谁 ——> 客户端自己去找它。
DNS缓存:是将解析数据存储在靠近发起请求的客户端的位置,也可以说DNS数据是可以缓存在任意位置,最终目的是以此减少递归查询过程,可以更快的让用户获得请求结果。
TTL:是告诉本地域名服务器,域名解析结果可缓存的最长时间,缓存时间到期后本地域名服务器则会删除该解析记录的数据,删除之后,如有用户请求域名,则会重新进行递归查询/迭代查询的过程。
DNSSEC:域名系统安全扩展(DNS Security EXtensions):通过数字签名来保证DNS应答报文的真实性和完整性,可有效防止DNS欺骗和缓存污染等攻击,能够保护用户不被重定向到非预期地址,从而提高用户对互联网的信任。
DNS Query Flood Attack:指域名查询攻击,攻击方法是通过操纵大量傀儡机器,发送海量的域名查询请求,当每秒域名查询请求次数超过DNS服务器可承载的能力时,则会造成解析域名超时从而直接影响业务的可用性。
解析方式或类型
正向解析:FQDN(完全域名) ——> IP
反向解析:IP ——> FQDN
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树
DNS服务器的类型
主DNS服务器:管理和维护所负责解析的域内解析库的服务器。
从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本。
序列号:解析库版本号,主服务器解析库变化时,其序列递增(人为递增)。
刷新时间间隔:slave(从)服务器从主服务器请求同步解析的时间间隔。
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔。
过期时长:从服务器联系不到主服务器时,多久后停止服务。
通知机制:主服务器解析库发生变化时,会主动通知从服务器。
缓存DNS服务器(转发器)
区域传输
完全传输:传送整个解析库
增量传输:传递解析库变化的那部分内容
DNS各种资源记录
区域解析库:由众多资源记录RR(Resource Record) 组成。
记录类型:
SOA:‘Start Of Authority’,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库第一条记录;
A:将 ‘FQDN’ ——> ‘IPv4’;
AAAA:将 ‘FQDN’ ——> ‘IPv6’;
PTR:将 ‘IP’ ——> ‘FQDN’;
NS:专用于标明当前区域的DNS服务器;
CNAME:别名记录;
MX:邮件交换器;
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等,如下示例:
_dnsauth TXT 20120112000000051qg…
资源记录的定义
name [TTL] IN rr_type value
注意:
TTL可以 ‘全局继承’($TTL 1D,表示所有记录TTL 为1天);
使用 ‘@’ 符号可用于引用当前区域域名;
同一个名字可以通过多条记录定义不同的值;此时DNS服务器会以轮询方式响应;
同一个值也可能有多个不同定义的名字,通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机。
SOA记录
name:当前区域的名字,例如"magedu.org.“,一般写”@";
value:由多部分组成。
范例:
magedu.org. 86400 IN SOA ns.magedu.org. nsadmin.magedu.grg. ( 20220917; ## 序列号,主服务器数据库内容发生变化时,其版本号递增(手动)。 2H; ## 刷新时间,从服务器每多久到主服务器检查序列号更新状况。 10M; ## 重试时间,从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔。 1W; ## 过期时间,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务。 1D; ## 否定答案的TTL值 )
注意:
当前区域的主DNS服务器的FQDN,可以使用当前区域的名字,只是注释功能,可以不需要配置对应的NS记录和A记录,例如:‘ns.magedu.org.’。
当前区域管理员的邮箱地址,但地址中不能使用 ‘@’ 符号,一般用 ‘.’ 替换,例如:nsadmin.magedu.org。
4.主从服务区域传输相关定义以及否定的答案的统一的TTL。
NS记录
范例:
magedu.org. IN NS ns1.magedu.org.
注意:
相邻的两个资源记录的name相同时,后续的可省略。
对NS记录而言,任何一个 NS 记录后面的服务器名字,都应该在后续有一个A记录。
一个区域可以有多个NS记录。
A记录
范例:
www.magedu.org. IN A 172.25.3.80 www.magedu.org. IN A 172.25.3.81$GENERATE 1-254 HOST$ IN A 1.1.1.1 *.magedu.org. IN A 2.2.2.2 magedu.org. IN A 3.3.3.3
AAAA记录
范例:
www.magedu.org. IN AAAA IPv6地址 www.magedu.org. IN AAAA IPv6地址$GENERATE 1-254 HOST$ IN AAAA IPv6地址 *.magedu.org. IN AAAA IPv6地址 magedu.org. IN AAAA IPv6地址
PTR记录
范例:
网络地址及后缀可以省略,主机地址依然需要反着写。
4.3.2.1.in-addr.arpa. IN PTR # 假设网络地址为1.2.3,可简写成: 4 IN PTR www.magedu.org.
CNAME别名记录
范例:
www.magedu.org. IN CNAME websrv.mageu.org.
子域授权
每个域的名称服务器都是通过其上级名称服务器在解析库进行授权,类似跟域手授权顶级域(tld)。
glue record:粘合记录,父域授权子域的记录。
范例:
.com. IN NS ns1.com. .com. IN NS ns2.com. ns1.com. IN A 2.2.2.1 ns2.com. IN A 2.2.2.2
BIND服务软件包及配置文件
相关软件包
bind:服务器包。
bind-utils:客户端包。
bind-libs:相关库,安装bind时会依赖此库。
bind-chroot:安全包,将dns相关文件放至’/var/named/chroot/'。
BIND包相关文件
BIND主程序:/usr/sbin/named。
服务脚本和Unit名称:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service。
主配置文件:/etc/named.conf,/etc/named.rfc1912.zones,/etc/rndc.key。
管理工具:/usr/sbin/rndc,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程,提供辅助性的管理功能,连接953/tcp端口。
解析库文件:/var/named/ZONE_NAME.ZONE。
注意:
一台物理服务器可同时为多个区域提供解析;
必须要有根区域文件(默认:/var/named/named.ca);
应该有两个实现(如果包括IPv6会更多) localhost 和本地回环地址的解析库。
主配置文件
全局配置:option {};(注意:自带分号) ;
日志子系统配置:==logging {}; ==;
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone,‘zone “ZONE_NAME” IN {};’;
注意:
任何服务程序如果期望其能够通过网络被其他主机访问,至少应该监听在一个能与外部主机通信的IP地址上;
缓存名称服务器的配置:监听外部地址即可。
BIND安装部署
语法检查工具
检查配置文件语法
[root@rocky01 ~]# named-checkconf
解析库文件语法检查
[root@rocky01 ~]# named-checkzone "magedu.org" /var/named/magedu.org.zone
使用DNS测试和管理工具
host命令
命令格式:
host [-t type] name [SERVER]
参数:
name ## 指定查询的zone
SERVER ## 指定哪个查询的DNS服务
-t ## 指定查询类型
范例:
host -t NS magedu.org 172.25.3.82 host 1.2.3.4
nslookup命令
命令格式:
nslookup [-option] [name | -] [server]
dig命令
命令格式:
初次使用
使用yum进行安装并启动服务。
[root@rocky01 ~]# yum -y install bind bind-utils [root@rocky01 ~]# systemctl start named [root@rocky01 ~]# systemctl enable named Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
启动named 服务后查看端口号
目前named 进程监听在tcp、udp的53/953端口上,并且仅能够本机访问。
## 端口号查看 [root@rocky01 ~]# ss -ntulp | grep named udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:* users:(("named",pid=132306,fd=514),("named",pid=132306,fd=513),("named",pid=132306,fd=512)) udp UNCONN 0 0 [::1]:53 [::]:* users:(("named",pid=132306,fd=517),("named",pid=132306,fd=516),("named",pid=132306,fd=515)) tcp LISTEN 0 10 127.0.0.1:53 0.0.0.0:* users:(("named",pid=132306,fd=21)) tcp LISTEN 0 128 127.0.0.1:953 0.0.0.0:* users:(("named",pid=132306,fd=23)) tcp LISTEN 0 10 [::1]:53 [::]:* users:(("named",pid=132306,fd=22)) tcp LISTEN 0 128 [::1]:953 [::]:* users:(("named",pid=132306,fd=24))
修改配置文件 ‘/etc/named.conf’ 已实现对外提供服务。
[root@rocky01 ~]# vim /etc/named.conf options { //listen-on port 53 { 127.0.0.1; }; listen-on port 53 { localhost; }; ##修改为 'localhost'关键字,此作用是监听本机的所有IP地址,或者注销此行也可,或者在后面追加本机IP地址。 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"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; //allow-query { localhost; }; allow-query { localhost;172.25.0.0/21; }; ##在后面添加允许哪些客户端查询的网段,或者修改为'any',或者注销此行。......(省略)
实现配置文件生效。
[root@rocky01 ~]# rndc reloadserver reload successful 或者: [root@rocky01 ~]# systemctl reload named
再次查看监听的端口信息。
[root@rocky01 ~]# ss -ntulp | grep named udp UNCONN 0 0 172.25.3.82:53 0.0.0.0:* users:(("named",pid=132306,fd=520),("named",pid=132306,fd=519),("named",pid=132306,fd=518)) udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:* users:(("named",pid=132306,fd=514),("named",pid=132306,fd=513),("named",pid=132306,fd=512)) udp UNCONN 0 0 [::1]:53 [::]:* users:(("named",pid=132306,fd=517),("named",pid=132306,fd=516),("named",pid=132306,fd=515)) tcp LISTEN 0 10 172.25.3.82:53 0.0.0.0:* users:(("named",pid=132306,fd=26)) tcp LISTEN 0 10 127.0.0.1:53 0.0.0.0:* users:(("named",pid=132306,fd=21)) tcp LISTEN 0 128 127.0.0.1:953 0.0.0.0:* users:(("named",pid=132306,fd=23)) tcp LISTEN 0 10 [::1]:53 [::]:* users:(("named",pid=132306,fd=22)) tcp LISTEN 0 128 [::1]:953 [::]:* users:(("named",pid=132306,fd=24))
使用客户端主机进行解析
在客户端上安装’bind-utils’工具包,将客户端DNS地址指向DNS服务器。
[root@rocky ~]# cat /etc/resolv.conf # Generated by NetworkManagernameserver 172.25.3.82 [root@rocky ~]# host www.baidu.comwww.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 14.215.177.39 www.a.shifen.com has address 14.215.177.38
实战:实现DNS正向解析
环境要求
注意:需要关闭防火墙、SELINUX,同步时间。
操作系统 | IP地址 | 角色类型 | 安装组件 |
---|---|---|---|
Rocky 8.4 | 172.25.3.83 | WEB服务器 | nginx |
Rocky 8.4 | 172.25.3.82 | Master(主) | bind、bind-utils |
Rocky 8.4 | 172.25.3.80 | 客户端 | bind-utils |
修改bind配置文件
修改/etc/named.conf 主配置文件。
## 此选项在上面已经解释过 [root@rocky01 ~]# vim /etc/named.conf options { //listen-on port 53 { 127.0.0.1; }; //allow-query { any; };
修改/etc/named.rfc1912.zones 配置文件(也可以在/etc/named.conf配置文件中修改)。
[root@rocky01 ~]# vim /etc/named.rfc1912.zones zone "test.local" IN { type master; file "test.local.zone";};
DNS区域数据库文件
将模板文件拷贝一份进行修改
注意:文件名需要与配置文件中’file’ 指令指定的文件名一致。如果复制没有 ‘-p’ 需要修改权限。
[root@rocky01 ~]# cp -p /var/named/named.localhost /var/named/test.local.zone [root@rocky01 ~]# vim /var/named/test.local.zone ## 'SOA' 后面的第一个值可以随便定义,第二个值为邮箱地址,若有问题会通过给此邮箱发送邮件。 ## 最后面的数值上面'SOA'记录都已解释。 [root@rocky01 ~]# cat /var/named/test.local.zone $TTL 10M @ IN SOA a support.magedu.com. ( 0 3M 15M 1W 3H ) NS master master A 172.25.3.82 www A 172.25.3.83 [root@rocky01 ~]# rndc reloadserver reload successful
检查配置文件和数据库文件格式,并重启服务。
[root@rocky01 ~]# named-checkconf [root@rocky01 ~]# named-checkzone test.local /var/named/test.local.zone zone test.local/IN: loaded serial 0OK
实现web服务
[root@rocky02 ~]# yum -y install nginx [root@rocky02 ~]# nginx [root@rocky02 ~]# echo "hello world" > /usr/share/nginx/html/index.html
在客户端实现测试
测试解析是否正常
需要在客户端上将DNS指向DNS服务器。
[root@rocky01 ~]# host www.test.localwww.test.local has address 172.25.3.83 [root@rocky01 ~]# dig ; <<>> DiG 9.11.36-RedHat-9.11.36-3.el8 <<>> ;; global options: +cmd;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 22268 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION:; EDNS: version: 0, flags: ; udp: 1232 ; COOKIE: 81f499dac4eddbc7f7c9a60e6325ab06f66e867373dd0560 (good) ;; QUESTION SECTION:; ;; AUTHORITY SECTION:. 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2022091700 1800 900 604800 86400 ;; Query time: 548 msec ;; SERVER: 172.25.3.82#53(172.25.3.82) ;; WHEN: Sat Sep 17 19:09:58 CST 2022 ;; MSG SIZE rcvd: 146
进行web访问
[root@rocky01 ~]# curl hello world
允许动态更新
动态更新:可以通过远程更新区域数据库的资源记录。
实现动态更新,需要在指定的zone语句块中:
allow-update {any;};
范例:
## 修改配置文件[root@rocky01 ~]# vim /etc/named.rfc1912.zones [root@rocky01 ~]# grep -v '^/' /etc/named.rfc1912.zones | head zone "test.local" IN { type master; file "test.local.zone"; allow-update {any;};}; ## 检查配置文件 [root@rocky01 ~]# named-checkconf ## 重新读取配置文件 [root@rocky01 ~]# rndc reloadserver reload successful ## DNS服务器的数据目录权限。 [root@rocky01 ~]# ls -ld /var/nameddrwxrwx--T 5 root named 150 Sep 17 19:04 /var/named ## 将/var/named目录权限修改为770权限,不然没有权限修改。 [root@rocky01 ~]# chmod 770 /var/named ## 在客户端远程更新zone数据库 [root@rocky ~]# nsupdate> server 172.25.3.82> zone test.local> update add a.test.local 88888 IN A 172.25.3.83> send> quit ## 进行解析测试 [root@rocky ~]# host a.test.locala.test.local has address 172.25.3.83 ## 查看zone数据库 ### 生成了一个.jnl结尾的文件 [root@rocky01 ~]# ls -l /var/named/test.local.zone.jnl-rw-r--r-- 1 named named 716 Sep 17 19:31 test.local.zone.jnl ### 原数据库被修改。 [root@rocky01 named]# cat test.local.zone $ORIGIN . $TTL 600 ; 10 minutes test.local IN SOA a.test.local. support.magedu.com. ( 1 ; serial 180 ; refresh (3 minutes) 900 ; retry (15 minutes) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS master.test.local. $ORIGIN test.local. $TTL 88888 ; 1 day 41 minutes 28 seconds a A 172.25.3.83 $TTL 600 ; 10 minutes master A 172.25.3.82 www A 172.25.3.83
启用DNS客户端缓存功能
在高并发的场景下,对DNS服务器的查询性能有较高的要求,如果在客户端启用DNS缓存功能,可以大幅减轻DNS服务器的压力,同时也能提高DNS客户端名称解析速度。
CentOS启用DNS客户端缓存
CentOS、Rocky默认没有启用DNS客户端缓存,安装nscd(名称服务关村守护进程)包可以支持DNS缓存功能,减少DNS服务器压力,提高DNS查询速度。
## 修改配置文件 [root@rocky01 ~]# vim /etc/named.rfc1912.zones [root@rocky01 ~]# grep -v '^/' /etc/named.rfc1912.zones | head zone "test.local" IN { type master; file "test.local.zone"; allow-update {any;};}; ## 检查配置文件 [root@rocky01 ~]# named-checkconf ## 重新读取配置文件 [root@rocky01 ~]# rndc reload server reload successful ## DNS服务器的数据目录权限。 [root@rocky01 ~]# ls -ld /var/named drwxrwx--T 5 root named 150 Sep 17 19:04 /var/named ## 将/var/named目录权限修改为770权限,不然没有权限修改。 [root@rocky01 ~]# chmod 770 /var/named ## 在客户端远程更新zone数据库 [root@rocky ~]# nsupdate > server 172.25.3.82 > zone test.local > update add a.test.local 88888 IN A 172.25.3.83 > send > quit ## 进行解析测试 [root@rocky ~]# host a.test.locala.test.local has address 172.25.3.83 ## 查看zone数据库 ### 生成了一个.jnl结尾的文件 [root@rocky01 ~]# ls -l /var/named/test.local.zone.jnl -rw-r--r-- 1 named named 716 Sep 17 19:31 test.local.zone.jnl ### 原数据库被修改。 [root@rocky01 named]# cat test.local.zone $ORIGIN . $TTL 600 ; 10 minutes test.local IN SOA a.test.local. support.magedu.com. ( 1 ; serial 180 ; refresh (3 minutes) 900 ; retry (15 minutes) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS master.test.local.$ORIGIN test.local. $TTL 88888 ; 1 day 41 minutes 28 seconds a A 172.25.3.83 $TTL 600 ; 10 minutes master A 172.25.3.82 www A 172.25.3.83
先在客户端上解析域名并缓存,在停止DNS服务器查看是否已缓存
[root@rocky ~]# yum -y install nscd [root@rocky ~]# systemctl enable --now nscd Created symlink /etc/systemd/system/multi-user.target.wants/nscd.service → /usr/lib/systemd/system/nscd.service. Created symlink /etc/systemd/system/sockets.target.wants/nscd.socket → /usr/lib/systemd/system/nscd.socket. ## 查看缓存统计信息 [root@rocky ~]# nscd -g
Ubuntu启用DNS客户端缓存
Ubuntu默认会启用DNS客户端缓存
## 客户端进行缓存 [root@rocky ~]# ping www.baidu.com 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=56 time=4.56 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=56 time=4.36 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=56 time=4.52 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=56 time=4.52 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=5 ttl=56 time=4.32 ms ## 停止DNS服务 [root@rocky01 named]# systemctl stop named ## 再次到客户端查看,缓存生效 [root@rocky ~]# ping www.baidu.com 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=56 time=4.38 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=56 time=4.42 ms [root@rocky ~]# ping www.taobao.com ping: www.taobao.com: Name or service not known
查看和清空缓存
root@ubuntu20:~# systemd-resolve --statistics DNSSEC supported by current servers: no Transactions Current Transactions: 0 Total Transactions: 543 Cache Current Cache Size: 2 Cache Hits: 122 Cache Misses: 457 DNSSEC Verdicts Secure: 0 Insecure: 0 Bogus: 0 Indeterminate: 0 root@ubuntu20:~# systemd-resolve --flush-caches
实现反向解析区域
反向解析配置
区域解析设置写法
网络地址反写.in-addr.arpa. 。
例如:网络地址为:192.168.2.0
在zone文件中表示为:2.168.192.in-addr-arpa.
修改配置文件
修改/etc/named.rfc1912.zones 配置文件,在配置文件最后加入定义反向解析区域文件配置。
[root@rocky01 named]# vim /etc/named.rfc1912.zones zone "3.25.172.in-addr.arpa" IN { type master; file "3.25.172.in-addr.arpa.zone";};
配置区域解析库
定义区域解析库文件(注意:不需要A记录,以PTR记录为主)。
## 从正向解析区域文件中拷贝一份 [root@rocky01 named]# cp -p test.local.zone 3.25.172.in-addr.arpa.zone ## 修改为一下内容 ### 实现172.25.3.83 -> www.test.local、172.25.3.81 -> b.test.local。 [root@rocky01 named]# cat 3.25.172.in-addr.arpa.zone $TTL 600 ; 10 minutes @ IN SOA a support.magedu.com. ( 1 ; serial 180 ; refresh (3 minutes) 900 ; retry (15 minutes) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS master.test.local. ##NS记录必须以点结束,否则配置A记录才可以启动 83 IN PTR www.test.local. 81 IN PTR b.test.local.
修改完成后检查配置文件和区域数据库文件,然后重新加载配置
[root@rocky01 named]# named-checkconf [root@rocky01 named]# named-checkzone 3.25.172.in-addr.arpa. /var/named/3.25.172.in-addr.arpa.zone zone 3.25.172.in-addr.arpa/IN: loaded serial 1 OK [root@rocky01 named]# rndc reload server reload successful
在客户端进行反向解析验证
dig命令
[root@rocky ~]# dig -t ptr 83.3.25.172.in-addr.arpa. @172.25.3.82 ; <<>> DiG 9.11.36-RedHat-9.11.36-3.el8 <<>> -t ptr 83.3.25.172.in-addr.arpa. @172.25.3.82 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30979 ;; flags: qr aa rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: ; udp: 1232; COOKIE: 4498d124a634674a1d38836863269518a9e3df92fd286ef3 (good) ;; QUESTION SECTION: ;83.3.25.172.in-addr.arpa. IN PTR ;; ANSWER SECTION:83.3.25.172.in-addr.arpa. 600 IN PTR ;; AUTHORITY SECTION:3.25.172.in-addr.arpa. 600 IN NS master.test.local. ;; ADDITIONAL SECTION: master.test.local. 600 IN A 172.25.3.82 ;; Query time: 4 msec ;; SERVER: 172.25.3.82#53(172.25.3.82) ;; WHEN: Sun Sep 18 11:48:40 CST 2022 ;; MSG SIZE rcvd: 146 [root@rocky ~]# dig -x 172.25.3.83 ; <<>> DiG 9.11.36-RedHat-9.11.36-3.el8 <<>> -x 172.25.3.83 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16244 ;; flags: qr aa rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: ; udp: 1232 ; COOKIE: b9444a51944c7207ea659182632695947d2abca03baef596 (good) ;; QUESTION SECTION:;83.3.25.172.in-addr.arpa. IN PTR ;; ANSWER SECTION:83.3.25.172.in-addr.arpa. 600 IN PTR ;; AUTHORITY SECTION:3.25.172.in-addr.arpa. 600 IN NS master.test.local. ;; ADDITIONAL SECTION: master.test.local. 600 IN A 172.25.3.82 ;; Query time: 1 msec;; SERVER: 172.25.3.82#53(172.25.3.82) ;; WHEN: Sun Sep 18 11:50:44 CST 2022 ;; MSG SIZE rcvd: 146
host命令
[root@rocky ~]# host 172.25.3.8383.3.25.172.in-addr.arpa domain name pointer www.test.local.
nslookup命令
[root@rocky ~]# nslookup 172.25.3.83 83.3.25.172.in-addr.arpa name = [root@rocky ~]# nslookup > 172.25.3.83 83.3.25.172.in-addr.arpa name = www.test.local. > exit
实现从服务器
只有一台主DNS服务器,存在单点失败的问题,可以建立主DNS服务器的备份服务器,即从服务器来实现DNS服务的容错机制。
从服务器可以自动和主服务器进行单项的数据同步,从而和主DNS服务器一样也可以对外提供查询服务,但从服务器不提供数据更新服务。
DNS从服务器
应该为一台独立的名称服务器;
主服务器的区域解析库文件中必须有一条NS记录指向从服务器;
从服务器只需要定义区域,而无需提供解析库文件;解析库文件应该放置于 ‘/var/named/slaves/’ 目录中;
主服务器得允许从服务器作区域传送;
主从服务器时间应该同步,可通过ntp进行;
bind程序的版本应该保持一致,否则,应该从高,主低;
定义从配置文件zone区域
格式:
zone "ZONE_NAME" IN { type slave; masters { MASTER_IP; }; file "slaves/ZONE_NAME.zone";}
实现DNS从服务器
环境信息
以下所有主机均关闭防火墙、Selinux,时间是同步状态。
bind 版本为:9.11.36-RedHat-9.11.36-3.el8
操作系统 | 主机地址 | 角色 | 安装组件 |
---|---|---|---|
Rocky 8.6 | 172.25.3.80 | 客户端 | bind-utils |
Rocky 8.6 | 172.25.3.90 | 从DNS | bind9、bind9-utils、bind9-libs |
Rocky 8.6 | 172.25.3.82 | 主DNS | bind9、bind9-utils、bind9-libs |
Rocky 8.6 | 172.25.3.83 | web服务器 | nginx |
主DNS服务器端配置
注销并添加以下配置
注意:‘allow-transfer’ 为安全选项,必须得设置,否则可以直接使用客户端工具拉取区域数据库文件中的内容。
[root@rocky ~]# dig -t axfr test.local ; <<>> DiG 9.11.36-RedHat-9.11.36-3.el8 <<>> -t axfr test.local ;; global options: +cmd test.local. 600 IN SOA a.test.local. support.magedu.com. 3 180 900 604800 10800 test.local. 600 IN NS master.test.local. test.local. 600 IN NS slave.test.local. a.test.local. 600 IN A 172.25.3.83 master.test.local. 600 IN A 172.25.3.82 slave.test.local. 600 IN A 172.25.3.90 www.test.local. 600 IN A 172.25.3.83 test.local. 600 IN SOA a.test.local. support.magedu.com. 3 180 900 604800 10800 ;; Query time: 1 msec ;; SERVER: 172.25.3.82#53(172.25.3.82) ;; WHEN: Sun Sep 18 16:58:46 CST 2022 ;; XFR size: 8 records (messages 1, bytes 268)
options { //listen-on port 53 { 127.0.0.1; }; //listen-on port 53 { localhost; }; ## 注销 //listen-on-v6 port 53 { ::1; }; //allow-query { localhost; }; //allow-query { any; }; ## 注销 allow-transfer { 172.25.3.90; }; ## 添加从服务器的IP地址。
在/etc/named.rfc1912.zones 文件中添加zone段。
zone "test.local" IN { type master; file "test.local.zone";};
创建区域数据库
## 注意权限 [root@rocky01 named]# cp -p /var/named/named.localhost /var/named/test.local.zone ## 添加NS记录 [root@rocky01 named]# vim test.local.zone [root@rocky01 named]# cat test.local.zone $TTL 600 ; 10 minutes @ IN SOA a support.magedu.com. ( 1 ; serial 180 ; refresh (3 minutes) 900 ; retry (15 minutes) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS master NS slave ## 添加从DNS服务器的NS记录 master A 172.25.3.82 slave A 172.25.3.90 ##解析NS记录 www A 172.25.3.83
检查配置文件和区域数据库文件并重新加载服务器
[root@rocky01 named]# named-checkconf [root@rocky01 named]# named-checkzone test.local /var/named/test.local.zone zone test.local/IN: loaded serial 1 OK [root@rocky01 named]# rndc reload server reload successful
从DNS服务器配置
安装软件
Rocky:yum -y install bind bind-utils
Ubuntu:apt -y install bind9 bind9-utils
修改从DNS服务器’/etc/named.conf’配置文件
[root@localhost ~]# vim /etc/named.confoptions { //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"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; //allow-query { localhost; }; ##注销 allow-transfer { none; }; ##新增,从服务器不允许复制传输。
修改/etc/named.rfc1912.zones 文件,添加如下配置
[root@localhost ~]# vim /etc/named.rfc1912.zoneszone "test.local" IN { type slave; ##类型 从服务器 masters { 172.25.3.82; }; ##主DNS服务器IP地址 file "slaves/test.local.slave";};
检查配置文件并启动服务
[root@localhost ~]# named-checkconf [root@localhost ~]# systemctl enable --now named Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
查看区域数据库文件是否生成
## 此文件为加密文件 [root@localhost ~]# ls /var/named/slaves/ -l total 4 -rw-r--r-- 1 named named 292 Sep 18 15:17 test.local.slave
客户端测试主从DNS服务架构
设置客户端DNS指向,验证主从架构
## 修改后直接验证,注意关掉客户端缓存 [root@rocky ~]# systemctl stop nscd.service [root@rocky ~]# host www.test.localwww.test.local has address 172.25.3.83 ## 停止主DNS服务器,再次解析 [root@rocky01 named]# systemctl stop named [root@rocky ~]# host www.test.local has address 172.25.3.83 [root@rocky ~]# dig ; <<>> DiG 9.11.36-RedHat-9.11.36-3.el8 <<>> ;; global options: +cmd;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1746 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION:; EDNS: version: 0, flags: ; udp: 1232; COOKIE: 7b4009b78287159cec295a7f6326c88e397e8fba34908298 (good) ;; QUESTION SECTION: ; ;; ANSWER SECTION: ;; AUTHORITY SECTION: test.local. 600 IN NS master.test.local. ;; ADDITIONAL SECTION: master.test.local. 600 IN A 172.25.3.82 ;; Query time: 2 msec ;; SERVER: 172.25.3.90#53(172.25.3.90) ## 可以看到,解析是从从服务器来的
同步方式
主服务器推送
需要修改SOA后面的序列号,按递增方式增长。
从服务器拉取
主服务器推送配置
修改区域数据库文件
注意:实测-主动推送需要关闭掉动态更新配置,否则修改序列号的值不会进行推送至从服务器。
## 修改后直接验证,注意关掉客户端缓存 [root@rocky ~]# systemctl stop nscd.service [root@rocky ~]# host www.test.local has address 172.25.3.83 ## 停止主DNS服务器,再次解析 [root@rocky01 named]# systemctl stop named [root@rocky ~]# host www.test.local has address 172.25.3.83 [root@rocky ~]# dig ; <<>> DiG 9.11.36-RedHat-9.11.36-3.el8 <<>> ;; global options: +cmd;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1746 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION:; EDNS: version: 0, flags: ; udp: 1232; COOKIE: 7b4009b78287159cec295a7f6326c88e397e8fba34908298 (good) ;; QUESTION SECTION:; ;; ANSWER SECTION: ;; AUTHORITY SECTION: test.local. 600 IN NS master.test.local. ;; ADDITIONAL SECTION: master.test.local. 600 IN A 172.25.3.82 ;; Query time: 2 msec ;; SERVER: 172.25.3.90#53(172.25.3.90) ## 可以看到,解析是从从服务器来的
检查区域数据库和重读文件
[root@rocky01 named]# named-checkzone test.local test.local.zone zone test.local/IN: loaded serial 3OK [root@rocky01 named]# rndc reload server reload successful
从服务器拉取配置
从服务器拉取配置借助于区域数据库文件中’SOA’ 后面定义的 ‘refresh’ 的值;
实现查看refresh定义的效果。
# 先停止从DNS服务,主要是在主DNS修改序列号会自动推送。 [root@localhost ~]# systemctl stop named # 修改主DNS服务器的区域数据库文件记录,并更新序列号。 [root@rocky01 named]# cat test.local.zone $TTL 600 ; 10 minutes @ IN SOA a support.magedu.com. ( 6 ; serial 60 ; refresh (3 minutes) 900 ; retry (15 minutes) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS master NS slave master A 172.25.3.82 slave A 172.25.3.90 www A 172.25.3.83# 重新加载配置文件已生效。 [root@rocky01 named]# rndc reload server reload successful # 重新启动从DNS服务,查看文件是否会变化 [root@localhost ~]# systemctl start named
泛域名解析
实现 ‘<任意>.test.local’ 进行解析。
[root@localhost named]# vim test.local.zone [root@localhost named]# cat test.local.zone $TTL 1D @ IN SOA master admin.master.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 172.25.3.84 * A 172.25.3.83 [root@localhost named]# named-checkzone test.local /var/named/test.local.zone zone test.local/IN: loaded serial 0 OK ## 在客户端上进行解析[root@rocky ~]# host www.test.local has address 172.25.3.83 [root@rocky ~]# host abcd.test.local abcd.test.local has address 172.25.3.83
实现 ‘test.local’ 进行解析
## 以上面的配置直接进行访问,没有解析到结果 [root@rocky ~]# host test.local ## 修改区域数据库 [root@localhost named]# vim test.local.zone $TTL 1D @ IN SOA master admin.master.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 172.25.3.84 @ A 172.25.3.83## 再次使用客户端访问 [root@rocky ~]# host test.local test.local has address 172.25.3.83
实现子域
子域委派授权
将子域委派给其他主机管理,实现分布式DNS数据库。
实现DNS父域和子域服务
环境要求
需要准备5台主机
需要提前关闭防火墙、selinux,同步时间。
父域DNS负责解析’magedu.org’,负责解析一台web服务器域名;子域DNS负责解析’shenzhen.magedu.org’,负责解析一台web服务器域名。
操作系统 | IP地址 | 角色 | 安装组件 |
---|---|---|---|
Rocky 8.6 | 172.25.3.80 | 客户端 | bind-utils |
Rocky 8.6 | 172.25.3.82 | DNS父域服务器 | bind、bind-libs、bind-utils |
Rocky 8.6 | 172.25.3.83 | 指定DNS至父域的web服务器 | nginx |
Rocky 8.6 | 172.25.3.84 | DNS子域服务器 | bind、bind-libs、bind-utils |
Rocky 8.6 | 172.25.3.85 | 指定DNS至子域的web服务器 | nginx |
实现步骤
在父域DNS服务器上实现主’magedu.org’域的主DNS服务;
[root@rocky01 ~]# vim /etc/named.confoptions { //listen-on port 53 { 127.0.0.1; }; //listen-on port 53 { localhost; }; //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"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; //allow-query { localhost; }; ##注销查询,默认允许所有主机查询。 [root@rocky01 ~]# vim /etc/named.rfc1912.zones ## 新增如下信息 zone "magedu.org" { type master; file "magedu.org.zone";};
配置父域DNS的区域数据库文件
[root@rocky01 ~]# cp -p /var/named/named.localhost /var/named/magedu.org.zone [root@rocky01 ~]# vim /var/named/magedu.org.zone $TTL 1D @ IN SOA master admin.magedu.org. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master shanghai NS shanghains master A 172.25.3.82 shanghains A 172.25.3.84 www A 172.25.3.83
检查区域数据库文件和配置文件是否正确,并重新加载文件
[root@rocky01 ~]# named-checkconf [root@rocky01 ~]# named-checkzone magedu.org /var/named/magedu.org.zone zone magedu.org/IN: loaded serial 0OK [root@rocky01 ~]# rndc reloadserver reload successful
实现子域的DNS服务器
[root@localhost ~]# vim /etc/named.confoptions { //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"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; //allow-query { localhost; }; [root@localhost ~]# vim /etc/named.rfc1912.zoneszone "shanghai.magedu.org" IN { type master; file "shanghai.magedu.org.zone";};
配置子域DNS的区域数据库文件
[root@localhost ~]# cp -p /var/named/named.localhost /var/named/shanghai.magedu.org.zone [root@localhost ~]# vim /var/named/shanghai.magedu.org.zone$TTL 1D @ IN SOA master admin.magedu.org. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 172.25.3.84 www A 172.25.3.85
检查区域数据库文件和配置文件是否正确,并重新加载文件。
[root@localhost ~]# named-checkconf [root@localhost ~]# named-checkzone shanghai.magedu.org /var/named/shanghai.magedu.org.zone zone shanghai.magedu.org/IN: loaded serial 0OK [root@rocky01 ~]# rndc reloadserver reload successful
在父域和子域的web服务器上安装httpd服务(3.83和3.85服务器)
## 3.83服务器 [root@rocky01 ~]# echo "www.magedu.org" > /usr/share/nginx/html/index.html ## 3.85服务器 [root@rocky01 ~]# echo "www.shanghai.magedu.org" > /usr/share/nginx/html/index.html ## 启动web服务 [root@localhost ~]# systemctl start nginx
在客户端进行测试
## 将客户端DNS指定到父域DNS和子域DNS [root@rocky ~]# cat /etc/resolv.conf # Generated by NetworkManagernameserver 172.25.3.82 nameserver 172.25.3.84 [root@rocky ~]# curl [root@rocky ~]# dig ; <<>> DiG 9.11.36-RedHat-9.11.36-3.el8 <<>> ;; global options: +cmd;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25826 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION:; EDNS: version: 0, flags: ; udp: 1232; COOKIE: 4822d6f9dd8fc12986ee0540632c098a65bb3df272013e2f (good) ;; QUESTION SECTION:; ;; ANSWER SECTION: www.shanghai.magedu.org. 86400 IN A 172.25.3.85 ;; AUTHORITY SECTION: shanghai.magedu.org. 86400 IN NS shanghains.magedu.org. ;; ADDITIONAL SECTION: shanghains.magedu.org. 86400 IN A 172.25.3.84 ;; Query time: 833 msec;; SERVER: 172.25.3.82#53(172.25.3.82) ;; WHEN: Thu Sep 22 15:06:50 CST 2022 ;; MSG SIZE rcvd: 137 [root@rocky ~]# curl www.shanghai.magedu.orgwww.shanghai.magedu.org
实现DNS转发(缓存)服务器
DNS转发
利用DNS转发,可以将用户的DNS请求转发至指定的DNS服务,而非默认的根DNS服务器,并指定服务器查询的返回结果进行缓存,提高效率。
注意:
1.被转发的服务器需要能够为请求者做递归,否则转发请求不予进行;
2.在 ‘/etc/named.conf’ 的全局配置块中,关闭dnssec功能;
dnssec-enable no;
dnssec-validation no;
转发方式
全局转发:对非本机所负责解析区域的请求,全转发给定的服务器。
特定区域转发:仅转发对特定区域的请求,比全局转发优先级高。
## 全局转发options { forward first|only; ##转发模式 forwarders { ip; }; ##转发至哪个DNS};## 特定区域转发zone "ZONE_NAME" IN { type forward; forward first|only; forwarders { ip; };};
转发模式:
first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询。
only:先转发至指定DNS服务器,如果无法解析查询请求,则本服务区将不再去根服务器查询。
实现DNS转发(缓存)服务器
环境描述
操作系统 | IP地址 | 角色 | 安装组件 |
---|---|---|---|
Rocky8.6 | 172.25.3.80 | 客户端 | bind-utils |
Rocky8.6 | 172.25.3.82 | DNS主服务器 | bind、bind-libs、bind-utils |
Rocky8.6 | 172.25.3.83 | web服务器 | nginx |
Rocky8.6 | 172.25.3.84 | DNS缓存服务器 | bind、bind-libs、bind-utils |
实现步骤
实现转发(缓存)DNS服务器。
[root@rocky01 ~]# vim /etc/named.confoptions { ## 注销以下几行。 //listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { ::1; }; //allow-query { localhost; }; ## 修改一下两行 dnssec-enable no; ##关闭DNS安全功能,不能注销,默认值是yes。 dnssec-validation no; ##增加以下几行 forward first; forwarders { 172.25.3.84; };
检查配置文件是否正确并重新加载配置文件。
[root@rocky01 ~]# named-checkconf [root@rocky01 ~]# rndc reloadserver reload successful
实现主DNS服务器
[root@localhost ~]# vim /etc/named.confoptions { ## 注销以下 //listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { ::1; }; //allow-query { localhost; }; [root@localhost ~]# vim /etc/named.rfc1912.zoneszone "test.local" IN { type master; file "test.local.zone";};
配置主DNS服务器区域数据库文件
[root@localhost ~]# cp -p /var/named/named.localhost /var/named/test.local.zone[root@localhost named]# vim test.local.zone$TTL 1D @ IN SOA master admin.master.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 172.25.3.84 www A 172.25.3.83
检查主DNS服务器配置文件和区域配置文件,并重新加载。
[root@localhost named]# named-checkconf [root@localhost named]# named-checkzone test.local /var/named/test.local.zone zone test.local/IN: loaded serial 0OK [root@localhost named]# rndc reloadserver reload successful
客户端进行转发验证
## 设置客户端DNS指向[root@rocky ~]# cat /etc/resolv.conf # Generated by NetworkManagernameserver 172.25.3.82 ## 验证 [root@rocky ~]# dig ; <<>> DiG 9.11.36-RedHat-9.11.36-3.el8 <<>> ;; global options: +cmd ;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31500 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: ; udp: 1232 ; COOKIE: 0f36f9cda5dae884a2707a08632d4b5e3bafbbca4011e432 (good) ;; QUESTION SECTION:; ;; ANSWER SECTION: ;; AUTHORITY SECTION: test.local. 86400 IN NS master.test.local. ;; ADDITIONAL SECTION: master.test.local. 86400 IN A 172.25.3.84 ;; Query time: 8 msec ;; SERVER: 172.25.3.82#53(172.25.3.82) ;; WHEN: Fri Sep 23 13:59:56 CST 2022 ;; MSG SIZE rcvd: 124
验证 ‘first’ 参数效果。
[root@rocky ~]# host www.baidu.comwww.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 14.215.177.38 www.a.shifen.com has address 14.215.177.39 ## 停止主DNS服务器服务,清空DNS缓存服务器的缓存后再次访问互联网。 [root@localhost named]# systemctl stop named [root@rocky01 ~]# rndc flush [root@rocky ~]# host www.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 14.215.177.39 www.a.shifen.com has address 14.215.177.38
验证 ‘only’ 参数效果。(启动上面停止的主DNS服务器)
## 修改DNS缓存服务器的参数值 [root@rocky01 ~]# vim /etc/named.confoptions { //forward first; forward only; forwarders { 172.25.3.84; }; ## 访问互联网 [root@rocky01 ~]# host www.baidu.com www.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 14.215.177.38 www.a.shifen.com has address 14.215.177.39 ## 停止主DNS服务器,并清除所有DNS缓存 [root@localhost named]# rndc flush [root@localhost named]# systemctl stop named ## 清除DNS缓存服务器缓存,若客户端启动缓存也需要清理 [root@rocky01 ~]# rndc flush ## 再次访问互联网,可以看到无法进行解析了。 [root@rocky ~]# host Host www.baidu.com not found: 2(SERVFAIL)
错误问题
DNS解析错误:
5(REFUSED)
具体报错信息如下
[root@rocky ~]# host www.baidu.com Host www.baidu.com not found: 5(REFUSED)
解决办法
修改配置文件/etc/named.conf,将’allow-query’ 的值改为 ‘any’ 或者直接注释掉。
options { //listen-on port 53 { 127.0.0.1; }; //listen-on port 53 { localhost; }; //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"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; //allow-query { localhost; }; //allow-query { any; }; ## 注释掉
2(SERVFAIL)
[root@rocky ~]# host www.baidu.com Host www.baidu.com not found: 2(SERVFAIL)
解决办法
服务器时间不同步导致,同步时间即可正常解析。
版权声明
本文仅代表作者观点,不代表码农殇立场。
本文系作者授权码农殇发表,未经许可,不得转载。