美文网首页
1: DNS服务

1: DNS服务

作者: 随便写写咯 | 来源:发表于2020-07-26 22:18 被阅读0次

1 名字解析介绍和DNS

1.1 DNS简介(分布式)

当前TCP/IP网络中的设备之间进行通信, 是利用和依赖于IP地址实现的. 但数字形式的IP地址是很难记忆的. 当网络设备众多, 想要记住每个设备的IP地址, 可以说是"不可能完成的任务". 那么如何解决这一难题呢? 我们可以给每个网络设备起一个友好的名称, 如: www.wangxiaoning.com, 这种由文字组成的名称, 显而易见要更容易记忆. 但是计算机不会理解这种名称的, 我们可以利用一种名字解析服务将名称转化成(解析成)ip地址. 从而我们就可以利用名称来直接访问网络中的设备了. 除此之外还有一个重要功能, 利用名称解析服务可以实现主机和IP的解耦, 即: 当前主机IP变化时, 只需要修改名称服务即可, 用户仍可以通过原有的名称进行访问而不受影响.

实现此服务的方法是多样的. 如下面所述:
本地名称解析配置文件: /etc/hosts

Linux: /etc/hosts
Windows: %WINDOR%/system32/drivers/etc/hosts

#格式
122.10.117.2 www.baidu.com
93.46.8.89   www.google.com

DNS: Domain Name System 域名系统, 应用层协议, 是互联网的一项服务. 它作为将域名和IP地址相互映射的一个分布式数据库, 能够使人更方便地访问互联网, 基于C/S架构, 服务端: 53/udp(DNS查询), 53/tcp(主从复制)
BIND: Bekerley Internet Name Domain, 由ISC (www.isc.org) 提供的DNS软件实现DNS域名结构

分布式结构
  • 根域
  • 一级域名: Top Level Domain: TLD
    三类: 组织域, 国家域,(cn,au,...), 反向域
    com, edu, mil, gov, net, org, int, arpa
  • 二级域名: wangxiaoning.com
  • 三级域名: www.wangxiaoning.com
  • 最多可达到127级域名
  • 上级域名服务区存放了下级域名的信息
    ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称和数字地址分配机构, 负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理,以及根服务器系统的管理

1.2 DNS服务工作原理

DNS工作原理

1.3 DNS查询类型

  • 递归查询: 客户端向本地DNS服务器的查询, 返回的是最终结果, 负责到底
  • 迭代查询: 本地的DNS服务器向其他DNS服务器的查询, 返回的不是最终结果, 而是最好结果, 不负责到底

1.4 名称服务器

Name Server, 域内负责解析本域内的名称的DNS服务器
IPv4的根名称服务器: 全球共13个负责解析根域的DNS服务器, 美国10个, 荷兰1个, 瑞典1个, 日本1个
IPv6的根名称服务器: 全球共25个, 中国1主3从, 美国1主2从

1.5 解析类型

  • FQDN >>> IP 正向解析
  • IP >>> FQDN 反向解析
    注意: 正反向解析是两个不同的名称空间, 是两棵不同的解析树
注意: 
- 本地 /etc/hosts 不适合管理大规模架构, 因为每次服务器ip修改了就要到每台主机去修改/etc/hosts文件
- 可以通过修改本地hosts文件绑定ip和域名关系
- Linux默认是没有dns缓存的, 除非安装特定软件
- 可以修改hosts和本地dns服务器优先级关系 /etc/nsswitch
- 公网和内网域名不要一样,否则会有冲突,造成外网域名无法访问
# In order of likelihood of use to accelerate lookup.
passwd:      sss files systemd
shadow:     files sss
group:       sss files systemd
hosts:      files dns myhostname  
#files代表本地hosts文件, 把files和dns对调位置即可调整优先级, 但一般不改优先级, 让hosts文件优先
  • DNS服务器软件bind安装好后, 会生成/var/named/named.ca文件, 包含13个根服务器的地址, 所以任何一个DNS服务器都是天生知道根服务器地址的
;; 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      e.root-servers.net.
.                       518400  IN      NS      f.root-servers.net.
.                       518400  IN      NS      g.root-servers.net.
.                       518400  IN      NS      h.root-servers.net.
.                       518400  IN      NS      i.root-servers.net.
.                       518400  IN      NS      j.root-servers.net.
.                       518400  IN      NS      k.root-servers.net.
.                       518400  IN      NS      l.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
e.root-servers.net.     518400  IN      A       192.203.230.10
f.root-servers.net.     518400  IN      A       192.5.5.241
g.root-servers.net.     518400  IN      A       192.112.36.4
h.root-servers.net.     518400  IN      A       198.97.190.53
i.root-servers.net.     518400  IN      A       192.36.148.17
j.root-servers.net.     518400  IN      A       192.58.128.30
k.root-servers.net.     518400  IN      A       193.0.14.129
l.root-servers.net.     518400  IN      A       199.7.83.42
m.root-servers.net.     518400  IN      A       202.12.27.33
#也可以通过dig +bufsize=1200 +norec @a.root-servers.net命令查询根服务器地址
  • /var/named/:存放数据库文件
[21:16:40 root@centos-8-2-2004-1 ~]#ll /var/named
total 16
drwxrwx--- 2 named named    6 Jul  8 00:14 data
drwxrwx--- 2 named named    6 Jul  8 00:14 dynamic
-rw-r----- 1 root  named 2253 Jul  8 00:14 named.ca
-rw-r----- 1 root  named  152 Jul  8 00:14 named.empty
-rw-r----- 1 root  named  152 Jul  8 00:14 named.localhost
-rw-r----- 1 root  named  168 Jul  8 00:14 named.loopback
drwxrwx--- 2 named named    6 Jul  8 00:14 slaves
#库文件所有者是named和root, 所属组是named, 而named组只有named用户, 以此来保护DNS解析库文件安全性. 
#DNS数据库放的是公司服务器名称和IP地址对应关系, 所以即使普通用户也不能查看数据库文件, 如果黑客看到数据库文件信息可以直接发起攻击
#创建数据库文件时, 要按照库文件模板创建权限
  • 修改本机DNS服务器地址, 修改网卡配置文件
