Linux之DNS域名解析服务

2021/9/30 7:15:42

本文主要是介绍Linux之DNS域名解析服务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

这里写目录标题

  • 一.DNS概述
      • 1.1、DNS的定义
      • 1.2、DNS的作用
      • 1.3、DNS的结构
  • 二.DNS系统类型
      • 2.1、缓存域名服务器
      • 2.2、主域名服务器
      • 2.3、从域名服务器
  • 三.DNS查询类型及原理
      • 3.1、查询方式
    • 迭代查询
    • 递归查询
      • 3.2、查询过程
  • 四.正向解析实验
  • 五.反向解析实验

一.DNS概述

1.1、DNS的定义

域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。
域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。
互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。

1.2、DNS的作用

正向解析:根据域名查找对应的IP地址;反向解析:根据IP地址查找对应的域名

1.3、DNS的结构

根域:位于树状结构最顶层,用"."表示

  • 一级域(顶级域):一般代表一种类型的组织机构或国家地区;
    .net(网络供应商)、.com(工商企业)、.org(团体组织)、.edu(教育结构)、.gov(政府部门)、.cn(中国国家域名)
  • 二级域:用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家部门统一管理
    .net.cn .org.cn .com.cn
  • 子域:二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名
  • 主机:主机位于域名空间最下层,就是一台具体的计算机
    在这里插入图片描述

二.DNS系统类型

2.1、缓存域名服务器

  • 也称为DNS高速缓存服务服务器
  • 通过向其他域名服务器查询获得域名-IP地址
  • 将域名查询结果缓存到本地,提高重复查询时的速度

2.2、主域名服务器

  • 特定DNS区域的权威服务器,具有唯一性
  • 负责维护该区域内所有域名-IP地址的映射记录
  • 需要自行建立所负责区域的地址数据文件
    负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。构建主域名服务器时,需要自行建立所负责区域的地址数据文件

2.3、从域名服务器

  • 也成为辅助域名服务器,是对主域名服务器的热备份
  • 其维护的域名-IP地址记录来源于主域名服务器
  • 需要从主域名服务器自动同步区域地址数据库
    当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库

三.DNS查询类型及原理

3.1、查询方式

  • 迭代查询

迭代查询又称重指引,当服务器使用迭代查询时能使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止,一般每次指引都会更靠近根服务器(向上),查寻到根域名服务器后,则会再次根据提示向下查找。B访问C、D、E、F、G,都是迭代查询,首先B 访问C,得到了提示访问D的提示信息后,开始访问D,D又返回给B提示信息,告诉B应该访问E,依次类推。

  • 递归查询

递归查询并不是最常见的查询方式,域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态。
当收到DNS工作站的查询请求后,DNS服务器在自己的缓存或区域数据库中查找,如找到则返回结果,如找不到,返回错误结果。即DNS服务器只会向DNS工作站返回两种信息:要么是在该DNS服务器上查找到的结果,要么是查询失败。该DNS工作站自行向该DNS服务器询问。“递归”的意思是有来有往,并且来、往的次数是一致的。一般由DNS工作站提出的查询请求便属于递归查询。
由于递归查询是两者之间的,所以通常查询起来高效快捷,能最快应答成功或失败的解析,然而无法成功解析所有域名。一般发生在客户端与服务器间,也有特殊情况是dns服务器与dns服务器之间。

3.2、查询过程

第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器.
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回.
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址.
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址.
第五步:重复第四步,直到找到正确的纪录.
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机.
让我们举一个例子来详细说明解析域名的过程.假设我们的客户机如果想要访问站点:www.linejet.com此客户本地的域名服务器是dns.company.com , 一个根域名服务器是NS.INTER.NET , 所要访问的网站的域名服务器是dns.linejet.com,域名解析的过程如下所示.
(1)客户机发出请求解析域名www.linejet.com的报文
(2)本地的域名服务器收到请求后, 查询本地缓存, 假设没有该纪录, 则本地域名服务器dns.company.com则向根域名服务器NS.INTER.NET发出请求解析域名www.linejet.com
(3)根域名服务器NS.INTER.NET收到请求后查询本地记录得到如下结果:linejet.com NS dns.linejet.com (表示linejet.com域中的域名服务器为:dns.linejet.com ), 同时给出dns.linejet.com的地址,并将结果返回给域名服务器dns.company.com
(4)域名服务器dns.company.com 收到回应后,再发出请求解析域名www.linejet.com的报文.
(5)域名服务器 dns.linejet.com收到请求后,开始查询本地的记录,找到如下一条记录:www.linejet.com A 211.120.3.12 (表示linejet.com域中域名服务器dns.linejet.com的IP地址为:211.120.3.12),并将结果返回给客户本地域名服务器dns.company.com
(6)客户本地域名服务器将返回的结果保存到本地缓存,同时将结果返回给客户机。

四.正向解析实验

  • 记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
  • SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解
  • A(internet Address):作用,域名解析成IP地址
  • PTR(PoinTeR):反向解析,ip地址解析成域名
  • NS(Name Server):,专用于标明当前区域的DNS服务器,服务器类型为域名服务器
  • CNAME : Canonical Name,别名记录
  • MX(Mail eXchanger)邮件交换器
  • TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等
    1、关闭防火墙
    [root@localhost ~]#systemctl stop firewalld.service
    [root@localhost ~]#setenforce 0
    2、安装bind软件包
    [root@localhost ~]#yum install bind bind-utils -y
    3、先查看需要修改的配置文件所在路径
[root@localhost ~]# 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

4、开启named服务并检查

[root@localhost ~]# systemctl start named
[root@localhost ~]# netstat -ntap | grep named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      4066/named          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      4066/named          
tcp6       0      0 ::1:53                  :::*                    LISTEN      4066/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      4066/named 

5、修改配置文件
[root@localhost ~]#vim /etc/named.conf
[root@localhost ~]#rndc reload
#重新加载DNS服务
在这里插入图片描述
6、编写域名
[root@localhost named]#vim /etc/named.rfc1912.zones
在这里插入图片描述
7、配置正向区域数据文件

[root@localhost named]#cd /var/named/ 切换目录
[root@localhost named]#cp -p named.localhost ./why.com.zone 保留权限复制
[root@localhost named]#vim why.com.zone 编辑数据库文件,解析记录对应关系

在这里插入图片描述
在这里插入图片描述
在其他服务器测试
在这里插入图片描述

五.反向解析实验

与正向操作类似

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



这篇关于Linux之DNS域名解析服务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程