域名解析DNS服务

news2024/11/15 7:06:58

DNS服务基础知识

DNS:Domain Name System (域名系统)

DNS 是互联网上解决网络中机器命名的一种系统。在网络中,一台主机去访问另外一台主机时,必须要 知道目标主机的IP地址,虽然网络上的节点都可以用IP地址来标识,并且可以通过IP地址被访问。但对 于自然人而言,一组组由数字组成的IP地址,是难以被理解和记忆的。于是设计出了域名系统,用一组 有意义的字符来表示某个特定主机或某个网络,再将网络中主机IP地址和域名之间做成一个映射表。

DNS 就是负责维护主机IP地址和域名映射关系的服务,同时也提供域名解析服务,即人类通过域名访问 某个主机或节点时,由DNS服务将人类可读的域名转换为机器可读的IP地址,再通过IP地址找到对应的 主机。

域名 (Domain Name)

域名,又称网域,顾名思义,是一个域的名称。 是一串用点号分隔的字符,可以用来标识网络中某台主 机或某个节点,由DNS服务维护域名和主机IP地址之间的映射关系,当我们在网络中访问某个域名时, 实际上访问的是该域名对应的IP地址所标识的主机。

FQDN:(Fully Qualified Domain Name)全限定域名

域名是一个域的名称,一个网域或一个节点,可以有多台主机,所以为了精确表示域里面的某台主机, 我们在使用域名时,还需要加上主机名,FQDN指的就是同时带有主机名和域名的名称。

域名的组成

域名由英文字母,数字和英文连字符(-) 组成,且不区分大小写。

域名是分层次的,允许定义子域,子域名与上级域名之间用 . (点号)分隔,最上层节点的域名称为顶级 域名(TLD,Top-Level Domain),第二层节点的域名称为二级域名,依此类推。级别最低的域名写在最 左边,而级别最高的域名写在最右边。每一层级的域名长度不能超过63个字符,多级域名加起来不能超 过255个字符。域名最多可以有127级。

域名的管理

域名由因特网域名与地址管理机构(ICANN,Internet Corporation for Assigned Names and Numbers) 管理,这是为承担域名系统管理、IP地址分配、协议参数配置,以及主服务器系统管理等职能而设立的 非盈利机构。

ICANN为不同的国家或地区设置了相应的顶级域名,这些域名通常都由两个英文字母组成。例如:.uk代 表英国、.fr代表法国、.jp代表日本。中国的顶级域名是.cn,.cn下的域名由CNNIC进行管理。

一级域名:又称顶级域名,可分为三类,一类代表国家和地区(cn,hk,......),一类代表各类组织 (com,edu,......),以及反向域

二级域名:某个具体组织,单位,机构,商业公司或个人使用,需要向域名管理机构申请(付费)才能获得 使用权

二级域名以下的域名,由使用该域名的组织自行分配

DNS服务工作原理

主机中DNS客户端配置

当一台主机接入互联网时,在配置网络时,通常有两种方式,一种是从DHCP服务自动获得IP地址,另外 一种是手动指定静态地址;

从DHCP服务自动获取IP时,通常也会自动获得DNS服务器地址,手动配置静态地址时,也需要手动配置 DNS服务器地址;

当用户使用主机 发送/接收 邮件,或浏览网页时,就是由主机上配置的DNS服务器地址负责将域名转换 成对应的IP地址。

Rocky中手动配置的DNS服务器地址

[root@rocky86 ~]# cat /etc/sysconfig/network-scripts/ifconfig-eth1
DEVICE=eth1
NAME=con-eth1
IPADDR=10.0.0.88
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.2
DNS2=114.114.114

