在大家普遍使用的window系统上网配置中,DNS一栏是必须正确配置的一项,否者有可能导致网页无法正确的打开,影响我们正常使用,Linux也同理。既然DNS如此重要,那么它究竟是什么呢?今天我们就DNS的基本原理和配置简单做一下简单介绍。

一,什么是DNS:

1,DNS (Domain Name System 的缩写)是一个域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数据串。它的作用非常简单,就是根据域名查出IP地址。你可以把它想象成一本巨大的电话本。

2,意义:通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法,域名是互联网上的身份标识,是不可重复的唯一标识资源; 互联网的全球化使得域名成为标识一国主权的国家战略资源。例如全球13台根域名服务器的放置管理问题。

二,DNS原理简介:

1,域名系统概述

DNS域名系统可以完成的工作如下:
                 1. 域名向IP地址的解析
                 2. 主机别名
                 3. 邮件服务器别名
                 4. 负载均衡:Web服务器

为什么不使用集中式的DNS? 
                1. 单点失败问题
                2. 流量问题
                3. 距离问题
                4. 维护性问题

域名到IP地址的解析过程的要点如下:当某一个应用需要把主机名解析为IP地址时,该应用进程就调用解析程序,并称为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用程序获得目的主机的IP地址后即可进行通信。
若本地域名服务器不能回答该请求,则此域名服务器就暂时称为DNS的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。

2、因特网的域名结构

由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法(如上图)。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。从语法上讲,每一个域名都是有标号(label)序列组成,而各标号之间用点(小数点)隔开。
如下例子所示:

DNS规定,域名中的标号都有英文和数字组成,每一个标号不超过63个字符(为了记忆方便,一般不会超过12个字符),也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的字符写在最右边。由多个标号组成的完整域名总共不超过255个字符。DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。

域名只是逻辑概念,并不代表计算机所在的物理地点。据2006年12月统计,现在顶级域名TLD(Top Level Domain)已有265个,分为三大类:

(1).国家顶级域名nTLD:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。
           (2).通用顶级域名gTLD:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门),name(适用于个人注册的通用顶级域名)。
           (3).基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。

互联网域名空间结构

3、域名服务器

如果采用上述的树状结构,每一个节点都采用一个域名服务器,这样会使得域名服务器的数量太多,使域名服务器系统的运行效率降低。所以在DNS中,采用划分区的方 法来解决。
            一个服务器所负责管辖(或有权限)的范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机到域名IP地址的映射。总之,DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。“区”是DNS服务器实际管辖的范围。区 <= 域。
             下图是区的不同划分方法的举例。假定abc公司有下属部门x和y,部门x下面有分三个分布们u,v,w,而y下面还有下属部门t。示例A表示abc公司只设一个区abc.com。这是,区abc.com和域abc.com指的是同一件事。但示例B表示abc公司划分为两个区:abc.com和y.abc.com。这两个区都隶属于域abc.com,都各设置了相应的权限域名服务器。不难看出,区是域的子集。

下图是以上图示例B中abc公司划分的两个区为例,给出了DNS域名服务器树状结构图。这种DNS域名服务器树状结构图可以更准确地反映出DNS的分布式结构。图中的每一个域名服务器都能够执行域名到IP地址的解析。当某个DNS服务器不能进行域名到IP地址的转换时,它就会设法找因特网上别的域名服务器进行解析。
          从下图可以看出,因特网上的DNS服务器也是按照层次安排的。每一个域名服务器只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为下面四种不同的类型:

(1)根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。所以根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。需要注意的是,在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

(2)顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。

(3)权限(权威)域名服务器:负责一个“区”的域名服务器。

(4)本地域名服务器:本地服务器不属于下图的域名服务器的层次结构,但是它对域名系统非常重要,一般由ISP(Internet Service Provider),互联网服务提供商提供。作为代理,将查询转发到(层级式)域名解析服务器系统。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。

三、域名的解析过程

1,主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
           2, 本地域名服务器向根域名服务器的查询的过程叫做迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
          下图给出了这两种查询的差别 :

上图的整个查询过程如下:

(1)、主机m.xyz.com先向本地服务器dns.xyz.com进行递归查询。
              (2)、本地服务器采用迭代查询。它先向一个根域名服务器查询。
              (3)、根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
              (4)、本地域名服务器向顶级域名服务器dns.com进行查询。
              (5)、顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。
              (6)、本地域名服务器向权限域名服务器dns.abc.com进行查询。
              (7)、权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。
              (8)、本地域名服务器最后把查询结果告诉m.xyz.com。

四,DNS配置相关文件

安装包:BIND相关程序包:yum list all bind* 
                             bind:服务器
                             bind-libs:相关库
                             bind-utils:客户端
                             bind-chroot: /var/named/chroot/ 

BIND程序名:named

安装相关程序包:

[11:47:33 root@centos7 ~]# yum -y install bind bind-utils bind-libs[root@cxy-65 ~]# rpm -qa | grep bind
bind-9.8.2-0.62.rc1.el6_9.4.x86_64       #主要安装包
bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64    #bind工具
rpcbind-0.2.0-13.el6_9.1.x86_64
bind-libs-9.8.2-0.62.rc1.el6_9.4.x86_64  #bind库文件

