DNS域名解析服务

发布时间 2023-08-06 15:48:08作者: Bacolate

DNS域名解析服务

DNS功能:将域名转化为ip地址

目的:便于记忆

实现:

方法一:本地host文件(分散式)(添加方式慢,)

方法二:安装软件服务

DNS系统的分布式数据结构

管理方式发展过程:

分散式管理:每个机器都有host文件,不方便管理 集中式管理:集中在一台服务器上,谁俩管理 分布式管理:dns服务器太多千千万万

DNS系统的分布式数据结构:

image-20230804142651139

www——主机名

正向解析:根据域名查找对应的IP地址

反向解析:根据IP地址查找对应的域名

1、DNS原理与查询方式

涉及两种解析方式:递归、迭代

递归查询:但看用户与缓存服务器;用户发出请求,缓存服务器返回结果。

特点:笼统描述发问与获取,忽视细节,好比计划方向。

image-20230804164605176

迭代查询:缓存服务器自己没有结果信息,它先向根服务器询问并获取结果,通过结果指引询问下一级服务器,一遍遍的询问直到找到结果。这一段询问过程视为迭代。

特点:方式固定,描述过程,好比具体手段。

2、原理(解析域名流程)

1、问自己:当客户端需要知道域名时(解析域名),先去本地找host文件,文件里有对应地址则直接访问,没有去找DNS缓存服务器;

2、问缓存服务器:DNS缓存服务器中,有就直接,没有去问根服务器;

  • 根域服务器管理的主机域名类型——只管“主机名.”(主机名+根)他不会直接告诉你答案,会让你去找理“.com”的域名服务器;(因为根域服务器不可能存放所有域名地址对应关系,但也不能没有不然就找不到了)

  • 缓存服务器根据线索找到".com"的域名服务器,它只能解析“www.com”、"mail.com",这样的域名,会让你找".baidu"的域名服务器;

  • 缓存服务器根据线索找到.baidu服务,倘若正好找到,就直接反馈结果,这个反馈结果的域名服务器可称权威服务器

3、缓存服务器获取结果返回给客户端。

3、DNS软件bind

软件功能,自己来当“缓存服务器”,自己解析域名与IP地址对应关系

DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns

  • bind:服务器

  • bind-libs:相关库

  • bind-utils: 客户端

  • bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/

 #配置三处
 主配置文件:/etc/named.conf
 域名文件:/etc/named.rfc1912.zones
 保存DNS解析记录的数据文件位于(注意权限):/var/named/*.zone(自定义,在域名配置文件定义的)
 ​
 软件名:bind
 程序名:named
 /etc/rndc.conf#可利用此文件重加载“rndc reload”(不关机再启动,刷新)

 

3.1 正向解析

简述资源记录

记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX

  • SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。

  • A(internet Address):作用,域名解析成IP地址

  • AAAA(FQDN): --> IPV6

  • PTR(PoinTeR):反向解析,ip地址解析成域名

  • NS(Name Server):,专用于标明当前区域的DNS服务器,服务器类型为域名服务器

  • CNAME : Canonical Name,别名记录

  • MX(Mail eXchanger)邮件交换器

  • TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等

SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。

SOA记录

name: 当前区域的名字,例如"kgc.com."

value: 有多部分组成

注意:

  1. 当前区域的主DNS服务器的正向解析,也可以使用当前区域的名字

  2. 当前区域管理员的邮箱地址;但地址中不能使用“@”符号,一般用“.”替换

例如:admin.kgc.com

  1. 主从服务区域传输相关定义以及否定的答案的统一的TTL

范例:

 name              [TTL]            IN          rr_type             value
 域名               缓存             Internet协议 资源类型              值
 ​
 ​
 1. TTL可从全局继承缓存时间
 2. 使用 "@" 符号可用于引用当前区域的域名
 3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
 4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
 ​
 ​
 $TTL 1D(统一的ttl定义1天,不写D 是秒)
 @       IN SOA  master.yml.com. admin.yml.com. (
                  当前服务器的名称     邮箱地址
                                         0       ; serial   #是否有更新  版本号 更新文件 手动把 0 加1
                                         1D      ; refresh  #刷新时间 拉取时间
                                         1H      ; retry    #失败后一个小时 后再试一次
                                         1W      ; expire   #过期时间,老是拉取不了,1周以后过期
                                         3H )    ; minimum  #老是去查错误的解析地址,3小时内的缓存下,用户再查直接返回找不到

 

NS记录

name: 当前区域的名字

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

注意:

  1. 相邻的两个资源记录的name相同时,后续的可省略

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

  3. 一个区域可以有多个NS记录

范例

 master IN NS yml.com.
 ​
 master IN NS yml.com.
 ​
 ​
          NS  master

 

MX记录

name: 当前区域的名字

value: 当前区域的某邮件服务器(smtp服务器)的主机名

注意:

  1. 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高

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

范例:

 mail  IN MX 10 mx1.yml.org.
       IN MX 20 mx2.yml.org.
 mx1 A   192.168.91.10
 mx2 A   192.168.91.10

 

A记录

name: 某主机的域名解析,例如:www.yml.com

value:主机名对应主机的IP地址

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

范例:

 www.yml.com. IN A 1.1.1.1
 www.yml.com. IN A 2.2.2.2
 www.yml.com. IN   A 3.3.3.3
 www.yml.com. IN   A 4.4.4.4
 * IN A 5.5.5.5
 #代表泛域名
 @   IN   A 6.6.6.6
 #代表不需要名字
View Code

 

PTR记录

name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:inaddr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa. value: FQDN

例子:

 3.2.1.in-addr.arpa. IN PTR www.kgc.org.
 #如1.2.3为网络地址,可简写成:
 4 IN PTR www.kgc.com#反向解析

 

CNAME别名记录

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

例子:

 #固定格式
 name    [TTL]       IN              rr_type         value
         缓存时间     internet记录     区域解析库        值
 ​
 ​
 $TTL 1D
 @       IN SOA  master.yml.com. admin.yml.com. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
         NS      master.kgc.com.
 master  A       192.168.91.100
 www     A       192.168.91.103
 db      A       192.168.91.101
 IN      MX 10   mail.kgc.com.
 mail    A       192.168.91.10
 ftp     CNAME   www
 ​
 ​
 ​
 $TTL 1D                                            #有效解析记录的生存周期
 @   in SOA benet.com. admin.benet.com. (   #“@"符号表示当前的DNS区域名
                      0   ; serial              #更新序列号,可以是10位以内的整数
                     1D   ; refresh             #刷新时间,重新下载地址数据的间隔
                     1H   ; retry               #重试延时,下载失败后的重试间隔
                     1W   ; expire              #失效时间,超过该时间仍无法下载则放弃#
                     3H)  ; minimum             #无效解析记录的生存周期,
         NS      benet.com.                     #记录当前区域的DNS服务器的名称
         A     192.168.80.10                   #记录主机IP地址
 IN   MX 10    mail.benet.com.            #MX为邮件交换记录,数字越大优先级越低
 www  IN A     192.168.80.10              #记录正向解析www.benet.com对应的IP
 mail IN A     192.168.80.11              #MX为邮件交换记录,数字越大优先级低 
 ftp  IN CNAME  www                       #CNAME使用别名,ftp 是www的别名
 *    IN A   192.168.80.100               #泛域名解析,“*"代表任意主机名
View Code

 

特殊应用

负载均衡

访问同一域名是,分配不同地址,在访问路径上划分开提高速度

 www     IN  A       192.168.177.100
 www     IN  A       192.168.177.101
 www     IN  A       192.168.177.102

 

泛域名解析

域名不正确的全指向该地址

*        IN    A        192.168.177.106

 

语法检查

named-checkconf

[root@31yml named]#named-checkconf -z /etc/named.conf
zone yml.com/IN: loaded serial 0
zone yml.com/IN: loaded serial 0

 

named-checkzone

[root@31yml named]#named-checkzone yml.com yml.com.zone 
zone yml.com/IN: loaded serial 1
OK

 

 

安装、配置三处操作:

第一处
#centos-1里
#1、下载
[root@31yml ~]#yum install bind* -y#安装软件,自带网络解析功能,更改监听地址范围为any,更改分配地址权限为any
#2、更改配置文件
#改为重启配置文件,使其生效
#提前
[root@31yml ~]#systemctl stop firewalld.service
[root@31yml ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 
DNS1=127.0.0.1
[root@31yml ~]#systemctl restart network
[root@31yml ~]#vim /etc/named.conf 
#可以修改配置,注释,或者删除这两行
listen-on port 53 { any; };
allow-query     { any; };

[root@31yml ~]#rndc reload
#重新加载DNS服务
server reload successful

 

更改范围、权限

image-20230805143014865

测试:别的机器可以只通过本地地址访问外网

image-20230805145011785

展示:

image-20230805145110561

image-20230805144402655

解析需要根域服务器地址,早已在软件里配置

image-20230805145555200

image-20230805145520547

第二处
#再添加配置文件
[root@31yml ~]#vim /etc/named.rfc1912.zones 
#编写域名
zone "yml.com" {
   type master;
   file "yml.com.zone";
};

 

image-20230805150922987

 

第三处
cp -a named.localhost *.*.zone#复制时保留权限,非常重要
#保留权限复制

 

image-20230805151216575

[root@31yml ~]#vim yml.com.zone
#编辑数据库文件,解析记录对应关系

 

image-20230805155732667

[root@31yml named]#vim yml.com.zone #打开文件进行配置
#编辑数据库文件,解析记录对应关系

 

image-20230805161022985

image-20230805161204053

泛域名

image-20230805161355428

image-20230805161505927

image-20230805161746772

image-20230805161817988

3.2 反向解析

[root@31yml named]#vim /etc/named.conf
#第一次老地方,改范围、权限

 

image-20230806124051327

[root@31yml named]#vim /etc/named.rfc1912.zones 
#先修改区域配置文件

 

image-20230806123340689

[root@localhost named]#cp -p yml.com.zone lmy.com.zone
#复制正向解析文件#注意权限
[root@31yml named]#vim lmy.com.zone 

 

image-20230806123908542

展示

image-20230806124206620

3.3 主从复制

###从服务器的配置
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
#从服务器安装bind软件
[root@localhost ~]# yum install bind bind-utils.x86_64 -y

#两段改成any
[root@localhost etc]# vim /etc/named.conf 
listen-on port 53 { any; };
allow-query     { any; }; 

 

image-20230806125706562

[root@localhost etc]# vim /etc/named.rfc1912.zones
#添加从服务器的配置文件
zone "yml.com" IN {
        type slave;
        #类型从
        file "slaves/yml.com.zone";
        #文件地址在/var/named/slaves/ 下
        masters { 192.168.91.100; };
        #申明主服务器的地址
};


[root@localhost etc]# ls /var/named/slaves
kgc.com.zone
[root@localhost etc]# systemctl start named
#主服务器配置好后再启动

 

image-20230806130202540

#主服务器配置
[root@localhost etc]# vim /etc/named.rfc1912.zones
zone "yml.com" IN {
        type master;
        file "yml.com.zone";
        allow-transfer { 192.168.91.103; };
        #添加从服务器的地址
};
[root@localhost etc]#rndc reload

 

image-20230806130552806

验证:

#在从服务器上
[root@localhost etc]# echo "nameserver 192.168.177.103" > /etc/resolv.conf 
#将DNS指向自己
[root@localhost etc]#host www.yml.com
#或者
[root@localhost ~]# dig www.yml.com @192.16

 

8.177.100
解析命令        域名      @你的dns服务器地址

数据库文件不同步:同步需要修改 版本,添加从服务器

image-20230806132751796

3.4 分离解析

练习环境:

将linux服务器配置两块网卡,

ens33:192.168.177.100

ens37:12.0.0.1

win7做为外网: 12.0.0.100/24

win10 作为内网:192.168.177.123/24

[root@31yml ~]# vim /etc/named.conf 
#修改配置文件
listen-on port 53 { any; };
allow-query     { any; };
#等会需要使用的 根配置文件
zone "." IN {
        type hint;
        file "named.ca";
};
View Code

 

image-20230806142716175

image-20230806142642837

[root@31yml ~]# vim /etc/named.rfc1912.zones
#编写配置文件
view "lan" {
        match-clients { 192.168.100.0/24; };
        #匹配网段
        zone "yml.com" IN {
          type master;
          file "yml.com.lan";
        };

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

};

view "wan" {
        match-clients { 12.0.0.0/24; };
        zone "yml.com" IN {
          type master;
          file "yml.com.wan";
        };

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

};
View Code

 

image-20230806144943455

[root@31yml ~]# vim yml.com.lan 

$TTL 1D
@       IN SOA  master.yml.com. admin.yml.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       192.168.100.1
www     A       192.168.100.88
sftp    A       192.168.100.99
[root@31yml ~]# vim kgc.com.wan 

$TTL 1D
@       IN SOA  master.yml.com. admin.yml.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       12.0.0.1
www     A       12.0.0.1
sftp    A       12.0.0.1
View Code

 

展示:

 

image-20230806143902608

image-20230806145045245

 

image-20230806144547050

image-20230806144716689

4、域名解析工具

4.1 nslookup

格式: nslookup 域名 [域名服务器]

 1 [root@31yml named]#nslookup www.baidu.com 8.8.8.8
 2 Server:        8.8.8.8
 3 Address:    8.8.8.8#53
 4 
 5 Non-authoritative answer:
 6 www.baidu.com    canonical name = www.a.shifen.com.
 7 Name:    www.a.shifen.com
 8 Address: 180.101.50.188
 9 Name:    www.a.shifen.com
10 Address: 180.101.50.242
11 
12 [root@31yml named]#nslookup www.baidu.com
13 Server:        192.168.177.100
14 Address:    192.168.177.100#53
15 
16 Non-authoritative answer:
17 www.baidu.com    canonical name = www.a.shifen.com.
18 Name:    www.a.shifen.com
19 Address: 180.101.50.242
20 Name:    www.a.shifen.com
21 Address: 180.101.50.188
View Code

4.2 dig

格式:nslookup 域名

[root@31yml named]#dig www.yml.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 <<>> www.yml.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14829
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

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

;; ANSWER SECTION:
www.yml.com.        86400    IN    A    192.168.177.101

;; AUTHORITY SECTION:
yml.com.        86400    IN    NS    master.yml.com.

;; ADDITIONAL SECTION:
master.yml.com.        86400    IN    A    192.168.177.100

;; Query time: 0 msec
;; SERVER: 192.168.177.100#53(192.168.177.100)
;; WHEN: 日 8月 06 15:14:38 CST 2023
;; MSG SIZE  rcvd: 93
View Code

 

推荐大哥:(https://blog.csdn.net/K346K346/article/details/127648589

推荐网站:(https://linux265.com/course/linux-command-dig.html

4.3 host

格式:nslookup 域名

[root@31yml named]#host www.yml.com
www.yml.com has address 192.168.177.101

 

推荐网站:(https://www.linux265.com/course/linux-command-host.html

CDN(Content Delivery Network)内容分发网络

直观感受上加快了数据传输,它需要大量的服务器,利用“缓存”加快传输,同样成本巨大。

使用原因:存放资源的服务器特别远,利用传输路上搭建的服务器,提高效率

资源:主要是网页一类需要快速响应的数据资源。资源分静态资源、动态资源,静态只长期不用更改的数据;动态指经常在改变的数据。

具体详情可见百度百科(https://baike.baidu.com/item/%E5%86%85%E5%AE%B9%E5%88%86%E5%8F%91%E7%BD%91%E7%BB%9C/4034265?fr=ge_ala


 

番剧推荐:

《亡骸游戏》,历经诸多阴谋的死灵法师化身为灾厄,转生魔法的发动,让他获得了重启人生的计划,这一次不会再退让一步......

 

——感谢萌娘百科(https://mzh.moegirl.org.cn/亡骸游戏