#查看DNS
[root@rocky86 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
nameserver 10.0.0.2
nameserver 114.114.114.114

查看Ubuntu 中的DNS

[root@ubuntu ~]# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
 renderer: NetworkManager
 ethernets:
   eth0:
   #dhcp4: true
   addresses: [10.0.0.206/24]
   gateway4: 10.0.0.2
   nameservers:
     search: [magedu.com,baidu.org]
     addresses: [223.5.5.5,8.8.8.8]
version: 2
[root@ubuntu ~]# resolvectl status
Global
         Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
 resolv.conf mode: stub
Current DNS Server: 223.5.5.5
       DNS Servers: 223.5.5.5
Link 2 (eth0)
   Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 223.5.5.5
       DNS Servers: 223.5.5.5 8.8.8.8
       DNS Domain: 

DNS服务解析域名流程

  1. 当客户端主机决定访问 百度一下,你就知道 这个域名时,首先会查询本机缓存;

  2. 如果本机缓存没有解析记录,则会向其配置的DNS服务器发起解析请求;

  3. DNS代理解析服务器会先查询其缓存是否有这条解析记录,如果有,则直接返回,如果没有,则继 续向上解析;

  4. DNS代理解析服务器会向根域名服务器发起解析请求,根域名服务器返回 com 域名的DNS地址;

  5. DNS代理解析服务器继续向 com 域名服务器发起解析请求,com 域名服务器返回 baidu.com 域名服务器DNS地址;

  6. DNS代理解析服务器继续向 baidu.com 域名服务器发起解析请求,baidu.com 域名服务器返 回 www.baidu.com 主机的IP;

  7. DNS代理解析服务器将 www.baidu.com 的IP地址存入本机缓存,再读取缓存,将 IP地址发送给 客户端主机;

  8. 客户端主机通过IP地址顺利访问 百度一下,你就知道;

注意:DNS服务只负责域名解析,也就是说,DNS服务,只负责返回与域名对应的IP地址,但该IP地址在网络 上是否是可达的,并不由DNS决定

DNS查询类型

递归查询

是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地 没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。

一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器 本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户 机。

此查询的源和目标保持不变,为了查询结果只需要发起一次查询。

递归算法:客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道->他代 为帮客户端去查找-->最后再返回最终结果。

迭代查询

是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地 址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。

一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权 威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返 回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。

迭代算法:客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道并推荐 客户端应该找谁-->客户端自己去找它。

DNS缓存

DNS缓存是将解析数据存储在靠近发起请求的客户端的位置,也可以说DNS数据是可以缓存在任意位 置,最终目的是以此减少递归查询过程,可以更快的让用户获得请求结果。

Windows系统

#显示DNS缓存
C:\Users\44301>ipconfig/displaydns
Windows IP 配置
   ytbackend.godarkmode.com
    ----------------------------------------
   记录名称. . . . . . . : ytbackend.godarkmode.com
   记录类型. . . . . . . : 1
   生存时间. . . . . . . : 92
   数据长度. . . . . . . : 4
   部分. . . . . . . . . : 答案
   A (主机)记录 . . . . : 165.22.214.237
 ......
 
#清除DNS缓存
C:\Users\44301>ipconfig/flushdns

Windows IP 配置

已成功刷新 DNS 解析缓存。

CentOS系统

#查看DNS缓存
[root@rocky86 ~]# nscd -g
nscd configuration:
              0 server debug level
              4s server runtime
              5 current number of threads
             32 maximum number of threads
              0 number of times clients had to wait
             no paranoia mode enabled
           3600  restart internal
              5 reload count
passwd cache:
            yes cache is enabled
            yes cache is persistent
            yes cache is shared
            211 suggested size
 ......
 ......
 
#清空DNS缓存
[root@rocky86 ~]# nscd -i hosts

Ubuntu系统

#查看DNS缓存
[root@ubuntu ~]# resolvectl statistics
DNSSEC supported by current servers: no
Transactions              
Current Transactions: 0
 Total Transactions: 1152
                          
Cache                     
 Current Cache Size: 0
         Cache Hits: 11
       Cache Misses: 1399
                          
DNSSEC Verdicts           
             Secure: 0
           Insecure: 0
               Bogus: 0
       Indeterminate: 0

#清空DNS缓存
[root@ubuntu ~]# resolvectl reset-statistics

DNS解析类型

DNS服务器里面有两个区域,即 正向查找区域 和 反向查找区域

正向解析:将域名解析成IP地址

反向解析:根据IP地址得到该IP地址指向的域名

hosts文件

hosts文件是一个没有扩展名的系统文件,可以直接用文本编辑工具修改,在该文件中直接定义域名与IP 地址的对应关系,当主机访问某个域名时,会先从hosts文件中寻找与该域名对应的IP地址,如果找到, 则直接请求该IP地址,如果找不到,才会将该域名提交DNS服务请求解析该域名对应的IP地址。

操作系统规定,在进行DNS请求以前,先检查系统自己的Hosts文件中是否有这个域名和IP的映射关系。 如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向已知的DNS服务器提出域名解析请 求。也就是说Hosts的IP解析优先级比DNS要高。

hosts文件是引入DNS服务之前的解析方案

早期的 internet 网络规模非常小,一个hosts文件就可以定义所有的域名与IP地址的映射关系,管理机 构提供该文件下载地址,并定期更新文件内容,以此来反映网络上的变化。

但随着时间的推移,接入 internet 的主机和域名越来越多,通过一个中心文件管理所有域名与IP地址映 射关系己经不再可取,于是便引入了DNS服务

#Windows系统中的hosts文件
%windir%\System32\drivers\etc\hosts

# %windir% 是windows 系统中的环境变量写法,表示 Windows 安装目录,上述路径一般是
C:\Windows\System32\drivers\etc

#Linux系统中的hosts文件
/etc/hosts

DNS检测工具

dig命令

dig:(Domain Information Groper) 域名信息查询工具

dig 命令不会查询本地 hosts文件中定义的域名和IP对应关系

#安装
[root@ubuntu ~]# apt install bind9
#查询来源
root@ubuntu ~]# dpkg -S /usr/bin/dig
bind9-dnsutils: /usr/bin/dig
#命令格式            
dig [@global-server] [domain] [q-type] [q-class] {q-opt}
           {global-d-opt} host [@local-server] {local-d-opt}
           [ host [@local-server] {local-d-opt} [...]]      
            
dig [-t type] name [@SERVER] [query options] 

@global-server #指定DNS服务器
domain #要查询的域名
q-type #要查询的记录类型(a,any,mx,ns,soa,hinfo,axfr,txt,...),默认
a
q-class #要查询的解析类型(in|hs|ch),默认 in
q-opt #选项
d-opt #查询选项

