一、DNS概况
DNS概念
当前网络间通信是利用和依赖IP地址实现的,但数字形式的IP地址是很难记忆的。当网络设备众多时,记住每个IP地址,可以说是很难的。如:www.baidu.com,这种由文字组成的名称,显而易见要更容易记忆。但是计算机不会理解这种名称的,我们可以利用一种名字解析服务将名称转化成(解析)成IP地址。从而我们就可以利用名称来直接访问网络中设备了。除此之外还有一个重要功能,利用名称解析服务可以实现主机和IP的解,即:当主机IP变化时,只需要修改名称服务即可,用户仍可以通过原有的名称进行访问而不受影响。
DNS,域名解析协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp(tcp连接主要用于主从复制,udp连接主要用于解析)。实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区域(包含 IP 地址到域名的解析记录)。
DNS服务器类型
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器DNS作为解析来源。
主域名服务器:管理和维护所负责解析的域内解析库的服务器。
从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本。
DNS查询类型及原理
1.查询方式
- 递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
- 迭代查询:一般情况下本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)
2.查询原理过程
- 先查询本机的缓存记录
- 查询hosts文件
- 查询dns域名服务器,交给dns域名服务器处理
以上过程成为递归查询 - 这个dns服务器可能是本地域名服务器,也有缓存,如果有直接返回结果,如果没有则进行下一步。
- 求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器。
- 求助一级域服务器,一级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器。
- 求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器。
- 本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端。
二、Linux中DNS解析
实现方法
1.本地host软件
#格式 IP地址 域名
可以在此文件中增加对应关系,直接就可以访问该域名网站。
更改dns优先级
进入vim /etc/nsswitch.conf#修改dns的优先级
39行是设置先问dns解析,是先问dns还是先问本地。
#修改 files和 dns的先后 优先级就会改变
2.安装软件,搭建本地DNS服务器。
安装软件bind和bind-utils包。
安装完bind软件后:
1.自动生成了一个用户 一个组
named
/var/named
2.安装包名:bind 程序名字:named
3.配置文件:
/etc/named.conf :主配置文件
/etc/named.rfc1912.zones :区域配置文件 解析的域名要在这个文件中指明
数据库配置文件/var/named/*:指明了域名和IP地址一 一对应的关系。
**注意:**当内网一台服务器,作dns服务器的话,需要将其他机器指向它,自己也要指向自己。
进入网络配置,修改DNS的IP地址,并重启网络后,输入命令cat /etc/resolv.conf,查看dns是否修改成功。
修改完之后,ping百度ping不通,但按照理论来说,是可以的但现在ping不通,问题是因为什么?
原因是named软件,只监听127.0.0.1,并不监听其他地址,需要更改配置。进入/etc/named.conf,更改两行配置。IP地址替换成any即可。
更改成功。
修改区域配置文件
vim /etc/named.rfc1912.zones
代码含义,如果你想解析cxk.com(注意前面不要加主机名)这个域名,去找cxk.com.zone这个配置文件。
复制配置文件,且要注意权限一致。 用cp -p复制,且需要和上面区域配置文件中定义的名字一致。
正向解析
各种资源记录
记录类型: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记录设置一些数据版本和更新以及过期时间等信息。
$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 #泛域名解析,“*"代表任意主机名
重启服务后,host www.cxk.com
解析工具
1.dig
2.host
3.nslookup