相关配置文件:

[[15:16:53 root@centos7 ~]# rpm -qc bind-9.8.2-0.62.rc1.el6_9.4.x86_64
/etc/logrotate.d/named
/etc/named.conf                   #主配置文件
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf                       #Remote name domain controller 远程域名服务器控制器
/etc/rndc.key                       #密钥文件
/etc/sysconfig/named
/var/named/named.ca       #13个根节点的IP地址
/var/named/named.empty
/var/named/named.localhost     #本地主机名的正向解析
/var/named/named.loopback    #本地主机名的反向解析

Linux DNS原理简介及基本配置文件相关推荐

  1. Linux安全原理简介

    Linux安全原理简介 介绍 在设置Linux计算机的所有阶段,安全性应是首要考虑之一.要在计算机上实施良好的安全策略,需要对Linux的基础知识以及所使用的某些应用程序和协议有充分的了解. Linu ...

  2. linux设备驱动程序架构的研究,Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介)...

    Linux设备驱动程序学习(12) -Linux设备模型(底层原理简介) 以<LDD3>的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的.但是我个人认 ...

  3. linux dns chroot配置文件,rhce7 dns chroot 配置

    dns server BIND 安装与配置 配置文件 安装 DNS yum install bind* 根域配置文件 /=/var/named/chroot/ /etc/named.conf --&g ...

  4. 超清晰的 DNS 原理入门指南 (资源)

    DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 一.DNS 简介 DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址 ...

  5. 【教程】Linux DNS 服务器安装、配置及维护

    本文包括理解 DNS 所需的基础知识及 Linux DNS 服务器的安装.配置和维护具体操作相关知识. 红帽认证相关学习推荐: RHCE试听课 [linux系统下,用这个命令可以提高60%的工作效率 ...

  6. DNS 基础知识及 Linux DNS 服务器操作知识

    一.DNS域名结构与域名服务器 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么不叫&quo ...

  7. Linux DNS服务详解——DNS服务搭建细节

    前几天,我陆续给大家介绍了DNS服务的相关内容,今天,我给大家补充介绍一下DNS服务中一些小问题. 前文链接: Linux DNS服务详解--DNS基础知识 Linux DNS服务详解--DNS实战配 ...

  8. Nginx 反向代理工作原理简介与配置详解

    Nginx 反向代理工作原理简介与配置详解 测试环境 CentOS 6.8-x86_64 nginx-1.10.0 下载地址:http://nginx.org/en/download.html 安装 ...

  9. 【Android 异步操作】Handler ( 主线程中的 Handler 与 Looper | Handler 原理简介 )

    文章目录 一.主线程中的 Handler 与 Looper 二.Handler 原理简介 一.主线程中的 Handler 与 Looper Android 系统中 , 点击图标启动一个应用进程 , 就 ...

最新文章

  1. 量子计算机人类意识云,意识上传-人类距离永生还要多久(大脑的工作原理很有可能与量子计算机一致)...
  2. 初级Java程序员所面临的4大挑战
  3. android.graphic.Path
  4. maven国内镜像配置
  5. android webview 重定向 多次load问题,解决webview 第二次调用loadUrl页面不刷新的问题...
  6. Mark一下 | 当当优惠码,实付满150减30 | + 荐书
  7. linux软件读取不到空间,Linux下Oracle软件、数据文件等所在的磁盘分区空间不足的解决思路...
  8. 【Calcite】Calcite 的SQL解析
  9. python32位系统下载_pythonwin下载-PythonWin 32位(Python集成开发环境) 3.6 官方版 - 河东下载站...
  10. Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书!
  11. 你真的会用Jupyter吗?这里有7个进阶功能助你效率翻倍
  12. 数组和集合的区别有哪些?
  13. App---mui页面无法滚动问题
  14. Java 反编译工具包(.class -> .java) 及其在 Minecraft 中相关应用
  15. C#方法名前的方括号是干嘛用的呀?
  16. 互斥锁、自旋锁、读写锁和文件锁
  17. 教你百度网盘文件转阿里云
  18. Java实现计数排序
  19. fiddler重放请求
  20. Eclipse中安装Java反编译插件JD-Eclipse

热门文章

  1. 美团APP中日期选择器的bug复现
  2. AOSP开发环境搭建
  3. 创新电影院与市场呈鲜明对比产业现状
  4. Pacemaker,Corosync和PCS搭建高可用性负载均衡linux 集群(httpd)
  5. 没别的,就聊聊两个华为网络通信平台
  6. 多个ai文件合并成pdf_设计作品集整理必看——在PS与AI中如何快速导出PDF文档
  7. 【解决方案】电梯安全不容忽视 SkeyeVSS电梯视频监控系统安保先行
  8. cad数门窗的lisp_浩辰建筑CAD教程:门窗篇
  9. python循环打印数字三角形_使用for循环打印三角形的星形
  10. Qt for Android设置应用图标及名称