#q-opt 项
-h #显示帮助
-v #显示版本号
-4                 #仅查询IPV4的DNS服务器
-6                 #仅查询IPV6的DNS服务器
-b address[#port]   #使用指定客户端IP去查询DNS
-c class           (specify query class)
-f filename         #从文件中获取要查询的域名
-i                 (use IP6.INT for IPv6 reverse lookups)
-k keyfile         (specify tsig key file)
-m                 (enable memory usage debugging)
-p port             #指定DNS服务查询端口
-q name             (specify query name)
-r                 (do not read ~/.digrc)
-t type             #指定要查询的资源记录类型A|NS|AAA|PTR|...
-u                 #以微秒显示打印时间
-x dot-notation     #反向解析
-y [hmac:]name:key (specify named base64 tsig key)

#d-opt 项
+[no]trace #是否追踪查询过程
+[no]cmd #是否在查询结果中显示头信息 
+[no]recurse #是否进行递归解析查询
+[no]all #是否显示所有信息,如果否,要指明具体显示内容
+[no]answer         #是否显示answer部份
+[no]question #是否显示question部份
+[no]authority     #是否显示authority部份
+[no]comment #是否显示comment部份
+[no]stat #是否显示status部份
+[no]short #是否只显示关键信息


#常用组合
dig domain
dig @dns-erver domain | dig domain @dns-server
dig -t q-type domain | dig domain q-type
git -x IP | dig -t ptr reverseIP.in-addr.arpa #reverseIP 表示将要查询的IP倒序输出

查询结果说明

[root@ubuntu ~]# dig

#dig命令版本和参数
; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> #此处查询参数为空
;; global options: +cmd #默认选项,此项表示显示头部软件版本和参数信息


#查询结果
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12947 #QUERY 表示是执行查询操作,NOERROR 表示解析成功
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1


# opcode: QUERY 执行查询操作
# status: NOERROR 解析成功
# id: 12947 此次查询的ID,在dns协议中,通过ID编号匹配查询请求和返回结果
# flags: qr rd ra 标志位
# qr(query,查询标志,代表查询操作)
# rd(recursion desired, 表示客户端希望进行递归查询)
# ra(recursive available, 表示DNS服务器支持递归查询)
# aa(Authoritative Answer, 权威回复,如果查询结果由管理域名的域名服务器而不是缓存服务器提供的,则称为权威回复)

#QUERY: 1 查询数,表示1个查询,对应下面 QUESTION SECTION中的记录数
#ANSWER: 13 查询结果,表示有13个查询结果,对应下面 ANSWER SECTION 中的记录数
#AUTHORITY: 0 权威域名服务器记录数量,此处表示有0个权威域名服务器
#ADDITIONAL: 1 额外记录数量,此处表示有1个额外记录,此处缺失该部份内容

#选项
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494

#EDNS: Extended DNS 扩展用户数据报文协议
#version:0 协议版本为 0
#flag:; 标记位为空
#udp:65494 数据包大小


#查询域名,此处表示查根域
;; QUESTION SECTION:
;. IN NS

#具体查询结果
#第一列是要要询的域名
#第二列是TTL(time to live),表示该记录的缓存时间,单位是秒
#第三列是要查询的信息类型,IN代表类别为IP协议,即Internet
#第四列是要查询的记录类型,NS表示name server,即域名服务器
#第五列表示查询得到的值
;; ANSWER SECTION:
. 2221 IN NS h.root-servers.net.
. 2221 IN NS a.root-servers.net.
. 2221 IN NS e.root-servers.net.
. 2221 IN NS i.root-servers.net.
. 2221 IN NS b.root-servers.net.
. 2221 IN NS k.root-servers.net.
. 2221 IN NS f.root-servers.net.
. 2221 IN NS d.root-servers.net.
. 2221 IN NS j.root-servers.net.
. 2221 IN NS g.root-servers.net.
. 2221 IN NS c.root-servers.net.
. 2221 IN NS m.root-servers.net.
. 2221 IN NS l.root-servers.net.

#本次查询统计信息
;; Query time: 0 msec #本次查询消耗时长
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) #DNS服务器为10.0.0.2 端口是53
;; WHEN: Tue May 30 15:46:07 CST 2023 #查询时间
;; MSG SIZE rcvd: 239 #返回内容长度为239字节

host命令

host 命令可以根据域名查询得到对应的服务器IP地址

host 命令不会查询本地 hosts文件中定义的域名和IP对应关系

host [option] hostname [server]

#常用选项
-a #显示所有信息
-c #指定查询类型 HS|CH|IN
-C #查询SOA
-d #同 -v
-i #IP6.INT reverse lookups  IP6.INT反向查找
-l #lists all hosts in a domain, using AXFR   使用AXFR列出域中的所有主机
-m #set memory debugging flag (trace|record|usage)   设置内存调试标志(跟踪|记录|使用)
-N #changes the number of dots allowed before root lookup is done  更改在完成根查找之前允许的点数
-p #指定端口
-r #不递归查询
-R specifies number of retries for UDP packets
-s a SERVFAIL response should stop query
-t #指定查询类型 CNAME|NS|SOA|TXT|DNSKEY|AXFR|...
-T #使用TCP进行DNS查询
-U #使用UDP进行DNS查询
-v #显示执行过程
-V #显示命令版本
-w #如果没有查询结果,则阻塞,一直等待
-W N #等待N秒后超时
-4 #仅查询IPV4的DNS server
-6 #仅查询IPV4的DNS server