[21:37:49 root@centos-8-2-2004-1 ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 

DEVICE="ens33"
BOOTPROTO=static
IPADDR=10.0.0.81
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=127.0.0.1
ONBOOT=yes

1. 添加DNS1=a.b.c.d,添加DNS服务器地址需要指定编号
2. 保存配置文件,重启网络服务
3. 如果添加了多个DNS服务器地址,但是编号重复,则后添加的DNS服务器会生效
4. 添加多个DNS服务器时,要从1开始编号, DNS1, DNS2...否则未编号的DNS服务器不会生效
6. 重启网络服务后,打开 cat /etc/resolv.conf 文件验证
7. 支持注释

2 DNS 服务相关的概念和技术

2.1 DNS服务器的类型

  • 主DNS服务器
  • 从DNS服务器
  • 缓存DNS服务器(转发器)

2.1.1 主DNS服务器

管理和维护所负责解析的域内解析库的服务器

2.1.2 从DNS服务器

从主服务器或从服务器"复制"(区域传输)解析库副本

  • 序列号: 解析库版本号, 主服务器解析库变化时, 其序列增加
  • 刷新时间间隔: 从服务器从主服务器请求同步解析的时间间隔
  • 重试时间间隔: 从服务器请求同步失败时, 再次尝试时间间隔
  • 过期时长: 从服务器联系不到主服务器时, 多久会停止服务
  • 通知机制: 主服务器解析库发生变化时, 会主动通知从服务器

2.2 区域传输

  • 完全传输: 传递整个解析库
  • 增量传输: 传递解析库变化的那部分内容

2.3 解析形式

  • 正向: FQDN (Fully Qualified Domain Name) >>> IP
  • 反向: IP >>> FQDN

2.4 负责本地域名的正向和反向解析库

  • 正向区域
  • 反向区域

2.5 解析答案

  • 肯定答案: 存在对应的查询结果
  • 否定答案: 请求的条目不存在等原因导致无法返回的结果
  • 权威答案: 直接由存有从查询结果的DNS服务器(权威服务器)返回的答案
  • 非权威答案: 由其他非权威服务器返回的查询答案

2.6 各种资源记录

区域解析库: 由众多资源记录RR(Resource Record组成)
记录类型: A, AAAA, PTR, SOA, NS, CNAME, MX

  • SOA: Start Of Authority, 起始授权记录; 一个区域解析库必须有且仅能有一个SOA记录, 必须位于解析库的第一条记录, SOA记录了该区域数据库的元数据,属性
  • A: Internet Address, 作用, FQDN >>> IP
  • AAAA: FQDN >>> IPv6
  • PTR: PoinTeR, IP >>> FQDN
  • NS: Name Sever, 专用于标明当前区域的DNS服务器
  • CNAME: Canonical Name, 别名记录
  • MX: Mail Exchange, 邮件交换器
  • TXT: 对域名进行标识和说明的一种方式, 一般做验证记录时会使用此项, 如: SPF (反垃圾邮件)记录, https验证等, 如下示例:
_dnsauth TXT 2012011200000051qgs69vwoh4h6nht4n1h01r038x

2.6.1 资源记录定义的格式

name(资源记录名称)       [TTL]        IN(关键字)       rr_type(资源记录类型)     value(值)

A记录格式

  1. name
#格式1: 域名加.
www.anshan.org.
#格式2: 直接写主机名, 后面会自动补全.anshan.org. 因为, 一个区域数据库就是给一个域名用的
www
  1. [TTL]生命缓存时间

DNS服务器可以缓存从别处查看的DNS信息的, TTL就是设置了缓存的时长
默认以秒为单位

#格式1:
从全局继承


#格式2:
每条A记录里单独指定

注意:

  • TTL可从全局继承, DNS记录缓存时长, 默认86400秒
  • 使用"@"符号可用于引用当前区域的名字
  • 同一个名字可以通过多条记录定义多个不同的值; 此时DNS服务器会以轮询方式响应
  • 同一个值也可能有多个不同的定义名字; 通过多个不同的名字指向同一个值进行定义; 此仅表示通过多个不同的名字可以找到同一个主机
  • 如果name没有带".",那么会自动补全www.wangxiaoning.org.wangxiaoning.org.
  • 必备的三条记录是 SOA, A, NS

2.6.2 SOA记录

name: 当前区域的名字, 例如"wangxiaoning.org."
value: 由多部分组成

注意:

  • 当前区域的主DNS服务器的FQDN, 也可以使用当前区域的名字
  • 当前区域管理员的邮箱地址; 但地址不能使用@符号, 一般用"."替换
    例如: admin.wangxiaoning.org
  • 主从服务区域传输相关定义以及否定的答案的统一的TTL

范例:

wangxiaoning.org.(或者用@符号表示本域的域名)  86400  IN  SOA  ns.wangxiaoning.org. nsadmin.wangxiaoning.org. (
        
        20200703 ; 序列号
        2H       ; 刷新时间
        10M      ; 重传时间
        1W       ; 过期时间
        1D       ; 否定答案的TTL值

)

范例: SQA记录

  • name: www.wangxiaoning.org. | www, 对于SOA记录来说, name是管理的域名或者用"@"指代本域域名
  • TTL: 默认86400, 可以手动指定, 或者在文件开头定义$TTL=86400,这样每条记录的TTL可以从全局继承,不用手动指定
  • IN: 只需在SOA行指明即可,后续记录可以从全局SOA继承
  • rr_type: 根据当前记录类型指明
  • value:

SOA value:

  1. 主DNS服务器名称(名称无所谓,需要和A记录的name对应,格式正确即可) master | master.wangxiaoning.org.
  • master需要有对应的A记录
    master TTL(可省略,从全局继承) IN(可省略,从SOA记录继承) A 10.0.0.81
  1. 邮箱: DNS服务器管理员邮箱 "admin"或者"admin.anshan.org.". 不能用?""[-[]=];@符号, 因为@符号在DNS中是代表区域域名的宏定义
    (中间的TTL可以全局指定)
  2. 五项参数:

    当前DNS数据库版本号 ; serial
    20200723 #主从服务器数据同步比的就是版本号, 当主服务器版本号大于从, 则同步数据,无论是推还是拉,看的都是数据库版本,即使修改了主节点区域数据库文件,并且到了拉的时间,只要版本号一样,那么从节点就不会同步主节点信息. 该版本号需要人工维护, 并且最多10位数字.
    刷新时间 ; refresh
    1D #主从服务器多久同步一次, 这里是定期从服务器从主服务器拉取的时间间隔
    推: 主服务器发生变化后主动推送,根据数据变化触发. 只要主服务器版本号比从服务器版本大, 那么数据发生更新, 就会自动推送给从服务器
    拉: 从服务器定期询问主服务器, 根据时间变化触发
    重拉等待时间 ; retry
    1H #拉取失败后等待再次拉取时间. 避免主或从节点因为故障, 从节点无法定期拉取主服务器信息
    过期时间 ; expire
    1W #从节点从主节点拿到DNS数据库后, 如果从DNS始终无法和主DNS建立同步,那么一周后该从服务器就无法供用户提供查询,会认为给用户提供的数据不准确
    否定结果的缓存时长 ; minium
    3H #如果用户查询的域名在本地数据库不存在, DNS会把这个域名缓存下来, 之后再有相同查询,会直接从内存中返回不存在的否定结果,不会再查数据库, 否则每次都查询, 会浪费资源. 该记录会在内存缓存3个小时

2.6.3 NS记录

name: 当前区域的名字
value: 当前区域的某DNS服务器的名字, 例如: ns.wangxiaoning.org

注意:

  • 相邻的两个资源记录的name相同时, 后续的可省略
  • 对NS而言, 任何一个NS记录后面的服务器名字, 都应该在后续有一个A记录
  • 一个区域可以有多个NS记录, 区域内, 有几个主从服务器, 就要有几个NS记录

范例: NS记录

  • name: 域名, 可以省略,从SOA记录继承
  • TTL: 可以省略,从全局继承
  • IN: 可以省略,从SOA继承
  • NS
  • value: master
wangxiaoning.org. IN NS ns1.wangxiaoning.org.
wangxiaoning.org. IN NS ns2.wangxiaoning.org.

注意: DNS区域数据库, 至少要有三天记录, 第一条SOA, 第二天NS,第三天主服务器对应的A记录

2.6.4 MX记录

用于指定企业内邮件服务器的域名解析关系
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名

注意:

  • 一个区域内, MX记录可有多个, 但每个记录的value之前应该有一个数字(0-99), 表示此服务器的优先级, 数字越小优先级越高
  • 对MX记录而言, 任何一个MX记录后面的服务器名字, 都应该在后续有一个A记录

范例:
当企业内部一台客户端想通过企业邮件admin@wangxiaoning.org发送邮件给xxx@qq.com

  1. 客户端编辑邮件发送给企业内部邮件服务器mail.wangxiaoning.org

  2. 邮件服务器向企业内DNS查询qq邮件服务器地址

  3. DNS通过查询得知qq邮件服务器地址,回给内部邮件服务器

  4. 内部邮件服务器将邮件发给qq邮件服务器


    MX记录
@                       MX      10 mail1   @代表域名  10:优先级,越小越优先,优先用mail1发邮件
@                       MX      20 mail2
mail1                   A       10.0.0.11
mail2                   A       10.0.0.12

范例: 如何查询某域名下的邮件服务器信息

#内部域名
[06:52:18 root@centos-7-2003-1 ~]#dig -t MX wangxiaoning.org

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7 <<>> -t MX wangxiaoning.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62974
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;wangxiaoning.org.      IN  MX

;; ANSWER SECTION:
wangxiaoning.org.   86400   IN  MX  10 mail1.wangxiaoning.org.
wangxiaoning.org.   86400   IN  MX  20 mail2.wangxiaoning.org.

;; AUTHORITY SECTION:
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.
wangxiaoning.org.   86400   IN  NS  slave1.wangxiaoning.org.

;; ADDITIONAL SECTION:
mail1.wangxiaoning.org. 86400   IN  A   10.0.0.11
mail2.wangxiaoning.org. 86400   IN  A   10.0.0.12
master.wangxiaoning.org. 86400  IN  A   10.0.0.81
slave1.wangxiaoning.org. 86400  IN  A   10.0.0.82

;; Query time: 2 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Tue Jul 28 06:52:31 AEST 2020
;; MSG SIZE  rcvd: 195

#外部域名
[06:53:40 root@centos-7-2003-1 ~]#dig -t MX google.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7 <<>> -t MX google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19328
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 9

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com.            IN  MX

;; ANSWER SECTION:
google.com.     600 IN  MX  40 alt3.aspmx.l.google.com.
google.com.     600 IN  MX  30 alt2.aspmx.l.google.com.
google.com.     600 IN  MX  10 aspmx.l.google.com.
google.com.     600 IN  MX  20 alt1.aspmx.l.google.com.
google.com.     600 IN  MX  50 alt4.aspmx.l.google.com.

;; AUTHORITY SECTION:
google.com.     172799  IN  NS  ns3.google.com.
google.com.     172799  IN  NS  ns1.google.com.
google.com.     172799  IN  NS  ns2.google.com.
google.com.     172799  IN  NS  ns4.google.com.

;; ADDITIONAL SECTION:
ns2.google.com.     172799  IN  A   216.239.34.10
ns1.google.com.     172799  IN  A   216.239.32.10
ns3.google.com.     172799  IN  A   216.239.36.10
ns4.google.com.     172799  IN  A   216.239.38.10
ns2.google.com.     172799  IN  AAAA    2001:4860:4802:34::a
ns1.google.com.     172799  IN  AAAA    2001:4860:4802:32::a
ns3.google.com.     172799  IN  AAAA    2001:4860:4802:36::a
ns4.google.com.     172799  IN  AAAA    2001:4860:4802:38::a

;; Query time: 592 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Tue Jul 28 06:53:57 AEST 2020
;; MSG SIZE  rcvd: 395
#有些工作的DNS做了安全防护,因次只能显示DNS域名,无法显示ip地址,需要单独用dig,host或者nslookup再去单独查看ip地址

范例: 发假冒邮件
获得公司服务器邮件服务器ip地址后就可用发假冒邮件了

  1. 利用telnet登录到邮件服务器的25端口
#这里以google为例
[20:24:14 root@centos6-1 ~]#dig alt3.aspmx.l.google.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> alt3.aspmx.l.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50009
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 8

;; QUESTION SECTION:
;alt3.aspmx.l.google.com.   IN  A

;; ANSWER SECTION:
alt3.aspmx.l.google.com. 293    IN  A   209.85.146.27  #邮件服务器ip

[20:59:27 root@centos6-1 ~]#telnet 209.85.146.27 25
Trying 209.85.146.27...
Connected to 209.85.146.27.
Escape character is '^]'.
220 mx.google.com ESMTP u3si12626949ilj.1 - gsmtp
  1. 编辑邮件,假装自己是google员工发送邮件,这里就不演示了

2.6.5 A记录

name: 某主机的FQDN, 例如: www.wangxiaoning.org.
value: 主机名对应主机的ip地址

避免用户写错名称时给出错误答案, 可通过泛域名解析进行解析至某特定地址

范例:

www.wangxiaoning.org.               IN A 1.1.1.1
www.wangxiaoning.org.               IN A 2.2.2.2
mx1.wangxiaoning.org.               IN A 3.3.3.3
mx2.wangxiaoning.org.               IN A 4.4.4.4
$GENERATE 1-254 HOST$               IN A 1.2.3.$
*.wangxiaoning.org.                 IN A 5.5.5.5
wangxiaoning.org.                   IN A 6.6.6.6

范例:


阿里云

2.6.6 AAAA记录

name: FQDN
value: IPv6

2.6.7 PTR记录

name: IP, 有特定格式, 把IP地址反过来写, 1.2.3.4 要写作 4.3.2.1 而且有特定后缀: in-addr.arpa., 所以完整写法为: 4.3.2.1.in.-addr.arpa.
value: FQDN
注意: 网络地址及后缀可省略, 主机地址依然需要反着写
例如:

4.3.2.1.in-addr.arpa. IN PTR www.wangxiaoning.org.
#假如1.2.3为网络地址, 可简写成
4 IN PTR www.wangxiaoning.org.

2.6.8 CNAME别名记录

name: 别名的FQDN
value: 真正名字的FQDN
例如:

www.wangxiaoning.org. IN  CANME websrv.xiaoning.org

2.7 子域授权

实验案例1: 搭建本地局域网DNS服务器为本地客户端提供域名解析服务, 并且提供互联网访问

实验拓扑

image.png

实验环境

  • 在CentOS 8.2.2004上搭建DNS服务器
  • VMware Workstation 15 Pro
  • VMware NAT 网络: 10.0.0.0/24, GW: 10.0.0.2
  • CentOS 8.2.2004 : 10.0.0.81 - DNS
  • CentOS 7.2003 : 10.0.0.187 - Client1
  • CentOS 8.2.2004 : 10.0.0.82 - Client2
  • GW: 10.0.0.2 : VMware NAT 模式默认网关
  • 服务器软件: bind
  • 客户端程序: bind-utils

实验步骤

  1. 在服务器机(10.0.0.81)下载bind服务器端软件
[13:18:32 root@dns ~]#yum -y install bind
  1. 检查客户端是否安装了bind客户端软件(bind-utilis), 如果没有, 手动安装
###CentOS 7.2003 : 10.0.0.187 - Client1
[13:18:32 root@Client1 ~]#rpm -ql bind-utils
package bind-utils is not installed
[13:28:38 root@Client1 ~]#yum -y install bind-utils


###CentOS 8.2.2004 : 10.0.0.82 - Client2
[13:18:32 root@Client2 ~]#rpm -ql bind-utils
package bind-utils is not installed
[13:29:17 root@Client2 ~]#yum -y install bind-utils
  1. 查看DNS服务端口号,开启DNS服务并设置成开机自启
[13:27:30 root@dns ~]#ss -ntlu
Netid               State                Recv-Q               Send-Q                               Local Address:Port                               Peer Address:Port               
tcp                 LISTEN               0                    128                                        0.0.0.0:22                                      0.0.0.0:*                  
tcp                 LISTEN               0                    128                                           [::]:22                                         [::]:*                  
[13:31:17 root@dns ~]#systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
[13:31:23 root@dns ~]#ss -ntlu
Netid               State                Recv-Q               Send-Q                               Local Address:Port                               Peer Address:Port               
udp                 UNCONN               0                    0                                        127.0.0.1:53                                      0.0.0.0:*                  
udp                 UNCONN               0                    0                                            [::1]:53                                         [::]:*                  
tcp                 LISTEN               0                    10                                       127.0.0.1:53                                      0.0.0.0:*                  
tcp                 LISTEN               0                    128                                        0.0.0.0:22                                      0.0.0.0:*                  
tcp                 LISTEN               0                    128                                      127.0.0.1:953                                     0.0.0.0:*                  
tcp                 LISTEN               0                    10                                           [::1]:53                                         [::]:*                  
tcp                 LISTEN               0                    128                                           [::]:22                                         [::]:*                  
tcp                 LISTEN               0                    128                                          [::1]:953                                        [::]:* 
[13:31:25 root@dns ~]#ss -ntlup
Netid          State           Recv-Q          Send-Q                   Local Address:Port                   Peer Address:Port                                                      
udp            UNCONN          0               0                            127.0.0.1:53                          0.0.0.0:*              users:(("named",pid=1918,fd=512))          
udp            UNCONN          0               0                                [::1]:53                             [::]:*              users:(("named",pid=1918,fd=513))          
tcp            LISTEN          0               10                           127.0.0.1:53                          0.0.0.0:*              users:(("named",pid=1918,fd=21))           
tcp            LISTEN          0               128                            0.0.0.0:22                          0.0.0.0:*              users:(("sshd",pid=748,fd=4))              
tcp            LISTEN          0               128                          127.0.0.1:953                         0.0.0.0:*              users:(("named",pid=1918,fd=23))           
tcp            LISTEN          0               10                               [::1]:53                             [::]:*              users:(("named",pid=1918,fd=22))           
tcp            LISTEN          0               128                               [::]:22                             [::]:*              users:(("sshd",pid=748,fd=6))              
tcp            LISTEN          0               128                              [::1]:953                            [::]:*              users:(("named",pid=1918,fd=24)) 
  1. 修改DNS服务器监听ip

DNS服务器默认是工作在本地127.0.0.1端口, 因此只能为本地客户端提供服务, 即使远程客户端配置了DNS服务器指向DNS服务器, 也无法解析, 所以安装DNS服务程序后要修改监听端口

可以通过DNS客户端命令进行域名解析检验

[13:32:44 root@Client1 ~]#rpm -ql bind-utils
/etc/trusted-key.key
/usr/bin/delv
/usr/bin/dig # Linux
/usr/bin/host # Linux
/usr/bin/mdig
/usr/bin/nslookup # Linux和Windows都支持
/usr/bin/nsupdate
/usr/share/man/man1/delv.1.gz
/usr/share/man/man1/dig.1.gz
/usr/share/man/man1/host.1.gz
/usr/share/man/man1/mdig.1.gz
/usr/share/man/man1/nslookup.1.gz
/usr/share/man/man1/nsupdate.1.gz

未修改DNS服务器默认监听端口情况: 即使客户端的DNS服务器指向了服务器,也无法完成解析

[13:36:50 root@Client1 ~]#dig www.baidu.com @10.0.0.81

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.baidu.com @10.0.0.81
;; global options: +cmd
;; connection timed out; no servers could be reached

修改DNS服务器配置文件

[13:31:56 root@dns ~]#vim /etc/named.conf
###初始###
options {
        listen-on port 53 { 127.0.0.1; };    
        # 1. listen-on port 53 { 127.0.0.1;10.0.0.81; }; 
        # 2. listen-on port 53 { localhost; };      #"localhost"是DNS自带关键字,代表当前机器上所有IP  
        # 3. // listen-on port 53 { 127.0.0.1; };   #注释掉这行, 就相当于监听localhost, 不能写0.0.0.0 不生效
        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; };
###修改后###
options {
        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; };
###重启DNS服务
[13:39:40 root@dns ~]#systemctl restart named

补充:

  • 利用953管理端口, 使用服务器端工具rndc来管理DNS配置

重新加载配置文件

[13:39:58 root@dns ~]#rndc reload
server reload successful
  • DNS服务器配置文件格式语法检查工具 named-checkconf, 修改DNS服务器配置文件后要检查语法格式
[13:40:14 root@dns ~]#named-checkconf
  1. 修改DNS服务器查询权限

修改服务器监听端口后,还需要修改权限,否则DNS查询请求会被服务器拒绝

图片.png

再次修改named.conf配置文件

###修改前
options {
        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; };  #默认只允许localhost也就是来自本机的ip发送的DNS查询请求
        # 1. allow-query { localhost;10.0.0.0/24; } 允许本机和10网段主机查询DNS
        # 2. allow-query { any; } 允许所有ip查询DNS, 互联网的DNS都是允许所有
        # 3. // allow-query { localhost; } 注释掉这行就变成允许所有

###修改后
options {
        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     { any; };  
###重启DNS服务
[13:46:43 root@dns ~]#rndc reload
server reload successful

###验证客户端可以完成DNS查询
[13:51:13 root@Client1 ~]#host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 110.242.68.4
www.a.shifen.com has address 110.242.68.3

[13:42:21 root@Client1 ~]#dig www.baidu.com @10.0.0.81

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.baidu.com @10.0.0.81
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28516
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6 # flags位如果显示aa, 那么表示来自权威服务器, 也就是客户端查询的地址就在本地DNS

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.baidu.com.         IN  A

;; ANSWER SECTION:
www.baidu.com.      1200    IN  CNAME   www.a.shifen.com.
www.a.shifen.com.   300 IN  A   110.242.68.4
www.a.shifen.com.   300 IN  A   110.242.68.3

;; AUTHORITY SECTION:
a.shifen.com.       1199    IN  NS  ns4.a.shifen.com.
a.shifen.com.       1199    IN  NS  ns2.a.shifen.com.
a.shifen.com.       1199    IN  NS  ns3.a.shifen.com.
a.shifen.com.       1199    IN  NS  ns5.a.shifen.com.
a.shifen.com.       1199    IN  NS  ns1.a.shifen.com.

;; ADDITIONAL SECTION:
ns5.a.shifen.com.   1199    IN  A   180.76.76.95
ns2.a.shifen.com.   1199    IN  A   220.181.33.32
ns1.a.shifen.com.   1199    IN  A   110.242.68.42
ns4.a.shifen.com.   1199    IN  A   14.215.177.229
ns3.a.shifen.com.   1199    IN  A   112.80.255.253

;; Query time: 2891 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Sun Jun 06 13:47:54 CST 2021
;; MSG SIZE  rcvd: 271

[13:51:52 root@Client1 ~]#nslookup www.baidu.com
Server:     10.0.0.81
Address:    10.0.0.81#53

Non-authoritative answer: #利用nslookup解析域名可以提示结果是否来自权威服务器,Non-authoritative answer:表示查询结果来自第三方,并不一定是真实的, 因为是从客户端指向的DNS服务器得来的地址, 而不是直接查询的权威DNS服务器
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 110.242.68.3
Name:   www.a.shifen.com
Address: 110.242.68.4

补充:

  • 利用dig命令实现临时指定DNS服务器地址,可以用来测试DNS服务器

在客户端安装DNS客户端后, 测试是否能从服务器端10.0.0.81查询到DNS结果

###当前Centos 8 Client2采用的是网络DNS
[13:34:20 root@Client2 ~]#cat /etc/resolv.conf
# Generated by NetworkManager
search Prac
nameserver 223.5.5.5
nameserver 223.5.5.6


[13:54:01 root@Client2 ~]#host www.baidu.com 10.0.0.81
Using domain server:
Name: 10.0.0.81
Address: 10.0.0.81#53
Aliases: 

www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 110.242.68.4
www.a.shifen.com has address 110.242.68.3


[13:54:20 root@Client2 ~]#dig www.baidu.com @10.0.0.81

; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> www.baidu.com @10.0.0.81
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15858
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: b50bdfe2a5a9bb0ae0f3990d60bc6323a1d683fa25444479 (good)
;; QUESTION SECTION:
;www.baidu.com.         IN  A

;; ANSWER SECTION:
www.baidu.com.      788 IN  CNAME   www.a.shifen.com.
www.a.shifen.com.   277 IN  A   110.242.68.4
www.a.shifen.com.   277 IN  A   110.242.68.3

;; AUTHORITY SECTION:
a.shifen.com.       790 IN  NS  ns1.a.shifen.com.
a.shifen.com.       790 IN  NS  ns3.a.shifen.com.
a.shifen.com.       790 IN  NS  ns5.a.shifen.com.
a.shifen.com.       790 IN  NS  ns2.a.shifen.com.
a.shifen.com.       790 IN  NS  ns4.a.shifen.com.

;; ADDITIONAL SECTION:
ns5.a.shifen.com.   790 IN  A   180.76.76.95
ns2.a.shifen.com.   790 IN  A   220.181.33.32
ns1.a.shifen.com.   790 IN  A   110.242.68.42
ns4.a.shifen.com.   790 IN  A   14.215.177.229
ns3.a.shifen.com.   790 IN  A   112.80.255.253

;; Query time: 1 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Sun Jun 06 13:54:43 CST 2021
;; MSG SIZE  rcvd: 299


[13:54:43 root@Client2 ~]#nslookup
> server 10.0.0.81
Default server: 10.0.0.81
Address: 10.0.0.81#53
> www.baidu.com
Server:     10.0.0.81
Address:    10.0.0.81#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 110.242.68.3
Name:   www.a.shifen.com
Address: 110.242.68.4

到此一个简易的局域网本地DNS服务器已经搭建完毕

  • 客户端可以通过10.0.0.81上搭建的DNS服务器进行DNS解析,访问互联网

总结:

本地局域网DNS服务器通常充当DNS缓存作用, 提高DNS解析速度, 以及减少广域网带宽消耗, 所以一般公司都是有自己的DNS本地服务器

缺点:

本地DNS服务器性能问题, 内部搭建的局域网DNS服务器性能没有公网DNS服务器性能好

搭建本地DNS步骤:
1. DNS服务器安装bind软件
2. 修改配置文件, 监听端口, 以及允许的权限
3. 启动服务
4. 客户端修改DNS, 指向DNS服务器监听的IP地址
5. 客户端dig测试

故障案例:

网页打不开但是qq聊天正常, 就是因为DNS解析出了问题导致无法解析到网站ip,但是qq不是走的DNS所以不受影响,因为走的是服务器ip地址

实验案例2: 搭建企业内部DNS服务, 为企业内部用户提供互联网访问, 并且为企业内部服务器做名字解析,使得内部不同主机之间利用名称互访

实验拓扑

image.png

实验环境

在CentOS 8.2.2004上搭建DNS服务器
VMware Workstation 15 Pro
VMware NAT 网络: 10.0.0.0/24, GW: 10.0.0.2
CentOS 8.2.2004 : 10.0.0.81 充当主DNS服务器
CentOS 6.0 : 10.0.0.61 #DNS客户机
CentOS 6.0 : 10.0.0.62 #充当局域网db服务器
CentOS 7.2003 : 10.0.0.71 #DNS客户机
CentOS 7.2003 : 10.0.0.72 #充当局域网www服务器
GW: 10.0.0.2 : VMware NAT 模式默认网关
服务器软件: Bind DNS
客户端程序: bind-utils

  1. 创建wangxiaoning.org区域数据库文件
###DNS区域数据库文件存放在/var/named目录下
[11:04:43 root@centos-8-2-2004-1 ~]#cd /var/named
[11:04:50 root@centos-8-2-2004-1 /var/named]#ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

###创建区域数据库文件
[11:04:52 root@centos-8-2-2004-1 /var/named]#vim wangxiaoning.org.zone #文件名和后缀无所谓,能区分是哪个域的区域数据库文件即可
$TTL 86400
@               IN      SOA     master admin ( 20200723 1D 1H 3D 1H )
                        NS      master
master                  A       10.0.0.81
www                     A       10.0.0.72
db                      A       10.0.0.62
#10.0.0.72 是Cento7虚拟机, 充当www服务器
#10.0.0.62是Centos6虚拟机,充当db服务器
  1. 修改数据库文件权限
[12:45:15 root@centos-8-2-2004-1 /var/named]#chgrp named wangxiaoning.org.zone 
[12:45:28 root@centos-8-2-2004-1 /var/named]#chmod o-r wangxiaoning.org.zone 
[12:45:36 root@centos-8-2-2004-1 /var/named]#ll
total 20
drwxrwx--- 2 named named   23 Jul 26 21:26 data
drwxrwx--- 2 named named   60 Jul 27 11:04 dynamic
-rw-r----- 1 root  named 2253 Jul  8 00:14 named.ca
-rw-r----- 1 root  named  152 Jul  8 00:14 named.empty
-rw-r----- 1 root  named  152 Jul  8 00:14 named.localhost
-rw-r----- 1 root  named  168 Jul  8 00:14 named.loopback
drwxrwx--- 2 named named    6 Jul  8 00:14 slaves
-rw-r----- 1 root  named  135 Jul 27 12:45 wangxiaoning.org.zone
  1. 将创建的数据库文件与DNS服务器关联, 否则DNS服务器不知道要用该数据库文件, 以下两种方法都可以
  • 修改DNS服务器配置文件
[12:47:59 root@centos-8-2-2004-1 ~]#vim /etc/named.conf
zone "wangxiaoning.org"  IN {  #zone写的是域名
        type master; # master区域数据库
        file "wangxiaoning.org.zone"; #无需指明绝对路径, 配置文件已经标识了存放路径/var/named
};
#配置文件中定义的数据库文件存放的默认路径
options {
    directory   "/var/named";
  • 修改/etc/named/rfc1912.zones文件(专门放区域数据库配置文件信息,也可以用named-checkconf来检查语法格式错误,改命令来自于bind包)
[12:53:34 root@centos-8-2-2004-1 ~]#vim /etc/named.rfc1912.zones 
zone "wangxiaoning.org" IN {  #这里的IN是可以省略的
        type master;
        file "wangxiaoning.org.zone";
};

4 检查区数据库文件格式语法/var/named/wangxiaoning.org.zone, named-checkzone, 该命令来自于bind-utils工具包

[12:56:57 root@centos-8-2-2004-1 ~]#named-checkzone wangxiaoning.org /var/named/wangxiaoning.org.zone
[13:00:11 root@centos-8-2-2004-1 ~]#named-checkzone wangxiaoning.org /var/named/wangxiaoning.org.zone
zone wangxiaoning.org/IN: loaded serial 20200723
OK

5 重新加载DNS服务

[13:01:45 root@centos-8-2-2004-1 ~]#rndc reload
server reload successful

6 验证

#在Centos 6, 10.0.0.61客户机验证,能通过10.0.0.81内部DNS服务器解析出www.wangxiaoning.org的服务器ip
[13:07:29 root@centos6-1 ~]#dig www.wangxiaoning.org

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> www.wangxiaoning.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34909
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.wangxiaoning.org.      IN  A

;; ANSWER SECTION:
www.wangxiaoning.org.   86400   IN  A   10.0.0.72

;; AUTHORITY SECTION:
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.

;; ADDITIONAL SECTION:
master.wangxiaoning.org. 86400  IN  A   10.0.0.81

;; Query time: 2 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Mon Jul 27 13:16:20 2020
;; MSG SIZE  rcvd: 91

#在Centos 7, 10.0.0.11客户机验证,能通过10.0.0.81内部DNS服务器解析出db.wangxiaoning.org的服务器ip
[23:08:12 root@centos-7-2003-1 ~]#dig db.wangxiaoning.org

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7 <<>> db.wangxiaoning.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28962
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;db.wangxiaoning.org.       IN  A

;; ANSWER SECTION:
db.wangxiaoning.org.    86400   IN  A   10.0.0.62

;; AUTHORITY SECTION:
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.

;; ADDITIONAL SECTION:
master.wangxiaoning.org. 86400  IN  A   10.0.0.81

;; Query time: 0 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Mon Jul 27 23:17:51 AEST 2020
;; MSG SIZE  rcvd: 101

7 在Centos 7 10.0.0.72 搭建httpdWeb服务,验证内部客户端能通过10.0.0.81解析出www.wangxiaoning.org地址

[root@centos-7-2003-2 html]# yum -y install httpd ;systemctl start httpd; echo "www.wangxiaoning.org" >> /var/www/html/index.html

[23:43:16 root@centos-7-2003-1 ~]#curl www.wangxiaoning.org
www.wangxiaoning.org
[13:36:01 root@centos6-1 ~]#curl www.wangxiaoning.org
www.wangxiaoning.org

#如果用curl命令出现以下报错,请检查web服务器防火墙是否被开启,如果开启了需要关闭
[13:36:01 root@centos6-1 ~]#curl www.wangxiaoning.org
www.wangxiaoning.org
[23:35:10 root@centos-7-2003-1 ~]#curl www.wangxiaoning.org
curl: (7) Failed connect to www.wangxiaoning.org:80; No route to host

至此,一个可供局域网内部使用的DNS服务器已经搭建完成, 对于内部的域名, 可以通过内部DNS服务器完成解析, 对于外部域名, 内部DNS服务器会请求自己配置的互联网DNS服务器完成解析

过程总结:
1. 编辑区域数据库文件,/var/named/xxx.zone
2. 区域数据库文件至少三条记录, SOA指定区域数据库的元数据, NS记录,指定区域数据库有哪些DNS服务器, A记录, 指明NS记录中的DNS服务器地址
3. 在DNS配置文件中指定区域数据库信息, 就是绑定. 可以在named.conf做,也可以在/etc/named/rfc1912.zones做
4. rndc reload
5. 测试

实验案例3: 搭建从节点备用DNS服务器

实验环境

Centos 8 10.0.0.81 DNS主节点服务器
Centos 8 10.0.0.82 DNS从节点服务器

主服务器DNS区域数据库文件放在/var/named文件夹,从服务器从主服务器同步过来的数据库放在/var/named/slaves

[16:54:17 root@centos-8-2-2004-2 ~]#ll /var/named
total 16
drwxrwx--- 2 named named   23 Jul 27 16:42 data
drwxrwx--- 2 named named   60 Jul 27 16:42 dynamic
-rw-r----- 1 root  named 2253 Jul  8 00:14 named.ca
-rw-r----- 1 root  named  152 Jul  8 00:14 named.empty
-rw-r----- 1 root  named  152 Jul  8 00:14 named.localhost
-rw-r----- 1 root  named  168 Jul  8 00:14 named.loopback
drwxrwx--- 2 named named    6 Jul  8 00:14 slaves  #named对该文件夹有写权限,因为从服务器需要从主服务器自动获得数据放在slaves文件夹里
  1. 从节点服务器安装软件, 服务设置开机启动
[16:41:48 root@centos-8-2-2004-2 ~]#dny -y install bind;systemctl enable --now named
  1. 修改从节点DNS配置文件/etc/named.conf
//      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; }; # 直接注释掉
  1. 关联从节点区域数据库文件,配置/etc/named.rfc1912.zones
  • 创建从节点区域信息
  • 指明谁是主节点
  • 从哪里复制DNS数据信息
[16:44:45 root@centos-8-2-2004-2 ~]#vim /etc/named.rfc1912.zones 
zone "wangxiaoning.org" {  #域名要和主节点域名一致
        type slave;                   #slave指明这是从服务器
        masters { 10.0.0.81; };  # ip地址指明主节点ip
        file "slaves/wangxiaoning.org.zone.slave";  #指明从节点区域库文件, 文件名无所谓, 会自动从主节点拉取
}
  1. 检查DNS配置文件格式语法, 重新加载DNS配置文件
[17:06:15 root@centos-8-2-2004-2 ~]#named-checkconf
[17:06:44 root@centos-8-2-2004-2 ~]#rndc reload
server reload successful
  1. 验证主服务器区域数据库已经同步到从服务器
[17:07:17 root@centos-8-2-2004-2 ~]#ll /var/named/slaves/
wangxiaoning.org.zone.slave
[17:08:13 root@centos-8-2-2004-2 ~]#file /var/named/slaves/wangxiaoning.org.zone.slave 
/var/named/slaves/wangxiaoning.org.zone.slave: data
#该文件不是普通文本文件,是被转换成了而今次, 无法直接打开查看,出于安全考虑,一旦从节点被黑,企业服务器信息会暴露(Centos6从节点是文本文件可以直接打开,从7开始就是无法直接打开的了)
  1. 验证从节点和主节点冗余成功

在客户端Centos 6, 10.0.0.61配置两个DNS地址,一个指向主节点,一个指向从节点

[16:37:23 root@centos6-1 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DNS1=10.0.0.81
DNS2=10.0.0.82

重启网络服务,验证DNS地址修改成功

[17:25:23 root@centos6-1 ~]#cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain linux
nameserver 10.0.0.81
[17:25:27 root@centos6-1 ~]#service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Determining if ip address 10.0.0.61 is already in use for device eth0...
                                                           [  OK  ]
[17:25:42 root@centos6-1 ~]#cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain linux
nameserver 10.0.0.81
nameserver 10.0.0.82

将主节点10.0.0.81停止DNS服务,验证客户端Centos6 10.0.0.61依然能从从节点解析域名

[13:50:37 root@centos-8-2-2004-1 ~]#rndc stop
[17:28:23 root@centos-8-2-2004-1 ~]#ss -ntl
State      Recv-Q      Send-Q           Local Address:Port           Peer Address:Port     
LISTEN     0           128                    0.0.0.0:22                  0.0.0.0:*        
LISTEN     0           128                       [::]:22                     [::]:* 

[17:26:31 root@centos6-1 ~]#host www.wangxiaoning.org
www.wangxiaoning.org has address 10.0.0.72
[17:29:33 root@centos6-1 ~]#nslookup www.wangxiaoning.org
Server:     10.0.0.82
Address:    10.0.0.82#53

Name:   www.wangxiaoning.org
Address: 10.0.0.72

[17:29:40 root@centos6-1 ~]#dig www.wangxiaoning.org

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> www.wangxiaoning.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63158
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.wangxiaoning.org.      IN  A

;; ANSWER SECTION:
www.wangxiaoning.org.   86400   IN  A   10.0.0.72

;; AUTHORITY SECTION:
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.

;; ADDITIONAL SECTION:
master.wangxiaoning.org. 86400  IN  A   10.0.0.81

;; Query time: 6 msec
;; SERVER: 10.0.0.82#53(10.0.0.82)
;; WHEN: Mon Jul 27 17:30:10 2020
;; MSG SIZE  rcvd: 91
#由结果可见,当主节点DNS服务关闭, 客户端依旧可从从节点获取DNS解析

到此,已经完成DNS冗余的实现,当主节点DNS服务宕机,客户端依旧可通过从节点进行DNS解析

1. 从节点安装DNS软件
2. 从节点配置区域数据库文件, 指明主节点信息, 指明自己是slave节点, 指明区域数据库文件存放路径和名字
3. named-checkconf 检查语法
4. rndc reload
5. 客户端测试
6. 停止主节点, 测试从节点可用

接下来要实现主从数据保持同步

  1. 先将上一步关闭的DNS服务启动, Centos 8 10.0.0.81
[17:33:42 root@centos-8-2-2004-1 ~]#systemctl start named
  1. 在主服务器区域数据库文件添加新的DNS记录
[17:40:28 root@centos-8-2-2004-1 ~]#vim /var/named/wangxiaoning.org.zone 
$TTL 86400
@               IN      SOA     master admin ( 20200723 1D 1H 3D 1H )
                        NS      master
master                  A       10.0.0.81
www                     A       10.0.0.72
db                      A       10.0.0.62
k8s                     A       10.0.0.1  #新增局域网服务器信息

#rndc reload重新加载DNS配置文件
[17:43:11 root@centos-8-2-2004-1 ~]#rndc reload
server reload successful
  1. 验证此时从节点区域数据库是否有该记录
[16:54:52 root@centos-8-2-2004-2 ~]#ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 344 Jul 27 17:06 wangxiaoning.org.zone.slave
#通过文件大小可以看出,新增的记录并没有同步到从节点上.
#因为,主从服务器数据同步比的就是版本号, 当主服务器版本号大于从, 则同步数据
#无论是推还是拉,看的都是数据库版本,即使修改了主节点区域数据库文件,并且到了拉的时间
#只要版本号一样,那么从节点就不会同步主节点信息
  1. 修改主节点区域数据库版本号, 只要比从节点大就行
[17:40:28 root@centos-8-2-2004-1 ~]#vim /var/named/wangxiaoning.org.zone 
$TTL 86400
@               IN      SOA     master admin ( 20200727 1D 1H 3D 1H )
                        NS      master
master                  A       10.0.0.81
www                     A       10.0.0.72
db                      A       10.0.0.62
k8s                     A       10.0.0.1  #新增局域网服务器信息
  1. 重新加载主节点DNS配置文件,验证从节点是否同步
[16:54:52 root@centos-8-2-2004-2 ~]#ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 344 Jul 27 17:06 wangxiaoning.org.zone.slave
[17:45:16 root@centos-8-2-2004-2 ~]#ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 344 Jul 27 17:06 wangxiaoning.org.zone.slave
#由文件大小可知,从节点依旧没有同步主节点新增信息
#因为即使主节点版本号更新了,但是它不知道从节点服务器地址,主节点的配置文件并没有指明从节点信息,因此无法主动推送更新. 即使第一次同步时从节点从主节点拉取了DNS数据库,但是主节点并没有记录从节点信息, 因此不知道推送给谁
  1. 修改主节点区域数据库文件,添加从节点记录

添加NS记录和对应A记录, 局域网有几个DNS服务器就应该有几个NS和对应A记录

[17:57:20 root@centos-8-2-2004-1 ~]#vim /var/named/wangxiaoning.org.zone 

$TTL 86400
@               IN      SOA     master admin ( 20200727 1D 1H 3D 1H )
                        NS      master
                        NS      slave1
master                  A       10.0.0.81
slave1                  A       10.0.0.82  #添加从服务器信息
www                     A       10.0.0.72
db                      A       10.0.0.62
k8s                     A       10.0.0.1
  1. 加载主DNS服务器配置文件
[18:02:48 root@centos-8-2-2004-1 ~]#rndc reload
server reload successful
  1. 在从服务器验证信息是否同步
[18:08:44 root@centos-8-2-2004-2 ~]#ll /var/named/slaves/wangxiaoning.org.zone.slave 
-rw-r--r-- 1 named named 344 Jul 27 17:06 /var/named/slaves/wangxiaoning.org.zone.slave
[18:08:46 root@centos-8-2-2004-2 ~]#ll /var/named/slaves/wangxiaoning.org.zone.slave 
-rw-r--r-- 1 named named 470 Jul 27 18:09 /var/named/slaves/wangxiaoning.org.zone.slave
#可以看出从服务器区域数据库文件大小发生变化
#验证客户端可以从slave服务器获取新增的k8s.wangxiaoning.org.域名地址
[18:41:50 root@centos6-1 ~]#dig k8s.wangxiaoning.org @10.0.0.82

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> dig k8s.wangxiaoning.org @10.0.0.82
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 27294
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;dig.               IN  A

;; AUTHORITY SECTION:
.           10800   IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2020072700 1800 900 604800 86400

;; Query time: 552 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Mon Jul 27 19:09:24 2020
;; MSG SIZE  rcvd: 96

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14013
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;k8s.wangxiaoning.org.      IN  A

;; ANSWER SECTION:
k8s.wangxiaoning.org.   86400   IN  A   10.0.0.1

;; AUTHORITY SECTION:
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.
wangxiaoning.org.   86400   IN  NS  slave1.wangxiaoning.org.

;; ADDITIONAL SECTION:
master.wangxiaoning.org. 86400  IN  A   10.0.0.81
slave1.wangxiaoning.org. 86400  IN  A   10.0.0.82

;; Query time: 7 msec
;; SERVER: 10.0.0.82#53(10.0.0.82)
;; WHEN: Mon Jul 27 19:09:24 2020
;; MSG SIZE  rcvd: 128
#由结果可见, 客户端已经从slave服务器拿到了k8s.wangxiaoning.org.的域名ip地址

到此,已经实现了主从服务器的数据同步

  • 主服务器数据一旦发生更改, 必须修改版本号, 然后重新加载DNS服务, 否则更新的信息不会主动推送或者被动拉取给从服务器
主节点修改了区域数据库信息后, 一定要手动修改版本号, 然后重新加载DNS服务, 否则信息不会随送给从服务器, 而且即使到了拉取的时间, 也无法同步

实验4: 实现泛域名解析

只要域名是wangxiaoning.org, 无论主机名输入什么, 只要域名是该域的域名,就都可以转换到泛域名解析对应的ip地址, 比如访问wwww.wangxiaoning.org 会被转换到www.wangxiaoning.org对应的ip地址

  1. 编辑主DNS服务器区域数据库文件
[19:41:41 root@centos-8-2-2004-1 ~]#vim /var/named/wangxiaoning.org.zone 

$TTL 86400
@               IN      SOA     master admin ( 20200728 1D 1H 3D 1H ) #数据库发生更改要修改版本号
                        NS      master
                        NS      slave1
master                  A       10.0.0.81
slave1                  A       10.0.0.82
www                     A       10.0.0.72
db                      A       10.0.0.62
k8s                     A       10.0.0.1
*                       A       10.0.0.72  #"*"匹配任意非空字符,兜底,除了其余指定的主机名+域名,只要输入的主机名不存在且其域名是wangxiaoning.org就都重定向到www.wangxiaoning.org
  1. 主服务器重新加载DNS服务器, 在从服务器验证从服务器区域数据库文件已被更改
[19:56:43 root@centos-8-2-2004-1 ~]#rndc reload
server reload successful

[19:14:31 root@centos-8-2-2004-2 ~]#ll /var/named/slaves/wangxiaoning.org.zone.slave 
-rw-r--r-- 1 named named 516 Jul 27 19:59 /var/named/slaves/wangxiaoning.org.zone.slave
[19:59:44 root@centos-8-2-2004-2 ~]#date
Mon Jul 27 19:59:45 AEST 2020
  1. 在客户端验证泛域名解析已经成功
[19:59:33 root@centos-8-2-2004-1 ~]#dig wwwww.wangxiaoning.org @10.0.0.81

; <<>> DiG 9.11.13-RedHat-9.11.13-5.el8_2 <<>> wwwww.wangxiaoning.org @10.0.0.81
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45837
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 0d19a4d2d5cb9061e7c5aab25f1ea6149df88bf3026a107c (good)
;; QUESTION SECTION:
;wwwww.wangxiaoning.org.        IN  A

;; ANSWER SECTION:
wwwww.wangxiaoning.org. 86400   IN  A   10.0.0.72

;; AUTHORITY SECTION:
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.
wangxiaoning.org.   86400   IN  NS  slave1.wangxiaoning.org.

;; ADDITIONAL SECTION:
master.wangxiaoning.org. 86400  IN  A   10.0.0.81
slave1.wangxiaoning.org. 86400  IN  A   10.0.0.82

;; Query time: 0 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Mon Jul 27 20:01:56 AEST 2020
;; MSG SIZE  rcvd: 169

[20:01:56 root@centos-8-2-2004-1 ~]#dig wwwww.wangxiaoning.org @10.0.0.82

; <<>> DiG 9.11.13-RedHat-9.11.13-5.el8_2 <<>> wwwww.wangxiaoning.org @10.0.0.82
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19485
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 51aaa41b99912cb2de6d97165f1ea616fab465427c357b8b (good)
;; QUESTION SECTION:
;wwwww.wangxiaoning.org.        IN  A

;; ANSWER SECTION:
wwwww.wangxiaoning.org. 86400   IN  A   10.0.0.72

;; AUTHORITY SECTION:
wangxiaoning.org.   86400   IN  NS  slave1.wangxiaoning.org.
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.

;; ADDITIONAL SECTION:
master.wangxiaoning.org. 86400  IN  A   10.0.0.81
slave1.wangxiaoning.org. 86400  IN  A   10.0.0.82

;; Query time: 5 msec
;; SERVER: 10.0.0.82#53(10.0.0.82)
;; WHEN: Mon Jul 27 20:01:58 AEST 2020
;; MSG SIZE  rcvd: 169

实验5: 实现浏览器输入wangxiaoning.org时,依然能正常访问www.wangxiaoning.org

  1. 编辑主DNS区域数据库文件
$TTL 86400
@               IN      SOA     master admin ( 20200729 1D 1H 3D 1H )
                        NS      master
                        NS      slave1
master                  A       10.0.0.81
slave1                  A       10.0.0.82
www                     A       10.0.0.72
db                      A       10.0.0.62
k8s                     A       10.0.0.1
*                       A       10.0.0.72
@                       A       10.0.0.72  #添加"@", 如果用户只访问了wangxiaoning.org, 也会被转到www.wangxiaoning.org >10.0.0.72. @表示的是本域的域名
  1. 加载主DNS服务器配置文件, 在客户端验证访问wangxiaoning.org会被解析到www.wangxiaoning.org
[04:41:50 root@centos-7-2003-1 ~]#dig wangxiaoning.org @10.0.0.82

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7 <<>> wangxiaoning.org @10.0.0.82
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49693
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;wangxiaoning.org.      IN  A

;; ANSWER SECTION:
wangxiaoning.org.   86400   IN  A   10.0.0.72

;; AUTHORITY SECTION:
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.
wangxiaoning.org.   86400   IN  NS  slave1.wangxiaoning.org.

;; ADDITIONAL SECTION:
master.wangxiaoning.org. 86400  IN  A   10.0.0.81
slave1.wangxiaoning.org. 86400  IN  A   10.0.0.82

;; Query time: 1 msec
;; SERVER: 10.0.0.82#53(10.0.0.82)
;; WHEN: Tue Jul 28 05:36:55 AEST 2020
;; MSG SIZE  rcvd: 135

注意:

  • 星号和"@"是两个不同情况, 星号匹配主机名为非空字符, "@"匹配主机名为空的情况,也就是直接访问的是本域的域名, 因为@本身在DNS里就是代表域名本身
  • 用了*号匹配时, 最后浏览器的域名显示的还是用户自己输入的错的url, 比如asda.wangxiaoning.org, 而@匹配后, 浏览器会显示正确的url, 比如www.wangxiaoning.org
  • 从节点只能读取主节点的DNS数据,无法在从节点发起更改
  • 主节点既能读也能写区域数据库文件, 要定期备份主节点DNS区域数据库文件/var/named/wangxiaoning.org.zone

实验6: 解决DNS主从的安全隐患

此前的实验, 在搭建从DNS服务器时并没有获得主服务器的允许,直接就可以拿局域网任意一台主机当作从DNS服务器. 这会产生安全隐患, 尤其是Centos6的从服务器区域数据库是文本格式,只要黑进了内网从服务器就可以看到整个局域网内服务器ip情况

  1. 利用dig命令抓取内网DNS信息
#即使没有配置DNS服务,只要安装了客户端dig工具就可以在内网主机抓取DNS信息
[19:09:24 root@centos6-1 ~]#dig -t axfr wangxiaoning.org @10.0.0.81  #axrf顺序不能颠倒

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> -t axfr wangxiaoning.org @10.0.0.81
;; global options: +cmd
wangxiaoning.org.   86400   IN  SOA master.wangxiaoning.org. admin.wangxiaoning.org. 20200729 86400 3600 259200 3600
wangxiaoning.org.   86400   IN  A   10.0.0.72
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.
wangxiaoning.org.   86400   IN  NS  slave1.wangxiaoning.org.
*.wangxiaoning.org. 86400   IN  A   10.0.0.72
db.wangxiaoning.org.    86400   IN  A   10.0.0.62
k8s.wangxiaoning.org.   86400   IN  A   10.0.0.1
master.wangxiaoning.org. 86400  IN  A   10.0.0.81
slave1.wangxiaoning.org. 86400  IN  A   10.0.0.82
www.wangxiaoning.org.   86400   IN  A   10.0.0.72
wangxiaoning.org.   86400   IN  SOA master.wangxiaoning.org. admin.wangxiaoning.org. 20200729 86400 3600 259200 3600
;; Query time: 7 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Mon Jul 27 20:16:16 2020
;; XFR size: 11 records (messages 1, bytes 279)

[20:16:16 root@centos6-1 ~]#dig -t axfr wangxiaoning.org @10.0.0.82

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> -t axfr wangxiaoning.org @10.0.0.82
;; global options: +cmd
wangxiaoning.org.   86400   IN  SOA master.wangxiaoning.org. admin.wangxiaoning.org. 20200729 86400 3600 259200 3600
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.
wangxiaoning.org.   86400   IN  NS  slave1.wangxiaoning.org.
wangxiaoning.org.   86400   IN  A   10.0.0.72
*.wangxiaoning.org. 86400   IN  A   10.0.0.72
db.wangxiaoning.org.    86400   IN  A   10.0.0.62
k8s.wangxiaoning.org.   86400   IN  A   10.0.0.1
master.wangxiaoning.org. 86400  IN  A   10.0.0.81
slave1.wangxiaoning.org. 86400  IN  A   10.0.0.82
www.wangxiaoning.org.   86400   IN  A   10.0.0.72
wangxiaoning.org.   86400   IN  SOA master.wangxiaoning.org. admin.wangxiaoning.org. 20200729 86400 3600 259200 3600
;; Query time: 9 msec
;; SERVER: 10.0.0.82#53(10.0.0.82)
;; WHEN: Mon Jul 27 20:16:18 2020
;; XFR size: 11 records (messages 1, bytes 279)
  1. DNS安全加固
  • 编辑主和从DNS服务器配置文件, /etc/named.conf
主:
options {
        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     { any; };
        allow-transfer  {10.0.0.82;};  #默认是没有设定transfer的,所有任何内网主机都可以抓取DNS服务器信息, 为了安全, 只允许约定的从节点抓取主节点DNS信息

从:
options {
//      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;}; #从节点配成none, 不允许任何主机从从节点抓取DNS信息
  1. 重新加载主从服务器DNS配置文件,验证结果
[20:21:30 root@centos6-1 ~]#dig -t axfr wangxiaoning.org @10.0.0.81

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> -t axfr wangxiaoning.org @10.0.0.81
;; global options: +cmd
; Transfer failed.

[20:21:32 root@centos6-1 ~]#dig -t axfr wangxiaoning.org @10.0.0.82

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> -t axfr wangxiaoning.org @10.0.0.82
;; global options: +cmd
; Transfer failed.

到此,如何搭建简单的本地DNS,已经搭建企业主从DNS服务器已经展示完毕

DNS主从架构总结:

DNS可以一主多从, 也可以一主, 接从, 然后从从
主服务器可以同时读写, 从服务器只能读, 且只能从主服务器定期拉取区域数据库, 或者接受主服务器的推送
DNS的主从架构一旦主服务器down掉, 用户无需在客户端配置DNS指向从服务器即可直接从DNS从服务器获取解析数据
数据同步有两种方式, 主服务器主动推送, 从服务器定期拉取
但是不管是推送还是拉取, 都要求主服务器的版本号比从服务器的版本号大
因此, 每次修改完主上的区域数据库, 都要手动修改版本
DNS会开启tcp的53和udp的53, tcp53用于dns主从复制, udp53用于查询

5 DNS反向解析

5.1 反向解析配置

邮件通讯会用到, 判断邮件是不是合法邮件还是垃圾邮件, 需要调用反向区域实现
反向区域: 即将IP反向解析为FQDN
区域名称: 网络地址反写.in-addr.arpa

image.png

示例:

172.16.100. >>> 100.16.172.in-addr.arpa.

(1) 定义区域

zone "ZONE_NAME" IN {
          type {master|slave|forward};
          file "网络地址.zone";
};

(2) 定义区域解析库文件

注意: 不需要MX,以PTR记录为主
范例:

$TTL 86400
$ORIGIN 8.168.192.in-addr.arpa.
@     IN SOA ns1.wangxiaoning.org. admin.wangxiaoning.org. (
                  20200727
                  1H
                  5M
                  7D
                  1D )
       IN NS ns1.wangxiaoning.org.
11     IN PTR ns1.wangxiaoning.org.
11     IN PTR www.wangxiaoning.org.
12     IN PTR mx1.anshan88.org.  #反向解析的域名是x.x.x.in-addr.arpa. , 后面的FQDN是解析的结果, 通过访问ip解析到FQDN, 因为可以是不同的域名, 因为是靠IP解析的
12     IN PTR www.wangxiaoning.org.
13     IN PTR mx2.wangxiaoning.org.

5.2 实战案例: 搭建反向解析主服务器

Centos 8 10.0.0.81 搭建DNS反向解析主服务器: 0.0.10.in-addr.arpa.

  1. 主服务器主配置文件不变,和前面实验配置一样
options {
    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     { any; };
  1. 添加反向解析域到DNS服务关联文件
[23:49:50 root@centos-8-2-2004-1 ~]#vim /etc/named.rfc1912.zones 
zone "0.0.10.in-addr.arpa" IN {
        type master;
        file "10.0.0.zone";
};
  1. 编辑主服务器反向解析库文件

利用模板文件

[23:51:01 root@centos-8-2-2004-1 ~]#cd /var/named
[23:52:57 root@centos-8-2-2004-1 /var/named]#cp -p named.loopback 10.0.0.zone
[23:53:16 root@centos-8-2-2004-1 /var/named]#vim 10.0.0.zone 

$TTL 1D
@       IN SOA  ns1 admin.wangxiaoning.org. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.wangxiaoning.org.
100     PTR     www.wangxiaoning.org.
200     PTR     app.anshan88.org.
  1. 检查解析库文件语法格式
[00:14:10 root@centos-8-2-2004-1 /var/named]#named-checkzone 0.0.10.in-addr.arpa 10.0.0.zone
zone 100.0.0.10.in-addr.arpa/IN: loaded serial 0
OK
  1. 验证结果(从Centos6客户端)
[23:49:44 root@centos6-1 ~]#dig -t ptr 100.0.0.10.in-addr.arpa. @10.0.0.81

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> -t ptr 100.0.0.10.in-addr.arpa. @10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10962
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;100.0.0.10.in-addr.arpa.   IN  PTR

;; ANSWER SECTION:
100.0.0.10.in-addr.arpa. 86400  IN  PTR www.wangxiaoning.org.

;; AUTHORITY SECTION:
0.0.10.in-addr.arpa.    86400   IN  NS  ns1.wangxiaoning.org.

;; Query time: 2 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Mon Jul 27 23:50:08 2020
;; MSG SIZE  rcvd: 87

#查看反向解析第二种方法
[23:50:08 root@centos6-1 ~]#dig -x 10.0.0.100 @10.0.0.81

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> -x 10.0.0.100 @10.0.0.81
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21521
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;100.0.0.10.in-addr.arpa.   IN  PTR

;; ANSWER SECTION:
100.0.0.10.in-addr.arpa. 86400  IN  PTR www.wangxiaoning.org.

;; AUTHORITY SECTION:
0.0.10.in-addr.arpa.    86400   IN  NS  ns1.wangxiaoning.org.

;; Query time: 2 msec
;; SERVER: 10.0.0.81#53(10.0.0.81)
;; WHEN: Mon Jul 27 23:51:02 2020
;; MSG SIZE  rcvd: 87

[23:51:02 root@centos6-1 ~]#host 10.0.0.100
100.0.0.10.in-addr.arpa domain name pointer www.wangxiaoning.org.
[23:51:33 root@centos6-1 ~]#nslookup 10.0.0.200
Server:     10.0.0.81
Address:    10.0.0.81#53

200.0.0.10.in-addr.arpa name = app.anshan88.org.
  1. 修改Windows主机VMnet8网卡DNS服务器指向10.0.0.81, 验证反向DNS解析结果
C:\Users\David>ping -a 10.0.0.100

Pinging www.wangxiaoning.org [10.0.0.100] with 32 bytes of data:
Reply from 10.0.0.1: Destination host unreachable.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 10.0.0.100:
    Packets: Sent = 4, Received = 1, Lost = 3 (75% loss),

C:\Users\David>ping -a 10.0.0.200

Pinging app.anshan88.org [10.0.0.200] with 32 bytes of data:
Reply from 10.0.0.1: Destination host unreachable.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 10.0.0.200:
    Packets: Sent = 4, Received = 1, Lost = 3 (75% loss),

C:\Users\David>
#从结果可以看出, Windows可以通过10.0.0.81,DNS服务器完成对IP地址的反向解析,但是因为本地我没有设置10.0.0.100/200主机,所以ping命令请求超时

补充: DNS只负责对FQDN进行解析或者反向解析,不负责测试网络连通性. ping命令不仅要做DNS解析,也要做连通性检测

6 实现子域

为公司内部环境单独建立一个子域, 搭建专门的DNS服务器, 为子域内的主机做DNS解析. 实现用户通过父域DNS进行查询, 如果父域没有记录, 则查看是不是子域的记录, 如果是, 则向子域DNS服务器查询, 如果不是, 则去互联网DNS查询

子域的情况下, 子域的dns服务器并不提供转发功能, 因此, 如果客户端dns指向了子域, 那么只能查询子域服务器上定义的资源, 因此, 子域的情况下, 子域内部的机器也是把DNS指向父域的DNS服务器, 查询时, 父域会判断用户查询的是子域的服务器, 还是自己内部的服务器, 还是互联网域名, 之后再进行查询.

实验规划:

企业内K8S环境, 搭建子域DNS服务, k8s.wangxiaoning.org

image.png

10.0.0.238 --> wangxiaoning.org域服务器
10.0.0.7 --> 子域k8s.wangxiaoning.org DNS服务器

  1. 子域DNS服务器安装bind, 开启服务
[14:49:22 root@k8s ~]#yum -y install bind bind-utils; systemctl enable --now named
  1. 在父域上委派子域信息. 每个DNS父服务器都有下级子域DNS信息. 公网的DNS也是利用子域获取下次DNS信息
$TTL 86400
@ IN SOA master admin ( 20201112 1D 1H 3D 1H)
            NS master
k8s         NS k8sns  #指明k8s子域服务器名称
k8sns   A 10.0.0.7   #创建A记录                                                                                      
master  A 10.0.0.238
@       A 10.0.0.81
*       A 10.0.0.81
www     A 10.0.0.81
db      A 10.0.0.82
rndc reload
  1. 子域DNS服务, 创建区域数据库
[14:58:34 root@k8s ~]#vim /etc/named.conf 
options {
    // 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; };  
[14:59:37 root@k8s ~]#vim /etc/named.rfc1912.zones 
zone "k8s.wangxiaoning.org" IN {
    type master;
    file "k8s.wangxiaoning.org.zone";                                                                                                                   
};
[15:01:08 root@k8s ~]#vim /var/named/k8s.wangxiaoning.org.zone

$TTL 86400

@           IN SOA ns1 admin ( 20201112 1D 1H 3D 1H)

            NS  ns1
ns1         A   10.0.0.7
master1     A   10.0.0.111
node1       A   10.0.0.222
etcd1       A   10.0.0.99
haproxy1    A   10.0.0.88 
[15:08:31 root@k8s ~]#chmod o-r /var/named/k8s.wangxiaoning.org.zone 
[15:08:31 root@k8s ~]#chgrp named /var/named/k8s.wangxiaoning.org.zone 
[15:09:21 root@k8s ~]#named-checkconf
[15:09:39 root@k8s ~]#named-checkzone k8s.wangxiaoning.org  /var/named/k8s.wangxiaoning.org.zone
zone k8s.wangxiaoning.org/IN: loaded serial 20201112
OK
rndc reload
  1. 客户端验证解析子域服务器
#直接查询子域DNS服务器
[20:49:03 root@CentOS-6-1 ~]#dig master1.k8s.wangxiaoning.org @10.0.0.7

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> master1.k8s.wangxiaoning.org @10.0.0.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41169
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;master1.k8s.wangxiaoning.org.  IN  A

;; ANSWER SECTION:
master1.k8s.wangxiaoning.org. 86400 IN  A   10.0.0.111

;; AUTHORITY SECTION:
k8s.wangxiaoning.org.   86400   IN  NS  ns1.k8s.wangxiaoning.org.

;; ADDITIONAL SECTION:
ns1.k8s.wangxiaoning.org. 86400 IN  A   10.0.0.7

;; Query time: 1 msec
;; SERVER: 10.0.0.7#53(10.0.0.7)
;; WHEN: Thu Nov 12 20:49:45 2020
;; MSG SIZE  rcvd: 96
#通过父域DNS服务器查询

[20:55:09 root@CentOS-6-1 ~]#dig master1.k8s.wangxiaoning.org @10.0.0.238

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> master1.k8s.wangxiaoning.org @10.0.0.238
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23385
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;master1.k8s.wangxiaoning.org.  IN  A

;; ANSWER SECTION:
master1.k8s.wangxiaoning.org. 86400 IN  A   10.0.0.111

;; AUTHORITY SECTION:
k8s.wangxiaoning.org.   86400   IN  NS  k8sns.wangxiaoning.org.

;; ADDITIONAL SECTION:
k8sns.wangxiaoning.org. 86400   IN  A   10.0.0.7

;; Query time: 15 msec
;; SERVER: 10.0.0.238#53(10.0.0.238)
;; WHEN: Thu Nov 12 20:55:16 2020
;; MSG SIZE  rcvd: 98

补充: 取消DNS加密

修改配置文件:

    dnssec-enable yes;
    dnssec-validation yes;
|
|
    dnssec-enable no; #不能直接注释, 要改为no
    dnssec-validation no;

7 实现DNS转发(缓存服务器)

使用场景1:

企业内部业务需要放在独立的域里, 所以需要给该域专门搭建一个DNS服务器, 如果该域中的主机要查询本域内的服务器, 可以通过该域内的服务器查询, 如果要查询其他域的服务器, 可以通过本域的DNS服务器转发到其他域的DNS服务器, 或者通过其他域的DNS服务器去间接查看公网DNS

使用场景2:

大公司各地不同的办公室, 内部通过本域的DNS服务器去做解析, 如果要查询其他域或者公网DNS, 也是转发到公司内部总的DNS去做查询

7.2 转发方式

7.2.1 全局转发

对非本机所负责解析区域的请求, 全转发给指定的服务器
在全局配置块中实现:

Options {
              forward first|only;
              forwarders { ip;};
};

7.2.2 特定区域的转发

仅转发对特定的区域的请求, 比全局转发优先级高

zone "ZONE_NAME" IN {
    type forward;
    forward first|only;
    forwarders { ip;};
};

first: 先转发至指定的DNS服务器, 如果指定的DNS服务器无法解析查询请求, 则本服务器再自己去根服务器查询. 配置为first时, 要求本DNS服务器是可以连互联网的, 要不然也没法向根发起查询
only: 先转发至指定DNS服务器, 如果无法解析查询请求, 则本服务器将不再去根服务器查询. 如果指定的DNS服务器,断网了, 或者他自己的DNS解析出现了问题, 那么由DNF转发服务器负责的域内部的主机就无法联网了

实验拓扑

image.png

实现全局转发

  1. 转发DNS服务器配置
[22:00:55 root@CentOS-8-2 ~]#vim /etc/named.conf
options {
    // 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; };
    forward only;
    forwarders {10.0.0.238;};  
rndc reload
  1. 客户端测试
#查询公网域名
[22:22:04 root@CentOS-6-1 ~]#dig www.baidu.com @10.0.0.228

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com @10.0.0.228
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17899
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 13, ADDITIONAL: 13

;; QUESTION SECTION:
;www.baidu.com.         IN  A

;; ANSWER SECTION:
www.baidu.com.      1010    IN  CNAME   www.a.shifen.com.
www.a.shifen.com.   112 IN  A   61.135.185.32
www.a.shifen.com.   112 IN  A   61.135.169.121

;; AUTHORITY SECTION:
.           517079  IN  NS  g.root-servers.net.
.           517079  IN  NS  i.root-servers.net.
.           517079  IN  NS  l.root-servers.net.
.           517079  IN  NS  j.root-servers.net.
.           517079  IN  NS  h.root-servers.net.
.           517079  IN  NS  c.root-servers.net.
.           517079  IN  NS  k.root-servers.net.
.           517079  IN  NS  b.root-servers.net.
.           517079  IN  NS  m.root-servers.net.
.           517079  IN  NS  f.root-servers.net.
.           517079  IN  NS  e.root-servers.net.
.           517079  IN  NS  a.root-servers.net.
.           517079  IN  NS  d.root-servers.net.

;; ADDITIONAL SECTION:
h.root-servers.net. 603476  IN  A   198.97.190.53
e.root-servers.net. 603476  IN  A   192.203.230.10
a.root-servers.net. 603476  IN  A   198.41.0.4
b.root-servers.net. 603476  IN  A   199.9.14.201
i.root-servers.net. 603476  IN  A   192.36.148.17
f.root-servers.net. 603476  IN  A   192.5.5.241
j.root-servers.net. 603476  IN  A   192.58.128.30
l.root-servers.net. 603476  IN  A   199.7.83.42
c.root-servers.net. 603476  IN  A   192.33.4.12
g.root-servers.net. 603476  IN  A   192.112.36.4
d.root-servers.net. 603476  IN  A   199.7.91.13
m.root-servers.net. 603476  IN  A   202.12.27.33
k.root-servers.net. 603476  IN  A   193.0.14.129

;; Query time: 1 msec
;; SERVER: 10.0.0.228#53(10.0.0.228)
;; WHEN: Thu Nov 12 22:23:00 2020
;; MSG SIZE  rcvd: 509
#查询内网域名
#注意, 此时内网的域名是无法解析的, 需要把转发服务器上的DNS安全关闭. 因为局域网内的DNS是非法的, 因此要关闭DNS安全
#如果不关闭安全, 那么客户端查询时, 在转发服务器的/var/log/messages里会显示broken trust chain报错
[23:14:52 root@CentOS-6-1 ~]#dig master1.k8s.wangxiaoning.org @10.0.0.228

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> master1.k8s.wangxiaoning.org @10.0.0.228
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 23102
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;master1.k8s.wangxiaoning.org.  IN  A

;; Query time: 12 msec
;; SERVER: 10.0.0.228#53(10.0.0.228)
;; WHEN: Thu Nov 12 23:15:28 2020
;; MSG SIZE  rcvd: 46

[23:15:28 root@CentOS-6-1 ~]#dig www.wangxiaoning.org @10.0.0.228

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.wangxiaoning.org @10.0.0.228
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 25811
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.wangxiaoning.org.      IN  A

;; Query time: 4 msec
;; SERVER: 10.0.0.228#53(10.0.0.228)
;; WHEN: Thu Nov 12 23:15:36 2020
;; MSG SIZE  rcvd: 38

关闭DNS安全

 dnssec-enable no;
    dnssec-validation no;
[23:20:43 root@CentOS-6-1 ~]#dig www.wangxiaoning.org @10.0.0.228

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.wangxiaoning.org @10.0.0.228
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28623
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.wangxiaoning.org.      IN  A

;; ANSWER SECTION:
www.wangxiaoning.org.   86400   IN  A   10.0.0.81

;; AUTHORITY SECTION:
wangxiaoning.org.   86400   IN  NS  master.wangxiaoning.org.

;; ADDITIONAL SECTION:
master.wangxiaoning.org. 86400  IN  A   10.0.0.238

;; Query time: 15 msec
;; SERVER: 10.0.0.228#53(10.0.0.228)
;; WHEN: Thu Nov 12 23:20:54 2020
;; MSG SIZE  rcvd: 91

实现仅转发特定域的请求

仅转发对特定的区域的请求, 比全局转发优先级高
利用特定域转发, 可以实现客户请求内部域名, 则转发到指定的DNS服务器, 如果请求的是公网域名, 就自己去公网查询
这种请求需要转发DNS服务器自己能连网

zone "ZONE_NAME" IN {
    type forward;
    forward first|only;
    forwarders { ip;};
};

8 别名技术

将域名映射到别名上, 实现解析别名时, 最终解析的是本身的名字

www     CNAME www.wangxiaoning.com.   

一般用户购买了cdn服务的域名, 比如: 将www.wangxiaoning.org 映射到 cdn服务商的地址, 用户访问www.wangxiaoning.org时会被转到cdn服务商的域名, 由cdn服务商来实现域名解析, 通过cdn服务来实现智能DNS

举例;

用户在北京, 网站的源服务器在杭州

  1. 用户向本地dns服务器发起dns查询(www.taobao,com), 本地dns服务器不知道该返回哪个服务器的地址, 因此,会向根服务器发起请求
  2. 本地dns查询根, 查询www.taobao.com的地址, 根由于没有www.taobao.com的解析记录, 但是会返回com的地址给本地dns, 本地dns查询.com
  3. 本地dns向.com查询,.com返回taobao.com的地址给本地dns
  4. taobao.com由于把dns解析的服务交给了cdn服务商, 因此会返回给本地dns服务器一个CNAME别名, www.taobao.com -- CNAME -- cdn服务商dns服务器的域名
  5. 本地dns向cdn服务商的dns服务器发起dns查询
  6. cdn服务商的dns服务器会提供智能dns功能, 根据本地dns的地址, 返回一个就近的网站服务器的地址给本地dns服务器
  7. cdn服务器的服务器上的网站数据来自于www.taobao.com的源服务器. 源服务器页面上线后, 会把内容推送到CDN服务器上, 这样用户访问就可以看到最新的页面
  8. 如果用户访问时没来的及推送, 那么可以通过智能dns返回的cdn服务商的接入节点, 来访问其他地区的cdn服务器来获取新的内容, 因为cdn服务商内部的网络都是专线通的. 因此不同地区的cdn服务器之间可以连通. 如果所有cdn节点都没有新的数据, 那么在内部会最终转到网站源服务器, 把源服务器上的内容同步到其他节点.
[23:44:17 root@CentOS-6-1 ~]#dig www.wangxiaoning.org @10.0.0.238

;; QUESTION SECTION:
;www.wangxiaoning.org.      IN  A

;; ANSWER SECTION:
www.wangxiaoning.org.   86400   IN  CNAME   www.wangxiaoning.com.
www.wangxiaoning.com.   600 IN  A   120.78.154.82

;; AUTHORITY SECTION:
wangxiaoning.com.   168837  IN  NS  dns17.hichina.com.
wangxiaoning.com.   168837  IN  NS  dns18.hichina.com.

9 实现智能DNS

网站的大页面一定要压缩, 否则如果走cdn按流量计费, 那么费用会很高

如果网站用了cdn, 那么最终服务器返回的cdn地址是根据用户发起请求后的本地dns决定的. 即使用户在北京, 但是如果访问是通过上海的dns进行查询, 那么cdn就返回上海的cdn地址

相关文章

  • k8s-03-附加组件

    1.dns服务 1.安装dns服务 1.下载dns_docker镜像包2.并导入dns_docker镜像包dock...

  • 自建DNS管理子域名

    ref1 ubuntu DNS服务ref2 centos DNS服务ref3 DNS 服务详解 变量说明 INT_...

  • DNS域名服务器——主从服务器

    1 从DNS作用 1 作为主DNS的备份服务器 2 作为主DNS的负载服务器 2 区域传输 从DNS从主DNS的服...

  • 第十一周

    "1、简述DNS服务,并搭建DNS服务器,实现主从,子域授权。 DNS(Domain Name System,域名...

  • 一文掌握主从&&智能DNS服务

    1. 实现DNS主-从服务器 主DNS服务器centos7min:192.168.43.141从DNS服务器cen...

  • 第十周作业

    1、简述DNS服务,并搭建DNS服务器,实现主从,子域授权。 DNS是“Domain Name System"的缩...

  • 第十周

    1、简述DNS服务,并搭建DNS服务器,实现主从,子域授权 DNS是“Domain Name System"的缩写...

  • 1: DNS服务

    1 名字解析介绍和DNS 1.1 DNS简介(分布式) 当前TCP/IP网络中的设备之间进行通信, 是利用和依赖于...

  • DNS服务器原理及服务搭建

    1、简述DNS服务器原理,并搭建主-辅服务器。 1.1、DNS服务器原理 1.1.1、NDS是什么 DNS(Dom...

  • 二十(4)、DNS解析 ------ 2020-04-07

    1、DNS服务器域名解析: 2、DNS优化:

网友评论

      本文标题:1: DNS服务

      本文链接:https://www.haomeiwen.com/subject/kzimlktx.html