前言
什么是DNS?
定义:DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解 析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区 域(包含 IP 地址到域名的解析记录)
通俗来讲:DNS相当于一个翻译官,负责将域名翻译成ip地址 让计算机可以看懂。 举例子:
域名
根域: 全球根服务器节点只有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级域名 在域名的每一层都会有一个对应的域名服务器 本机会有一个默认的本机域名服务器。
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 不做限制 也可以注释掉。
4.修改局部配置文件 自定义域名以及模板文件名称。
[root@xyy1 html]# vim /etc/named.rfc1912.zones
域名自定义xyy.com 配置文件名xyy.con.zone 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