nslookup 命令

nslookup:(name server lookup),一个命令行下的网络工具,主要用来查询DNS记录,查看域名解析 是否正常,也可用来诊断网络问题

nslookup 支持交互式和非交互式两种执行方式,在Windows系统中和Linux系统中都可以使用

nslookup 命令不会查询本地 hosts文件中定义的域名和IP对应关系,也不能查询dns的递归或者迭代

nslookup [-option] [name | -] [server]

#非交互式选项
-type #指定查询类型 A|AAAA|CNAME|...
-query #


set
server IP/DNS Name #指定DNS服务器,可以用IP地址或域名
root
-a
-d
-t type

rndc命令

rndc 是 bind 程序的客户端工具,默认使用 TCP的 953 端口连接 bind 服务器,进行管理

rndc [-b address] [-c config] [-s server] [-p port] [-k key-file ] [-y key] [-r] [-V] command

#常用子命令
status #查看BIND服务状态
reload #重载主配置文件和区域解析库文件
reload zonename #重载区域解析库文件
retransfer zonename #手动启动区域传送,而不管序列号是否增加
notify zonename #重新对区域传送发通知
reconfig #重载主配置文件
querylog #开启或关闭查询日志文件/var/log/message
trace #递增debug一个级别
trace LEVEL #指定使用的级别
notrace #将调试级别设置为 0
flush #清空DNS服务器的所有缓存记录

whois 命令

whois 命令可以查询域名注册信息

#安装
[root@ubuntu ~]# apt install whois -y

#格式
whois [OPTION]... OBJECT...

#常用选项
-H       #不显示相关法律声明             
--help           #显示帮助信息
--version       #显示版本信息

#下列选项需要 whois.ript.net 和 RIPE-like 服务器支持
-x #精确匹配
-b #输出简略内容
-a #搜索所有数据库镜像
-s SOURCE[,SOURCE] #从指定数据库中查询
-q [version|sources|types] #查询服务器信息

自建DNS服务

ubuntu 中的 systemd-resolved 服务

在 ubuntu 系统中,虽然在网卡中配置了 DNS 服务器的IP地址,但在使用相关命令进行 DNS 解析时, 默认的 DNS 服务器使用的是 127.0.0.53,而并不是我们在网卡上配置的DNS 服务器地址。

[root@ubuntu ~]# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
 renderer: NetworkManager
 ethernets:
   eth0:
      #dhcp4: true
     addresses: [10.0.0.206/24]
     gateway4: 10.0.0.2
     nameservers:
       search: [magedu.com,magedu.org]
       addresses: [223.6.6.6,8.8.8.8]
 version: 2
 
 [root@ubuntu ~]# nslookup www.baidu.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: www.baidu.com
Address: 140.143.156.192

systemd-resolved 服务为本地应用程序提供了网络名字解析服务, 系统通过它对外进行 dns 请求。

[root@ubuntu ~]# ll /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Apr 21  2022 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf


[root@ubuntu ~]# cat /etc/resolv.conf 
......
nameserver 127.0.0.53 #默认DNS 配置在此处
options edns0 trust-ad
search baidu.com baidu.org

#直接修改上述文件,将
[root@ubuntu ~]# vim /etc/resolv.conf
......
#nameserver 127.0.0.53
nameserver 223.6.6.6
#测试
[root@ubuntu ~]# nslookup www.baidu.com
Server: 223.6.6.6
Address: 223.6.6.6#53
Non-authoritative answer:
Name: www.baidu.com
Address: 140.143.156.192

#但是只要再次重启网络相关,该内容会被还原
[root@ubuntu ~]# netplan apply
[root@ubuntu ~]# cat /etc/resolv.conf | grep nameserver
nameserver 127.0.0.53

#修改软链接文件指向,保证永久生效
[root@ubuntu ~]# ll /etc/resolv.conf 
lrwxrwxrwx 1 root root 39 Apr 21  2022 /etc/resolv.conf -> 
../run/systemd/resolve/stub-resolv.conf

[root@ubuntu ~]# rm -f /etc/resolv.conf

[root@ubuntu ~]# ln -sv /run/systemd/resolve/resolv.conf /etc/resolv.conf
'/etc/resolv.conf' -> '/run/systemd/resolve/resolv.conf'

[root@ubuntu ~]# ll /etc/resolv.conf 
lrwxrwxrwx 1 root root 32 Jun  1 11:26 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

[root@ubuntu ~]# nslookup www.baidu.com
Server: 223.6.6.6
Address: 223.6.6.6#53

Non-authoritative answer:
Name: www.baidu.com
Address: 140.143.156.192

设置全局DNS

[root@ubuntu ~]# vim /etc/systemd/resolved.conf
......
DNS=223.5.5.5 223.6.6.6
#重启服务
[root@ubuntu ~]# systemctl restart systemd-resolved.service
#查看
[root@ubuntu ~]# cat /etc/resolv.conf
......
nameserver 223.5.5.5
nameserver 223.6.6.6

