第十七天:域名系统DNS
一、名字解析介绍
1、利用一种名字解析服务将名称转化成(解析)成IP地址。从而我们就可以利用名称来直接访问网络中设备了。除此之外还有一个重要
功能,利用名称解析服务可以实现主机和IP的解耦,即:当主机IP变化时,只需要修改名称服务即可,用户仍可以通过原有的名称进行访问而不受影响。
实现此服务的方法是多样的。如下面所述:
本地名称解析配置文件:hosts
DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互
映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp
BIND:Bekerley Internet Name Domain,由 ISC (www.isc.org)提供的DNS软件实现DNS域名结构
根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本
一级域名:Top Level Domain: tld
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
com, edu, mil, gov, net, org, int,arpa
二级域名:wang.org
三级域名:study.wang.org
最多可达到127级域名
ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配
机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管
理、以及根服务器系统的管理
![](https://img2024.cnblogs.com/blog/808098/202401/808098-20240131215009765-1988477746.png)
二、DNS服务工作原理
1、DNS查询类型
递归查询:
是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器
本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用
户。
迭代查询:
是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的
地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
DNS缓存:
DNS缓存是将解析数据存储在靠近发起请求的客户端的位置,也可以说DNS数据是可以缓存在任意
位置,最终目的是以此减少递归查询过程,可以更快的让用户获得请求结果
2、名称服务器
Name Server,域内负责解析本域内的名称的DNS服务器
IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,荷兰1,瑞典1,日本1
IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从
3、解析类型
FQDN --> IP 正向解析
IP --> FQDN 反向解析
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树
4、完整的查询请求经过的流程
Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递
归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
三、DNS 服务相关概念和技术
1、DNS服务器的类型
主DNS服务器
从DNS服务器
缓存DNS服务器(转发器)
2、区域传输
完全传输:传送整个解析库
增量传输:传递解析库变化的那部分内容
3、解析形式
正向:FQDN( Fully Qualified Domain Name) --> IP
反向: IP --> FQDN
4、负责本地域名的正向和反向解析库
正向区域
反向区域
5、解析答案
肯定答案:存在对应的查询结果
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:直接由存有此查询结果的DNS服务器(权威服务器)返回的答案
非权威答案:由其它非权威服务器返回的查询答案
6、各种资源记录
区域解析库:由众多资源记录RR(Resource Record)组成
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解
析库的第一条记录
A:internet Address,作用,FQDN --> IP
AAAA:FQDN --> IPv6
PTR:PoinTeR,IP --> FQDN
NS:Name Server,专用于标明当前区域的DNS服务器
CNAME : Canonical Name,别名记录
MX:Mail eXchanger,邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮
件)记录,https验证等,如下示例:
(1)资源记录定义的
name [TTL] IN rr_type value
(2)SOA记录
name: 当前区域的名字,例如"wang.org."
value: 有多部分组成
(3)NS记录
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如: ns.wang.org.
(4)MX记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
(5)A记录
name: 某主机的FQDN,例如:www.wang.org.
value: 主机名对应主机的IP地址
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
(6)AAAA记录
name: FQDN
value: IPv6
(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
(8) CNAME别名记录
name: 别名的FQDN
value: 真正名字的FQDN
7、子域授权
每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权,类似根域授权tld
glue record:粘合记录,父域授权子域的记录
8 互联网域名
1. 域名注册
代理商:万网, 新网, godaddy
2. 注册完成以后,想自己用专用服务来解析
管理后台:把NS记录指向的服务器名称,和A记录指向的服务器地址
9 whois
范例: whois 查询域名信息
10 HttpDNS
HttpDNS是使用HTTP协议向DNS服务器的80端口进行请求,代替传统的DNS协议向DNS服务器的53端
口进行请求。也就是使用Http协议去进行DNS解析请求,DNS服务器返回的解析结果(域名对应的服务
器IP),直接向该IP发起对应的API服务请求,代替使用域名。
四、DNS软件 bind
DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns
1、BIND(Berkeley Internet Name Domain)相关程序包
yum list all bind*
bind:服务器
bind-utils: 客户端
bind-libs:相关库,依赖关系自动安装
bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/
2、BIND包相关文件
BIND主程序:/usr/sbin/named
服务脚本和Unit名称:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
管理工具:/usr/sbin/rndc:remote name domain controller,默认与bind安装在同一主机,且
只能通过127.0.0.1连接named进程,提供辅助性的管理功能;953/tcp
解析库文件:/var/named/ZONE_NAME.ZONE
注意:
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根区域文件;named.ca
(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库
3、主配置文件
全局配置:options {};
日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
zone "ZONE_NAME" IN {};
注意:
任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的
IP地址上
缓存名称服务器的配置:监听外部地址即可
dnssec: 建议关闭dnssec,设为no
五、实现主服务器
1、主DNS服务器配置
2、主配置文件语法检查
named-checkconf
3、解析库文件语法检查
named-checkzone "wang.org" /var/named/wang.org.zone
4、配置生效
#三种方式
#rndc reload
#systemctl reload named
#service named reload
5、DNS 测试和管理工具
(1)dig 命令
(2)host命令
(3)nslookup命令
(4)rndc 命令
6、允许动态更新
五、启用DNS客户端缓存功能
在高并发的服务器场景中,对DNS的服务器查询性能有较高的要求,如果在客户端启用DNS缓存功能,可以
大幅减轻DNS服务器的压力,同时也能提高DNS客户端名称解析速度
1 、CentOS 启用DNS客户端缓存
CentOS 默认没有启用DNS客户端缓存,安装nscd(Name Service Cache Daemon,名称服务缓存守护进
程)包可以支持DNS缓存功能
减少DNS服务器压力,提高DNS查询速度
2 Ubuntu 启用DNS客户端缓存
[root@ubuntu1804 ~]#systemctl status systemd-resolved.service
五、实现反向解析区域
1、反向解析配置
反向区域:即将IP反向解析为FQDN
区域名称:网络地址反写.in-addr.arpa
七、实现从服务器
只有一台主DNS服务器,存在单点失败的问题,可以建立主DNS服务器的备份服务器,即从服务器来实
现DNS服务的容错机制。从服务器可以自动和主服务器进行单向的数据同步,从而和主DNS服务器一
样,也可以对外提供查询服务,但从服务器不提供数据更新服务。
1 DNS从服务器
1. 应该为一台独立的名称服务器
2. 主服务器的区域解析库文件中必须有一条NS记录指向从服务器
3. 从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目
录中
4. 主服务器得允许从服务器作区域传送
5. 主从服务器时间应该同步,可通过ntp进行
6. bind程序的版本应该保持一致;否则,应该从高,主低
2 定义从区域
八、实现子域
1 、子域委派授权
将子域委派给其它主机管理,实现分布式DNS数据库
正向解析区域子域方法
2、环境要求
需要五台主机
DNS父域服务器:10.0.0.8
DNS子域服务器:10.0.0.18
父域的web服务器:10.0.0.7,www.wang.org
子域的web服务器:10.0.0.17,www.shanghai.wang.org
DNS客户端:10.0.0.6
九、实现 DNS 转发(缓存)服务器
1、DNS转发
利用DNS转发,可以将用户的DNS请求,转发至指定的DNS服务,而非默认的根DNS服务器,并将指定
服务器查询的返回结果进行缓存,提高效率。
dnssec-enable no;
dnssec-validation no;
2、转发方式
first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询
only: 先转发至指定DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询
十、实现智能DNS
1、 GSLB
GSLB:Global Server Load Balance全局负载均衡
GSLB 是对服务器和链路进行综合判断来决定由哪个地点的服务器来提供服务,实现异地服务器群服务
质量的保证
GSLB主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域)
GSLB分为基于DNS实现、基于重定向实现、基于路由协议实现,其中最通用的是基于DNS解析方式
2、CDN (Content Delivery Network)内容分发网络
3、CDN工作原理
1. 用户向浏览器输入www.a.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服
务器请求
2. 网站的DNS域名解析器设置了CNAME,指向了www.a.tbcdn.com,请求指向了CDN网络中的智能
DNS负载均衡系统
3. 智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;
4. 用户向该IP节点(CDN服务器)发出请求
5. 由于是第一次访问,CDN服务器会通过Cache内部专用DNS解析得到此域名的原web站点IP,向原
站点服务器发起请求,并在CDN服务器上缓存内容
6. 请求结果发给用户
4、 CDN服务商
服务商:阿里,腾讯,蓝汛,网宿,帝联等
智能DNS: dnspod dns.la
5、智能DNS相关技术
十一、DNS排错
DNS 服务常见故障如下
SERVFAIL:The nameserver encountered a problem while processing the query.
可使用dig +trace排错,可能是网络和防火墙导致
NXDOMAIN:The queried name does not exist in the zone.
可能是CNAME对应的A记录不存在导致
REFUSED:The nameserver refused the client's DNS request due to policy restrictions.
可能是DNS策略导致