现在想想,我们平时在浏览器上浏览网页时,一般是不是使用的域名去访问的呢,为什么要使用域名呢,使用域名的好处是什么呢,带着这些问题,深入思考才能真正的学好DNS。
要想了解DNS,就必须先知道域名这个概念。
1.域名
域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。
注:具有独一无二,不可重复的特性。
IP地址和域名是一对多的关系。一个IP可以对应多个不同的域名,但是一个域名只能对应一个IP地址。
2.域名的组成和分类
(1)"."(圆点)-----代表根域(一般可省略不写)
全球共有十三个根域:这13台根域名服务器中名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国、瑞典和日本。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。
(2)com:顶级域,由ICANN互联网名称与数字地址分配机构(The Internet Corporation for AssignedNames and Numbers)组织指定,管理,顶级域又分为很多类。
具体常用的有:
1>>:国家地区域名:cn(中国)、hk(香港)、sg(新加坡)等。
2>>:通用顶级域名:com(商业机构)、org(非营利组织)、edu(教育机构)等。
3>>:新通用顶级域名:red(红色、热情)、top(顶级、高端)等。
(3) atguigu 二级域(注册域),可由个人或组织注册申请
(4) www 三级域(子域),服务网站名代表
(5)主机名:一般用来表示某台主机 例如:chen.www.atgutigu.com.-----chen就是主机名
域名系统结构是一个倒树状结构,从右到左,由根到主机位
3.DNS含义及简介
域名系统(Domain Name System,缩写:DNS)是互联网的一项服务,其实域名系统就是名字系统。域名解析是把域名指向网站空间的IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP 地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替 IP 地址标识站点的地址。域名解析就是域名到 IP 地址的转换过程。 域名的解析工作由 DNS 服务器完成。
其实,使用域名主要是为了方便人们记忆,你想想看如果你上网时,打开浏览器,要输如IP地址,如果对数字敏感还好,如果不那么敏感,那上网就是个麻烦事儿了
注:DNS协议运行在UDP协议之上,使用端口号53。
4.域名解析的具体过程
(1) 当你在浏览器输入一个域名时,客户机首先查看查找本地 hosts 文件,是否有这个域名与IP的映射关系,如果有则返回解析,否则进行下一步 。
(2)这一步客户机会查看本地缓存,是否存在本条目的缓存,如果有则直接返回,否则进行下一步。
(3)将请求转发给指向的 DNS 服务器,如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,会找TCP/IP参数中设置的首选DNS服务器,首先在缓存中查找,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性,如果没有就进行下一步。
(4) 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
(5)如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,向全球 13 个根域服务器发起 DNS 请求,根DNS服务器收到请求后会判断这个域名(.com)顶级域是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com顶级域的服务器收到请求后,如果自己无法解析,它就会找一个管理atguigu.com的DNS服务器地址给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找atguigu.com域服务器,重复上面的动作,进行查询,直至找到www . atguigu.com主机。
(6)如果用的是转发模式,本地DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把请求转至上上级,以此循环。找到最后把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
一、主机向本地域名服务器的查询一般都是采用递归查询。
所谓递归查询就是:
如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
二、本地域名服务器向根域名服务器的查询的迭代查询。
迭代查询的特点:
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
此图给出了两种查询方式的区别
6.权威及非权威DNS服务器简介
权威名称服务器的类型包括
Master : 包含原始区域数据。有时称作 “主要 ”名称服务器
Slave : 备份服务器 ,通过区域传送从 Master 服务器获得的区域数据的副本。有时称作 “次要 ”名称服务器。
hint:缓存dns服务器: 只缓存dns数据
forward转发器:缓存服务器去掉缓存功能
非权威 / 递归名称服务器
客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括 存名称服务器 : 仅用于查找 , 对于非重要数据之外的任何内容都不具有权威性。
客户端上的 Stub 解析器 将查询发送至 /etc/resolv.conf 中的名称服务器,如果名称服务器对于请求的信息具有权威性 ,会将权威答案发送至客户端,否则 , 如果名称服务器在其缓存中有请求的信息 , 则会将非权威答案发送至客户端,如果缓存中没有信息 ,名称服务器将搜索权威名称服务器以查找信息 , 从根区域开始 , 按照DNS 层次结构向下搜索, 直至对于信息有具有权威性的名称服务器 ,以此为客户端获得答案。在此情况中,名称服务器将信息传递至客户端并在自己的缓存中保留一个副本 , 以备以后查找。
7.DNS相关软件包及软件包的安装
提供dns服务的套件叫bind但执行服务名称的是named
我们说DNS是一种协议,而对于每一种协议的实现都需要程序员开发出遵循这种协议规范的软件程序来实现,这里要介绍的BIND就是DNS协议的一种开源实现。相关软件包
bind不仅提供了主包,还提供了各种bind的支包,它们用于实现不同的功能。而在众多bind支包中,最常用到的有:bind-utils,bind-libs, bind-chroot等。
bind:提供dns server程序,以及几个常用的测试工具。
bind-utils:bind客户端程序集,例如提供dig, nslookup等工具。
bind-libs:提供bind和bind-utils包中的程序共同用到的库文件。
bind-chroot:选装,让bind程序(named进程)运行于jail进程之下。
安装bind
[root@chen ~]# yum install bind
8.bind的相关配置文件及目录
/etc/named.conf 主配置文件
/etc/named/rfc1912.zones 区域配置文件
/var/named/ 数据文件配置目录
[root@chen ~]# cd /var/named/
[root@chen named]# ll
总用量 20
-rw-r----- 1 root named 286 11月 12 19:44 chen.com.zone #数据文件
drwxrwx--- 2 named named 6 2月 27 2020 data #数据目录
drwxrwx--- 2 named named 6 2月 27 2020 dynamic
-rw-r----- 1 root named 2253 2月 27 2020 named.ca
-rw-r----- 1 root named 152 2月 27 2020 named.empty
-rw-r----- 1 root named 152 2月 27 2020 named.localhost #正向解析库文件
-rw-r----- 1 root named 168 2月 27 2020 named.loopback #反向解析库文件
drwxrwx--- 2 named named 6 2月 27 2020 slaves
9.配置正向解析
[root@chen named]# vim /etc/named.conf
#将其中一些不必要的参数直接可以删除避免后面影响测试
options {
listen-on port 53 { 192.168.150.100; }; #监听地址与端口
directory "/var/named"; #解析库文件目录
allow-query { 192.168.150.0/24; }; #允许查询解析的网段
};
zone "chen.com" IN {
type master; #类型 主
file "chen.com.zone"; #正向解析库文件
};
[root@chen named]# vim /etc/named.rfc1912.zones
#这个文件修改较少只需指定zone,和DNS服务器类型,以及对应的正向解析库文件
zone "chen.com" IN {
type master;
file "chen.com.zone";
};
查看一下/var/named/named.localhost
[root@chen named]# cat named.localhost
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
[root@chen named]# vim chen.com.zone #这个文件是正向解析库文件,一般我们将/var/named.localhost文件拷贝一份做修改即可
$TTL 1D
@ IN SOA @ admin.chen.com. (
2020111201 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.chen.com.
ns1 A 192.168.150.100
mail A 192.168.150.44
www A 192.168.150.55
ftp A 192.168.150.66
web CNAME www
修改过配置文件记得启动服务
[root@chen named]# systemctl restart namd
解析库文件中的主要资源记录
- SOA(起始授权记录) 记录提供有关dns区域工作方式的信息 -----具体负责哪个区域的解析 (指定权威服务器)
这代表着master/salve相关的认证,授权资料。不论有没有设定master/salve的架构都需要设定好。
2.NS 将自己的域名映射到DNS 将域名最终映射到哪一台主机(标记本地 dns服务器)
3.A (ipv4地址记录),资源记录将主机名映射到ipv4地址。
4.CNAME (规范名称)记录域别名
5.MX (邮件交换记录)
6.PTR指针记录 将IPV4 IPV6地址映射到主机名 (用于反向DNS)
7.AAAA (IPV6 地址记录) 资源记录(四A记录)将主机名映射到ipv6地址。TTL(time to live)生存时间dns记录在dns服务器上的缓存时长。
@域名 IN INTERNET输入标准 起始授权记录 服务器所对应的主域名服务器 管理员邮件以.代替常见的类型的@
五种定义的信息
serial number: 序列号 定义当前使用的数据序列号 遵循“年+月+日+编号” ·,主和从的更新依据
refresh: 定义检查间隔时间 (上次和这次变化的时间)
retry: 重试时间 < 检查时间>
expire: 过期时间 (什么时候通过从服务器解析)
negative answer ttl: 否定答案的缓存时长 (没有指定生存期的数据可以保存在数据中的时间及TTL值)
时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
测试正向解析
nslookup和dig这两个工具实现测试,两个工具使用灵活,可以通过man手册查看使用
nslookup工具
[root@chen named]# host ftp.chen.com 192.168.150.100
Using domain server:
Name: 192.168.150.100
Address: 192.168.150.100#53
Aliases:
ftp.chen.com has address 192.168.150.66
#dig工具#
[root@chen named]# dig -t NS chen.com @192.168.150.100
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> -t NS chen.com @192.168.150.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16887
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 544c75bc82822e39f6d385745fadd9266f2862abf27a1fc6 (good)
;; QUESTION SECTION:
;chen.com. IN NS
;; ANSWER SECTION:
chen.com. 86400 IN NS ns1.chen.com.
;; ADDITIONAL SECTION:
ns1.chen.com. 86400 IN A 192.168.150.100
;; Query time: 0 msec
;; SERVER: 192.168.150.100#53(192.168.150.100)
;; WHEN: 五 11月 13 08:53:58 CST 2020
;; MSG SIZE rcvd: 99
10.配置反向解析
[root@chen named]# vim /etc/named.rfc1912.zones
zone "150.168.192.in-addr.arpa" IN { #注意此处区名称是约定成俗,并不是规定一定要写成这样,但一般我们都遵守这个约定
type master;
file "192.168.150.zone";
allow-update { 192.168.150.0/24; };
};
[root@chen named]# cat 192.168.150.znoe
$TTL 1D
@ IN SOA @ admin.chen.com. (
2020111202 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.chen.com.
ns1 PTR 192.168.150.100
44 PTR mail.chen.com.
55 PTR www.chen.com.
PTR web.chen.com.
66 PTR ftp.chen.com.
[root@chen named]# systemctl restart named
测试反向解析
[root@chen named]# nslookup 192.168.150.100
Server: 192.168.150.100
Address: 192.168.150.100#53
100.168.192.in-addr.arpa name = ns1.chen.com.