bind安装和配置

bind:(Berkeley Internet Name Domain)

bind 是一款实现DNS服务的开放源码软件,由伯克利大学开发,能够提供双向解析,转发,子域授权, view 等功能,使用广泛,目前Internet上半数以上的DNS服务器都是由Bind来实现的。

安装

[root@ubuntu ~]# apt install -y bind9
[root@ubuntu ~]# apt list bind* --installed
Listing... Done
bind9-dnsutils/jammy-updates,now 1:9.18.12-0ubuntu0.22.04.1 amd64 
[installed,automatic]
bind9-host/jammy-updates,now 1:9.18.12-0ubuntu0.22.04.1 amd64 
[installed,automatic]
bind9-libs/jammy-updates,now 1:9.18.12-0ubuntu0.22.04.1 amd64 
[installed,automatic]
bind9-utils/jammy-updates,now 1:9.18.12-0ubuntu0.22.04.1 amd64 
[installed,automatic] 
bind9/jammy-updates,now 1:9.18.12-0ubuntu0.22.04.1 amd64 [installed] 
#服务端包

启动服务

[root@ubuntu ~]# systemctl enable --now named.service
Synchronizing state of named.service with SysV service script with 
/lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable named

查看端口占用

named默认会占用TCP和UDP的53端口, 953是给管理工具使用的

将其它机器的DNS指向本机

[root@rocky ~]# hostname -I
10.0.0.150 192.168.122.1 
[root@rocky ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
nameserver 10.0.0.206

#解析成功,因为DNS服务器默认己经开启了远程监听53端口
[root@rocky ~]# dig www.baidu.com
; <<>> DiG 9.11.36-RedHat-9.11.36-3.el8 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12323
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 7b6b6d69fde55cbb0100000064783fe167f3e047ae5b4cd6 (good)
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 600 IN A 140.143.156.192
;; Query time: 266 msec
;; SERVER: 10.0.0.206#53(10.0.0.206)
;; WHEN: Thu Jun 01 14:51:14 CST 2023
;; MSG SIZE rcvd: 87

相关配置说明

Bind 的配置说明

配置文件解析流程

bind 配置文件

[root@ubuntu bind]# dpkg -L bind9
......
/etc/bind
/etc/bind/bind.keys
/etc/bind/db.0 #db.* 名具体解析规则文件
/etc/bind/db.127
/etc/bind/db.255
/etc/bind/db.empty
/etc/bind/db.local
/etc/bind/named.conf #主配置文件
/etc/bind/named.conf.default-zones #中间配置文件,该文件中定义了域名和具体解析规则文件的对应关系
/etc/bind/named.conf.local #中间配置文件,引用
/etc/bind/zones.rfc1918,被注释
/etc/bind/named.conf.options #bind配置项
/etc/bind/zones.rfc1918 #中间配置文件,该文件中定义了域名和具体解析规则文件的对应关系

主配置文件 /etc/bind/named.conf

[root@ubuntu bind]# cat /etc/bind/named.conf
......
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

选项配置文件 /etc/bind/named.conf.options

[root@ubuntu ~]# cat /etc/bind/named.conf.options
options {
 directory "/var/cache/bind";
 ......
 // forwarders {
 // 0.0.0.0;
 // };
 //========================================================================
 // If BIND logs error messages about the root key being expired,
 // you will need to update your keys. See https://www.isc.org/bind-keys
 //========================================================================
 dnssec-validation auto;
 listen-on-v6 { any; };
};

该文件主要包括以下几部份内容,默认只有全局配置部份

配置配置字段备注
全局配置options{};全局配置选项
日志子系统配置logging{};运行日志
网络自定义集合acl将某个网段或某个具体IP地址定义在一个集合里面
视图view配合acl将不同的请求来源用不同的解析规则返回,实现智能 DNS
#常用全局配置选项
options {
 
 #此配置表示DNS服务只监听了本机127.0.0.1的53端口,如果对外提供DNS服务,可以将此行注释或值改成any
 listen-on port 53 { 127.0.0.1; }; 
 
 #监听IPV6的53端口,配置方法同上
 listen-on-v6 port 53 { ::1; };
 
 #监听本机所有IPV6地址,不想监听IPV6地址,可以将 any 改成 none
 listen-on-v6 { any; };
 
 #此配置表示仅本机可以使用DNS服务的解析查询功能,如果对外提供DNS服务,可以将此行注释或值改成any
 allow-query     { localhost; }; 
 #是否启用加密验证,在使用转发的时候,将此项改为 no
 dnssec-validation auto;
 #转发服务器
 forwarders { 10.0.0.207; }; 
    
    #转发策略,具体见后续章节
 forward first; 

};

中间配置文件 /etc/bind/named.conf.default-zones

该文件中定义了要解析的域名与具体解析规则之间的对应关系

zone "ZONE_NAME" IN { #IN 可以省略不写
 type {master|slave|hint|forward}; #类型 master,slave 用于DNS主从,forward表示转发
 file "file_path"; #具体解析规则文件路径
};

allow 访问控制指令

在named配置中有四个allow开头的字段,主要用来实现访问控制

字段说明
allow-query{};允许查询本DNS的主机,白名单,注释就代表所有主机都可使用本机当DNS
allow-transfer{};允许区域传送的主机,白名单,注释代表所有,一般用在主从DNS配置时指 定从节点
allow-recursion{};允许递归的主机,建议全局使用
allow-update{};允许可以远程更新解析规则的主机

acl 地址集合

ACL:将一个或多个网段(或具体IP地址)定义在一个集合里面,并通过统一的名称进行调用。

ACL 只能先定义后调用,因此一般放在配置文件的最上面,在 options 之前定义。

ACL 有四个内置值

ACL说明
none排除所有主机
any所有主机
localhost本机
localnet本机IP同子网掩码运算后得到的网段

view 视图

view:视图,将ACL和具体的解析规则对应起来,实现根据条件解析,实现智能DNS

  • 每个view用来匹配一个ACL;

  • 一个bind服务可以可以定义多个view,每个view 中可定义的一个或多个zone;

  • 不同的view中可以对同一个域名进行解析,返回不同的解析结果;

  • 如果定义了view,则所有的zone规则都要写在view中了,不能再直接写在 /etc/named.conf 中 了;

  • 客户端请求到达时,是自上而下检查每个view所对应的ACL的,也就是说,如果请求被命中了,就 进入解析,不再向后匹配;

具体解析规则 /etc/bind/db.*

该文件定义域名的具体解析规则,该文件有多条资源记录组成,每一行都是一条资源记录,在RFC文档 中,DNS解析记录被称为Resource Recode(资源记录),缩写为 RR

Resource Recode 定义

NAME   TTL   CLASS   TYPE   VALUE

#字段说明
NAME #资源记录名称,根据TYPE不一样,写法会有不同
TTL #缓存有效期,默认单位是秒,也可以加单位{ M(分), H(时), D(天), 
W(周) }
CLASS #资源记录类别
TYPE #记录类型,具体值见下表
VALUE #此记录对应的具体值,根据TYPE不一样,写法会有不同

