目录
频道首页
📚 DNS
收藏
0
xy20118 最近修改于 2024-04-29 15:05:37

前言

image#561px #331px

什么是DNS?

定义:DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解 析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区 域(包含 IP 地址到域名的解析记录)

通俗来讲:DNS相当于一个翻译官,负责将域名翻译成ip地址 让计算机可以看懂。 举例子:image#472px #420px

域名

根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本

  • 一级域名:Top Level Domain: tld
  • 三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
  • com, edu, mil, gov, net, org, int,arpa
  • 二级域名:magedu.com
  • 三级域名:study.magedu.com
  • 最多可达到127级域名 在域名的每一层都会有一个对应的域名服务器 本机会有一个默认的本机域名服务器。 image

dns服务器类型

  • 缓存域名服务器: 只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定 其他 DNS 服务器作为解析来源。
  • 主域名服务器:管理和维护所负责解析的域内解析库的服务器
  • 从域名服务器 从主服务器或从服务器"复制"(区域传输)解析库副本 序列号:解析库版本号,主服务器解析库变化时,其序列递增 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔 过期时长:从服务器联系不到主服务器时,多久后停止服务 通知机制:主服务器解析库发生变化时,会主动通知从服务器

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

查询方式

递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)

通俗理解就是:如果 A 请求 B,那么 B 作为接收者一定要给 A 想要的答案

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

通俗理解:如果接收者 B 没有请求者 A 所需要的准确内容,接收者 B 将告诉请求者 A,如何去获得这个内容,但是自己并不去发出请求 A会继续按照获取的信息 去请求。

缓存

在域名服务器解析的时候,使用缓存保存域名和IP地址的映射 算机中DNS的记录也分成了两种缓存方式:

  • 浏览器缓存:浏览器在获取网站域名的实际 IP 地址后会对其进行缓存,减少网络请求的损耗
  • 操作系统缓存:操作系统的缓存其实是用户自己配置的 hosts 文件
  • windows系统查询dns缓存命令:ipconfig /displaydns
  • windows系统清理dns缓存命令:ipconfig /flushdns

查询过程

正向解析

  • 首先搜索本地设置的hosts若没有命中, 进行下一步
  • 操作系统将域名发送至本地域名服务器,本地域名服务器采用递归查询 ,查找成功则返回结果
  • !!#ffff00 (以上为递归查询,会给一个结果 不论是否命中)!!
  • 若本地域名服务器没有命中,则本地域名服务器向根域名服务器进行迭代查询
  • 首先本地域名服务器向根域名服务器发起请求,根域名服务器返回结果,未命中会告知去一级服务器域名进行解析。
  • 本地域名服务器拿到这个一级域名服务器的地址后,就向其发起请求,则获取权限域名服务器的地址
  • 本地域名服务器根据权限域名服务器的地址向其发起请求,最终得到该域名对应的 IP 地址
  • 本地域名服务器将得到的 IP 地址返回给操作系统,同时自己将 IP 地址缓存起

DNS解析各种资源记录

记录类型: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服务器,服务器类型为域名服务器
  • !!#ffff00 CNAME!! : Canonical Name,别名记录
  • MX(Mail eXchanger)邮件交换器
  • TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等

DNS软件bind

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

  • bind:服务器
  • bind-libs:相关库
  • bind-utils: 客户端
  • bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/

bind配置文件 程序名-named

[root@xyy1 ~]# rpm -qc bind 
/etc/logrotate.d/named 
/etc/named.conf #主配置文件
/etc/named.iscdlv.key
/etc/named.rfc1912.zones#区域配置文件
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca #根服务器位置 
/var/named/named.empty
/var/named/named.localhost #配置模板文件 
/var/named/named.loopback

正向解析

1.关闭防火墙和senlinux 安装软件bind

[root@xyy1 ~]# systemctl stop firewalld.service 
[root@xyy1 ~]# setenforce 0 
[root@xyy1 ~]# yum install bind bind-utlis -y 

2.启动bind软件 ,修改网卡配置dns修改成本机。

[root@xyy1 ~]# systemctl start named #启动程序
[root@xyy1 html]# systemctl status named #查看进程状态 runing代表正常运行 
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon  
[root@xyy1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #根据网卡名称进行修改 DNS1=127.0.0.1 
[root@xyy1 ~]# systemctl restart network #重启网络服务

3.修改全局配置文件允许自己被访问和发起访问。

[root@xyy1 ~]# vim /etc/named.conf  #修改配置为any 不做限制 也可以注释掉。

image#472px #86px 4.修改局部配置文件 自定义域名以及模板文件名称。

[root@xyy1 html]# vim /etc/named.rfc1912.zones

域名自定义xyy.com 配置文件名xyy.con.zone image 5.保留权限将named程序的模板配置文件 复制到同一目录下 名称是xyy.com.zone

[root@xyy1 ~]# cd /var/named/ #切换目录
[root@xyy1 named]# cp -p /var/named/named.localhost  xyy.com.zone
[root@xyy1 named]# ls #查看是否成功复制。
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves  xyy.com.zone 

6.修改配置文件 按照格式

[root@xyy1 named]# vim xyy.com.zone 

$TTL 1D
@       IN SOA  master.xyy.xom. qq.xyy.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       192.168.64.30
www     A       192.168.64.90

各字段含义

$TTL 1D  #有效解析记录的生存周期
@   IN SOA master.xyy.com. qq.xyy.com. (   #“@"符号表示当前的DNS区域名
                     0   ; serial         #更新序列号,可以是10位以内的整数
                    1D   ; refresh        #刷新时间,重新下载地址数据的间隔
                    1H   ; retry          #重试延时,下载失败后的重试间隔
                    1W   ; expire     #失效时间,超过该时间仍无法下载则放弃#
                    3H)  ; minimum        #无效解析记录的生存周期,


        NS      master             #记录当前区域的DNS服务器的名称
master  A     192.168.64.30                #记录主机IP地址
IN   MX 10    mail.qq.com.            #MX为邮件交换记录,数字越大优先级越低
www  IN A     192.168.64.10            #记录正向解析www.benet.com对应的IP
mail IN A     192.168.64.11             #MX为邮件交换记录,数字越小优先级高 
ftp  IN CNAME  www                       #CNAME使用别名,ftp 是www的别名
*    IN A   192.168.64.99               #泛域名解析,“*"代表任意主机名

7.写网页静态文本文件/var/www/html 目录下新建文件 index.html 可以通过ip直接访问 进行验证DNS解析。

[root@xyy1 named]# cd /var/www/html/
[root@xyy1 html]# vim index.html
[root@xyy1 html]# named-checkconf index.html  #检查静态文件。
index.html:1: unknown option 'www.xyy.com'
index.html:2: unexpected token near end of file
[root@xyy1 html]# rndc reload  #重新加载dns服务
server reload successful
[root@xyy1 html]# host www.xyy.com 
www.xyy.com has address 192.168.64.90
[root@xyy1 named]# host master.xyy.com 
master.xyy.com has address 192.168.64.30 
内容大纲
批注笔记
📚 DNS
ArticleBot
z
z
z
z
主页
会议室
Git管理
文章
云文档
看板