CLASS 字段说明

说明
INthe Internet/互联网,最常用的
CSCSNET,己被废弃
CHCHAOS ,一种早期协议
HSHesiod

TYPE字段说明

常用的TYPE字段值有A,AAAA,CNAME,MX,NS,PTR,SOA 等

说明
Ainternet Address,将FQDN解析成IPV4地址,这是最常用的一种解析类型
AAAAIPV6 internet Address,将FQDN解析成IPV6地址
CNAMEthe canonical name for an alias,记录别名,将域名解析到另一个域名
HINFOhost information,主机信息
KEY安全密钥记录
MD被废弃,使用 MX
MF被废弃,使用 MX
MINFOmailbox or mail list information,邮箱或邮件列表信息
MXMail eXchanger,用于邮件交换,指定邮件服务器
NSName Server,将解析指向另外一个DNS,表示由被指定的DNS解析当前记录
PTRa domain name pointer,域名指针,用IP地址反向解析域名
SOAa marks the start of a zone of authority,标记权威区域的开始
SRVservice and protocol,服务和协议
TXTtext strings,文本字符串,此类型值长度限定不超过512个字符
WKSa well known service description/众所周知的服务描述

A 记录 和 AAAA记录

A 记录也称主机记录,是将主机域名解析到指定的物理机IPV4地址上

AAAA 记录是IPV6地址的主机记录,是将主机域名解析到指定物理机的IPV6地址上

A 记录是DNS解析服务中最常见的资源记录

www.linux-baidu.com.   86400 IN A  10.0.0.210

blog.linux-baidu.com.  86400 IN A  10.0.0.206 
blog.linux-baidu.com.  86400 IN A  10.0.0.210 #如果有多条A记录,且有A记录的IP与DNS机器IP相同,则优先返回

*.linux-baidu.com.     86400 IN A  10.0.0.210 #泛解析,匹配所有以 linux-baidu.com结束的域名或主机名

linux-baidu.com. 86400 IN A  10.0.0.167 
@     86400 IN A  10.0.0.167 #@代表域名,此条记录含义同上

CNAME 别名记录

记录别名,将域名解析到另一个域名

abc.linux-baidu.com.  86400 IN CNAME def.baidu.com. #将 abc.linux-baidu.com 解析到 def.baidu.com

MX 记录

邮件交换 (MX) 记录将一个域的电子邮件定向到托管该域用户帐号的服务器(SMTP服务器)。

一个域可以定义多条MX记录,但每条MX记录的优先级不同,如果邮件通过最高优先级记录无法递送, 则采用第二优先级,以此类推。

每个MX记录的value之前有一个数字(0-99),表示此服务器的优先级,数字越小优先级越高;

对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

linux-baidu.com.      86400   IN MX  10 mx1.linux-baidu.com.
linux-baidu.com.      86400   IN MX  20 mx2.linux-baidu.com.
mx1.linux-baidu.com.  86400   IN A   10.0.0.206
mx2.linux-baidu.com.  86400   IN A   10.0.0.208

NS 记录

域名服务器 (NS) 记录用于确定哪些服务器为一个网域提供DNS解析服务。

一般来说,为了服务的安全可靠,一个域名,至少应该有两条NS记录,保证服务的冗余,防止出现单点 失败。

linux-baidu.com.       86400 IN NS dns1.linux-baidu.com.
linux-baidu.com.       86400 IN NS dns2.linux-baidu.com.
dns1.linux-baidu.com.  86400 IN A  10.0.0.206
dns2.linux-baidu.com.  86400 IN A  10.0.0.208

PTR 记录

PTR记录是A记录的逆向记录,又称做IP反查记录或指针记录,负责将IP反向解析为域名

#A记录
blog.linux-baidu.com.  86400 IN A  10.0.0.167

#与其对应的PTR记录
#IP地址反着写,后面跟 .in-addr.arpa.
167.0.0.10.in-addr.arpa.  86400 IN PTR blog.linux-baidu.com.

SOA 记录

SOA记录是起始授权记录,用于设置当前DNS服务器的某些规则,SOA记录要放在整个文件的最开始。

SOA 记录表示此DNS是该域名的权威解析服务器,当在查询的过程中,各级缓存都没有要查询的内容 时,最后会通过递归查询的方式到达此DNS服务器,并请求此域名的SOA记录。

SOA记录同样符合 NAME TTL CLASS TYPE VALUE 这五个字段的格式定义,但VALUE字段值较多

VALUE 字段中从左到右具体内容如下:

字段说明
DNS服务器名称描述性字段,表示当前DNS服务器名称
服务器管理员邮箱邮箱中的@要写成
当前数据库的版本号主从服务器要同步数据,此字段就是数据更新的标识
从服务器拉取数据的时间间隔从服务器拉取数据的时间间隔
从服务器同步失败后重试时间间隔上次同步失败后,间隔多久重试
从服务器同步失败超过多长时间从服 务器失败同步失败时长超过此值,则认为从服务器数据无效
不存在的记录缓存时长当查询一个不存在的解析记录时,该记录在指定时间内直 接返回不存在
linux-baidu.com.   86400 IN SOA linux-dns. admin.linux-dns.com. (123 3H 15M 1D 1W)
#服务器名 linux-dns
#管理员邮箱   amdin@linux-dns.com
#版本号 123
#从服务器更新间隔 3H
#失败重试间隔 15M
#从服务器数据失效时长 1D
#无效记录缓存时长     1W

TXT 记录

TXT记录是对域进行标识和说明的一种方式,一般用于验证记录,该记录的值可以是人工可读文本,也 可以是机器可读文本,也可为空。

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

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

相关文章

Unity | 基础知识

装箱和拆箱&#xff1a; 获取对方的类型&#xff1a; GetType通过打点调用 as进行类型转换 运用Convert进行类型转换&#xff1a; 二维数组的定义 结构体类型 不同名称空间来调用&#xff1a;

构建开发全能型档期预约系统

档期预约系统作为一种高效的时间管理和资源分配工具&#xff0c;在现代社会中的应用越来越广泛。以下是关于档期预约系统的详细分析&#xff1a; 一、系统概述 档期预约系统旨在帮助各类服务机构&#xff08;如医疗机构、美容院、教育培训机构等&#xff09;优化服务流程&…

低代码开发平台:重塑未来软件开发格局的关键力量

低代码开发平台正以前所未有的速度改变着软件开发的面貌&#xff0c;通过最小化手动编码&#xff0c;让用户能够迅速构建应用程序。随着企业对敏捷性和创新能力的追求日益增强&#xff0c;这类平台的需求激增。展望未来&#xff0c;技术进步与市场动态将引领低代码开发进入新的…

实习的一点回顾单元测试

多看看这个&#xff0c;生动 java - Spring、Spring Boot和TestNG测试指南 - 使用Mockito - 颇忒脱 - SegmentFault 思否 如何在Springboot项目中添加testngmockitojacoco单元测试_spring testng mockito-CSDN博客 1.介绍 TestNG 和 Mockito 是 Java 测试框架和库&#xff0…

从零开始学cv-13:形态学变换进阶操作

文章目录 前言一、孔洞填充二、形态学凸壳与细化 前言 通过上文的学习&#xff0c;我们已经基本掌握了基本的形态学操作&#xff0c;并且可以根据这些操作解决大部分实际问题&#xff0c;但还有一些单纯依靠上述算法难以解决的问题&#xff0c;下面我们来举几个更复杂的形态学…

基于单片机的家居环境监测系统的设计

本设计基于单片机的家居环境监测系统&#xff0c;采用STM32F103C6T6单片机作为主要的控制芯片&#xff0c;环境监测方面采用SHT30模块实现室内温度和湿度的监测&#xff1b;有害气体监测方面&#xff0c;用MQ-7传感器实现室内一氧化碳气体的监测&#xff1b;采用WIFI模块连接指…

BP神经网络学习内容分享:前向传播与后向传播

在深度学习和神经网络领域&#xff0c;BP&#xff08;Backpropagation&#xff0c;反向传播&#xff09;神经网络是一种非常基础且广泛应用的网络结构。它通过前向传播进行预测&#xff0c;并通过反向传播算法调整网络权重以优化预测结果。本文将详细介绍BP神经网络的前向传播和…

OrangePi AIpro 香橙派 昇腾 Ascend C算子开发 - NCHW和NHWC格式在内存中的存储方式及遍历方法

OrangePi AIpro 香橙派 昇腾 Ascend C算子开发 - NCHW和NHWC格式在内存中的存储方式及遍历方法 flyfish 从计算机硬件的角度来看&#xff0c;内存本质上是线性的一维数组 。尽管在编程时可以使用多维数组或更复杂的数据结构&#xff0c;但这些多维数据最终都被线性化存储在内…

FactoryBean 实战练习 - 注入自定义 Date

java.util.Date在Spring中被当做简单类型&#xff0c;简单类型在注入的时候可以直接使用value属性或value标签来完成。但是对于Date类型来说&#xff0c;采用value属性或value标签赋值的时候&#xff0c;对日期字符串的格式要求非常严格&#xff0c;必须是这种格式的&#xff1…

2) gaussian-splatting模型查看

本文在上面环境配置好的基础上&#xff0c;下载模型并查看&#xff0c;主要分享SIBR_viewers的编译流程&#xff0c;并简单分析SIBR_gaussianViewer_app的源码结构 目录 1 SIBR_viewers的编译2 SIBR_gaussianViewer_app源码解析 内容 1 SIBR_viewers的编译流程 用CMake配置项…

幂等的 4 种通用方案,一次性吃透

兄弟们&#xff0c;79 节了&#xff0c;59元100个案例&#xff08;实战源码文档技术支持&#xff09; 涵盖&#xff1a;高并发、接口性能优化、幂等、超卖、MQ专题、分布式事务、分库分表、常见问题排查、接口签名、接口加解密等各种实战案例&#xff1b;需要的朋友加我微信&am…

亦菲喊你来学机器学习(18) --TF-IDF方法

文章目录 TF-IDF词频TF逆文档频率IDF计算TF-IDF值 应用实验使用TF-IDF1. 收集数据2. 数据预处理3. 构建TF-IDF模型对象4. 转化稀疏矩阵5. 排序取值完整代码展示 jieba分词总结 TF-IDF TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff0c;词频-逆文档频率…

浅析Java线程池实现原理 1

目录 一、线程池 1.1 线程池是什么 1.2 线程池解决的问题是什么 二、线程池核心设计与实现 2.1 总体设计 ThreadPoolExecutor是如何运行&#xff0c;如何同时维护线程和执行任务的呢&#xff1f; 2.2 生命周期管理 2.3 任务执行机制 任务调度 任务缓冲 任务申请 任…

日常工作中的AI助手

近几年&#xff0c;人工智能进入了一个高速发展的阶段。AI也与各种业态深度融合&#xff0c;各类工具的出现也为行业赋能。今天&#xff0c;我们一起来探索几款能够在日常工作中提升效率的AI助手。 排名不分先后&#xff0c;内容仅供参考&#xff0c;大家可以根据实际需求自行…

计算机网络1.1

计算机网络&#xff1a;多台电脑 通过交换机 相互连接 互连网&#xff1a;多个计算机网络 通过路由器 连接 互联网&#xff1a;最大的互连网 电路交换&#xff1a; 报文交换&#xff1a;传送的数据在中间节点进行储存&#xff0c;再进行转发&#xff08;根据转发表确定转…

ctfshow(web入门-命令执行)-1

1.web29 只有当c参数的值不包含“flag”&#xff08;区分大小写&#xff09;&#xff0c;才会执行这段代码 $c $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}只要payload中没有flag即可 先尝试cat (右键源代码) tail,tac皆可 system("tail fla*"…

利用深度学习实现验证码识别-1

验证码(CAPTCHA)是网络安全中常用的一种机制,用于区分人类用户和自动化程序。然而,随着人工智能技术的发展,计算机视觉和深度学习算法在识别验证码方面取得了显著进展。本文将介绍如何使用PyTorch框架实现一个深度学习模型来识别简单的数字验证码。 数据生成与预处理 首先,我…

数据图像处理26

六、图像分割 6.3 分水岭图像分割 6.3.1分水岭算法的基本概念 分水岭算法之所以得名&#xff0c;是因为其的分割原理与地理学中的分水岭现象非常相似。在地理学中&#xff0c;分水岭是分隔相邻水系的山岭或高地&#xff0c;雨水会分别流向两侧的水系。 分水岭算法常用于图像…

代码随想录训练营day34|62.不同路径,63. 不同路径 II,343.整数拆分,96.不同的二叉搜索树

不同路径1 题目 题目并不难想&#xff0c;每一个点只有两种走到的方法&#xff0c;要么从左侧来&#xff0c;要么从上侧来&#xff0c;所以 dp[i][j]dp[i-1][j]dp[i][j-1]; vector<vector<int>> dp(m,vector<int>(n,0)); for(int i0;i<m;i){for(int j0;j…

MLM之Qwen:Qwen2-VL的简介、安装和使用方法、案例应用之详细攻略

MLM之Qwen&#xff1a;Qwen2-VL的简介、安装和使用方法、案例应用之详细攻略 目录 Qwen2-VL的简介 1、主要增强功能&#xff1a; 2、模型架构更新&#xff1a; 3、性能 图像基准测试 视频基准测试 代理基准测试 多语言基准测试 4、新闻 5、限制 Qwen2-VL的安装和使用…