DNS服务器原理

19.1 什么是DNS


主机名自动解析为 IP 就很重要!那就是 DNS。

19.1.1 用网络主机名取得IP的历史渊源

单一档案处理上网的年代: /etc/hosts

利用某些特定的档案将主机名与 IP 作一个对应, 如此一来,我们就可以透过主机名来取得该主机的 IP。 就是/etc/hosts 这个档案的用途了

 

缺憾:

  • ip数量太多时,该档案会大到不像
  • 主机名与IP的对应无法自动于所有计算机内更新

 

导致,客户端计算机每次都得要重新下载一次档案才能顺利联网;

 

分布式,阶层式主机名管理架构:DNS系统

 

DNS(Domain Name System),

我们不需要知道主机的IP,只要知道该主机的名称,就能够轻易的连上该主机了。

  • DNS 利用类似树状目录的架构,将主机名的管理分配在不同层级的 DNS 服务器当中,经由分层管理, 所以每一部 DNS 服务器记忆的信息就不会很多
  • 若有 IP 异动时也相当容易修改!因为你如果已经申请到主机名解析的授权, 那么在你自己的 DNS服务器中,就能够修改全世界都可以查询到的主机名了!而不用透过上层 ISP 的维护呢! 自己动手当然是最快的

 

DNS 与 BIND

DNS 是一种因特网的通讯协议名称, 至于 Bind 则是提供这个 DNS 服务的软件

DNS 有关的 FQDN、 Hostname 与 IP 的查询流程,正解与反解、合法授权的 DNS 服务器之意义,以及 Zone 等等的知识。

完整主机名:Fully Qualified Domain Name(FQDN)

第一个与 DNS 有关的主机名概念,就是『主机名与领域名 (hostname and domainname)』的观念,以及由这两者组成的完整主机名 Fully Qualified Domain Name, FQDN。

DNS 是以树状目录分阶层的方式来处理主机名,那我们知道树状目录中, 那个目录可以记录文件名。领域名底下还可以记录各个主机名, 组合起来才是完整的主机名 (FQDN)

我们知道目录树的最顶层是根目录 (/),那么 DNS 既然也是阶层式的,最顶层是啥呢?每一层的 domain name 与 hostname 又该怎么分?

例子:www.ksu.edu.tw;

在上面的例子当中,由上向下数的第二层里面,那个 .tw 是 domain name ,而 com,edu, gov 则是主机的名称,而在这个主机的名称之管理下,还有其他更小网域的主机,所以在第三层的时候,基本上,那个 edu.tw 就变成了 domain name 了!而昆山科大与成大的 ksu, ncku 则成为了 hostname .

以此类推,最后得到我们的主机那个 www 是主机名,而 domain name 是由ksu.edu.tw 那个名字所决定的!自然,我们的主机就是让管理 ksu.edu.tw 这个domain name 的 DNS 服务器所管理的啰!

注意:

并不是以小数点 (.) 区分 domain name 与 hostname !某些时刻 domain name 所管理的 hostname 会含有小数点。

 

19.1.2  DNS的主机名对应IP的查询流程

简单了解 FQDN 的 domain name 与 hostname 之后,接下来我们要谈一谈这个DNS 的:

(1)阶层架构是怎样?

(2)查询原理是怎样?

总是要先知道架构才能知道如何查询主机名的!所以底下我们先来介绍一下整体的 DNS 阶层架构。

 

 

DNS 的阶层架构与 TLD

上面列子:将最上层到昆山科大 (ksu) 时,之间的各层绘制如下图:

在整个 DNS 系统的最上方一定是 . (小数点) 这个 DNS 服务器 (称为 root),最早以前它底下管理的就只有:

(1)com, edu, gov, mil, org, .net 这种特殊领域

(2)以国家为分类的第二层的主机名了

这两者称为 Top Level Domains (TLDs),顶级域名

 

授权与分层负责

向上层ISP申请域名的授权例如:

台湾地区最上层的领域名是以 .tw 为开头,管理这个领域名的机器 IP 是在台湾,但是 .tw 这部服务器必须向 root (.) 注册领域名查询授权才行

那么每个国家之下记录的主要下层有哪些领域呢?基本上就是原先 root 管理的那六大类。 不过,由于各层 DNS 都能管理自己辖下的主机名或子领域,

因此,我们的 .tw 可以自行规划自己的子领域名喔! 例如目前台湾 ISP 常提供的 .idv.tw 的个人网站就是一例。

每个上一层的 DNS 服务器所记录的信息,其实只有其下一层的主机名而已! 至于再下一层,则直接『授权』给下层的某部主机来管理;

这样设计的好处就是:

每部机器管理的只有下一层的 hostname 对应 IP 而已,所以减少了管理上的困扰!而下层 Client 端如果有问题,只要询问上一层的 DNS server;

通过DNS查询主机名IP的流程

DNS类似树状的主机名管理:

首先,当你在浏览器的网址列输入 http://www.ksu.edu.tw 时,你的计算机就会依据相关设定 (在 Linux 底下就是利用 /etc/resolv.conf 这个档案) 所提供的 DNS的 IP 去进行联机查询了。由于目前最常见的 DNS 服务器就属 Hinet 的 168.95.1.1这个 DNS,所以我们就拿他来做例子 hinet 的这部服务器会这样工作:

1. 收到用户的查询要求,先查看本身有没有纪录,若无则向 . 查询:由于 DNS 是阶层式的架构,每部主机都会管理自己辖下的主机名解译而已。因为 hinet 并没有管理台湾学术网络的权力, 因此就无法直接回报给客户端。此时 168.95.1.1 就会向最顶层,也就是 . (root) 的服务器查询相关 IP 信息。

2. 向最顶层的 . (root) 查询:168.95.1.1 会主动的向 . 询问 www.ksu.edu.tw 在哪里呢?但是由于 . 只记录了 .tw 的信息 (因为台湾只有 .tw 向 . 注册而已),此时 . 会告知『我是不知道这部主机的 IP 啦,不过,你应该向 .tw 去询问才对,我这里不管! 我跟你说 .tw 在哪里吧!』

3. 向第二层的 .tw 服务器查询:168.95.1.1 接着又到 .tw 去查询,而该部机器管理的又仅有 .edu.tw, .com.tw, gov.tw... 那几部主机,经过比对后发现我们要的是 .edu.tw 的网域,所以这个时候 .tw 又告诉 168.95.1.1 说:『你要去管理 .edu.tw 这个网域的主机那里查询,我有他的 IP !』

4. 向第三层的 .edu.tw 服务器查询:同理可证, .edu.tw 只会告诉 168.95.1.1 ,应该要去 .ksu.edu.tw 进行查询,这里只能告知 .ksu.edu.tw 的 IP 而已。

5. 向第四层的 .ksu.edu.tw 服务器查询:等到 168.95.1.1 找到 .ksu.edu.tw 之后, .ksu.edu.tw 说:『没错!这部主机名是我管理的~ 我跟你说他的 IP 是...所以此时 168.95.1.1 就能够查到 www.ksu.edu.tw 的 IP 啰!

6. 记录暂存内存并回报用户:

查到了正确的 IP 后, 168.95.1.1 的 DNS 机器总不会在下次有人查询www.ksu.edu.tw 的时候再跑一次这样的流程吧! 很远很累的!而且也很耗系统的资源与网络的带宽,所以呢, 168.95.1.1 这个 DNS 会很聪明的先记录一份查询的结果在自己的暂存内存当中,以方便响应下一次的相同要求啊! 最后则将结果回报给 client 端!当然啦,那个记忆在 cache 当中的数据,其实是有时间性的,当过了 DNS 设定记忆的时间 (通常可能是 24 小时),那么该记录就会被释放喔!

整个分寸查询的流程就是这样,总是得要先经过 . 根来向下一层进行查询,最终总是能得到答案的。

分层的好处是:

  • 主机名修改的仅需要自己的DNS更动即可,不需要通知其他人。

    • 只要主机名经过上层合法的DNS服务器设定,就可以在Internet上面被查询到,这样维护简单,机动性也很高
  • DNS服务器对主机名解析结果的快取时间
    • 每次查询到的结果都会储存在 DNS 服务器的高速缓存中,以方便若下次有 相同需求的解析时,能够快速的响应。通常是10分钟到三天之内。
  • 可持续向下授权(子领域名授权)
    • 没层只管当前层的子层地址在哪。

命令 dig+ trace ,查看到DNS的搜寻过程!

[[email protected] ~]# dig +trace www.ksu.edu.tw
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>>+trace www.ksu.edu.tw
;; global options: printcmd
. 486278 IN NS a.root-servers.net.
. 486278 IN NS b.root-servers.net.
....(底下省略)....
# 上面的部分在追踪 . 的服务器,可从 a ~ m.root-servers.net.
;; Received 500 bytes from 168.95.1.1#53(168.95.1.1) in 22 ms
tw. 172800 IN NS ns.twnic.net.
tw. 172800 IN NS a.dns.tw.
tw. 172800 IN NS b.dns.tw.
....(底下省略)....
# 上面的部分在追踪 .tw. 的服务器,可从 a ~ h.dns.tw. 包括
ns.twnic.net.
;; Received 474 bytes from 192.33.4.12#53(c.root-servers.net) in 168
ms
edu.tw. 86400 IN NS a.twnic.net.tw.
edu.tw. 86400 IN NS b.twnic.net.tw.
# 追踪 .edu.tw. 的则有 7 部服务器
;; Received 395 bytes from 192.83.166.11#53(ns.twnic.net) in 22 ms
ksu.edu.tw. 86400 IN NS dns2.ksu.edu.tw.
ksu.edu.tw. 86400 IN NS dns3.twaren.net.
ksu.edu.tw. 86400 IN NS dns1.ksu.edu.tw.
;; Received 131 bytes from 192.83.166.9#53(a.twnic.net.tw) in 22 ms
www.ksu.edu.tw. 3600 IN A 120.114.100.101
ksu.edu.tw. 3600 IN NS dns2.ksu.edu.tw.
ksu.edu.tw. 3600 IN NS dns1.ksu.edu.tw.
ksu.edu.tw. 3600 IN NS dns3.twaren.net.
;; Received 147 bytes from 120.114.150.1#53(dns2.ksu.edu.tw) in 14 ms

DNS 端口号:53;

这里,DNS开始以udp传输,若未查到完整信息,则重新以TCP传输;

所以DNS,daemon,会同时启动tcp,udp的port 53,;

19.1.3 合法DNS的关键:申请领域查询授权

与其他服务器不同,DNS服务器的架设有合法不合法之说。

向上层领域注册取得合法的领域查询授权

如果需要架设DNS,而且是可以连上Internet上面的DNS时,就必须要透过上层DNS服务器的授权

所以, 要让你的主机名对应 IP 且让其他计算机都可以查询的到,你有

两种方式:

1. 上层 DNS 授权领域查询权,让你自己设定 DNS 服务器;

2. 直接请上层 DNS 服务器来帮你设定主机名对应!

拥有领域查询权后,所有的主机名信息都以自己为准,与上层无关。

DNS,记录的信息非常的多,重点有两个:

  • 记录服务器所在的NS(NameServer)标志
  • 记录主机名对应的A(Address)标志

我们在网络上面查询到的最终结果,都是查询IP的,因此最终的标志要找到的是A这个记录才对。

注册的.vbird.org 记录在ISP的DNS服务器名为dns.vbird.org,该笔记录其实是NS,并非A。

虽然在 godaddy 服务器内有记录一笔『要查询 .vbird.org 时,请到dns.vbird.org (NS) 去查,这个管理者的 IP 是 140.116...』,

但是这笔记录只是告诉我们要去下一个服务器找, 并不是最终的 A (IP Address) 的答案,所以还得要继续往下找 (随时记得图 19.1-4 的查询流程)。

此时,有几种结果会导致dns.vbird.org的IP找不到,或最终IP与godaddy记录的不同结果:

  • dns.vbird.org 服务器挂点时

    • 如果 dns.vbird.org 这部主机宕机,那么在上图显示『查询』箭头的步骤会被中断,因此就会出现『联机不到dns.vbird.org 的 IP』的结果。
  • dns.vbird.org 服务器内的数据库忘记补上数据时
    • 在自己的服务器数据库中,忘记加上 dns.vbird.org 的记录时,最终的结果还是会显示『找不到该服务器的 IP』
  • dns.vbird.org 服务器内的数据库数据编写不一致时
    • 如果是在鸟哥自己服务器的数据库内的 dns.vbird.org 所记录的 IP 与godaddy 的不同,最终的结果会以鸟哥记录的为准。

总之,在ISP上面填写的主机名只是一个参考用的,最终还是要在你自己服务器当中设定好才行。

由此可见,DNS查询不是简单的从上层获得下层IP,然后一级级的往下查询。DNS肯定有更加健全的查询算法,通过上层设定的参考,最终由本层设定决定。

疑问?????

???????

既然上层仅作参考,实际起作用的是下层自己的设定。那么当上层godaddy设置了dns.vbird.org->NS(140.116.111.12),而本层dns.vbird.org设置了dns.vbird.org->A(150.120.111.12)。那么在从根走到godaddy之后,是如何确定dns.vbird.org,即在godaddy拿到的是假地址,是如何走到dns.vbird.org的。

19.1.4 主机名交由ISP 代管还是自己设定DNS服务器。

需要架设DNS的时机:

  • 主机数量庞大
  • 需要经常修改server名称。

19.1.5 DNS数据库的记录:正解,反解,Zone得意义

  • 从主机名查询到 IP 的流程称为:正解
  • 从 IP 反解析到主机名的流程称为:反解
  • 不管是正解还是反解,每个领域的记录就是一个区域 (zone)

正解的设定权以及DNS正解zone记录的标志

符合上层NDS所给予的领域范围,即可申请正解DNS服务器;

正解zone通常标志:

  • SOA:就是开始验证 (Start of Authority) 的缩写,相关资料本章后续小节说明;
  • NS:就是名称服务器 (NameServer) 的缩写,后面记录的数据是 DNS 服务器的意思;
  • A:就是地址 (Address) 的缩写,后面记录的是 IP 的对应 (最重要);

反解的设定权以及 DNS 反解 zone 记录的标志

能够设定反解的就只有 IP 的拥有人,亦即你的 ISP 才有权力设定反解的。

那你向 ISP 取得的 IP 能不能自己设定反解呢?答案是不行!

除非你取得的是整个 class C 以上等级的 IP 网段,那你的 ISP 才有可能给你 IP 反解授权。

否则,若有反解的需求,就得要向你的直属上层 ISP 申请才行。

反解zone通常标志:

  • SOA:就是开始验证 (Start of Authority) 的缩写,相关资料本章后续小节说明;
  • NS:就是名称服务器 (NameServer) 的缩写,后面记录的数据是 DNS 服务器的意思;
  • PTR:就是指向 (PoinTeR) 的缩写,后面记录的数据就是反解到主机名啰

每部DNS都需要的正解zone:hint

hint:

根目录在哪里的记录;

所以说,一部简单的正解 DNS 服务器,基本上就要有两个 zone 才行,一个是hint ,一个是关于自己领域的正解 zone。

19.1.6 DNS数据库的类型:hint,master/slave架构

hint:.(root)基本数据库类型;

master,slave 是两种基本类型,用来解决DNS服务器主从结构,数据同步问题的。

master

  • 要管理员自己手动去修改与设定;并且重启后才生效;
  • 一般来说,我们说的DNS设定,就是指设定这种数据库的类型
  • 给slave的DNS提供数据库内容

slave

  • 必须与master相互搭配
  • 只支持一主多从
  • 更改master之后,slave自动更新

master/slave的查询优先权?

在 DNS 系统当中,领域名的查询是『先抢先赢』的状态;

Master / Slave 数据的同步化过程

基本上,不论 Master 还是 Slave 的数据库,都会有一个代表该数据库新旧的『序号』,这个序号数值的大小,是会影响是否要更新的动作。

更新的两种方式:

  • master主动告知

    • Master 在修改了数据库内容,并且加大数据库序号后, 重新启动 DNS 服务,那 master 会主动告知 slave 来更新数据库,
  • slave主动提出
    • Slave 会定时的向 Master 察看数据库的序号, 当发现 Master 数据库的序号比 Slave 自己的序号还要大 (代表比较新),那么 Slave 就会开始更新
时间: 2024-12-15 03:00:56

DNS服务器原理的相关文章

Linux环境下DNS服务器原理及主服务器简单配置

1,DNS介绍 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析). 监听的协议端口:UDP/TCP 53 软件实现:bind 2,DNS数状结构: 如下图: 根域:. 一级域如下: 组织域:.com, .org, .net, .mil, .edu, .gov, .info, .cc, .

DNS服务器原理简述

1. TLD:Top Level Domain 顶级域名 组织域:.com, .net, .org, .gov, .edu, .mil 国家域:.iq, .tw, .hk, .jp, .cn, ... 2. 域名分级 根域名: . 顶级域名:.com .edu .gov .int .net .cn .us .jp ........ 二级域名:baidu.com microsoft.com jd.com qq.com aliyun.com edu.cn 三级域名:map.baidu.com nan

加密算法原理及DNS服务原理

1.简述常见加密算法及常见加密算法原理,最好使用图例解说在安全领域,利用密钥加密算法来对通信的过程进行加密是一种常见的安全手段.利用该手段能够保障数据安全通信的三个目标 1.数据的保密性,防止用户的数据被窃取或泄露: 2.保证数据的完整性,防止用户传输的数据被篡改: 3.通信双方的身份确认,确保数据来源与合法的用户: 而常见的密钥加密算法类型大体可以分为三类:对称加密.非对称加密.单向加密. 对称加密 对称加密算法采用单密钥加密,在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加

DNS原理及DNS服务器的建立(主从)

DNS(Domain Name Service)是域名解析服务.由于网络中IP地址众多而很难记住提供服务主机(比如web服务)的IP,所以使用人们更容易记住的字符串名来代替IP,但是主机间通信要依靠IP地址.所以为了解决这种矛盾,我们使用域名解析服务这个中间层.使得主机名和IP能够一一对应起来: 这篇博文我们主要讲解一下以下内容: 1.DNS服务器工作原理. 2.DNS配置文件介绍(重点说一下安全控制选项). 3.正向解析区域文件配置.反向解析区域文件配置. 4.主.从DNS服务器构建. 一.D

DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置

一.DNS简介 1.DNS ? ?DNS是域名系统(Domain Name System)的简称,它是一个将域名和IP相互映射的分布式数据库.有了DNS服务器,我们只需要记录一个网站的域名即可访问,而再也不需要记忆那一串长长的IP地址了.全球有386台根服务器,被编号为A到M共13个标号,编号相同的根服务器使用同一个IP,386台根服务器总共只使用13个IP,因此可以抵抗针对其所进行的分布式拒绝服务攻击(DDoS).中国大陆在北京有两台编号为L的根服务器镜像,编号为F.I.J的各一,共5台镜像,

DNS服务解析,如何用bind构建主从架构的DNS服务器。

DNS(Domain Name System,域名系统) 在互联网上实现FQDN与IP地址的解析,这样避免了人们在访问站点时,记忆长串难懂的ip地址,只需要记忆人们容易理解的域名就行了. FQDN (Fully Qualified Domain Name,完全合格域名) FQDN------------------IP Address 正向解析 IP Address------------FQND 反向解析 简述工作原理: 我们大家都知道,全球一共有13台根节点服务器,当我们的DNS服务器收到一

Linux之DNS服务器搭建及常见DNS攻击和防御

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号53. 主机名到IP地址的映射有两种方式: 1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用: 2)动态映射,建立一套域名解析系统(DNS),只在

DNS服务器搭建

一.DNS工作原理   1.计算机进行域名解析的时候,首先向本地DNS查找是否有地址记录:   2.如果找不到,则由本地DNS向根域"."发出解析请求,   3.从根域一次查找顶级域-->一级域-->二级域-->主机名:有点类似于邮件投递之类:   4.本地DNS经过一系列周折之后最终得到IP地址返回给客户端,并且保存记录一段时间: 二.DNS与bind   早期网络尚未流行的时候,计算机不多   通过/etc/hosts文件来存储主机名与IP对应关系:   随着互联

DNS的原理和解析过程

DNS的解析原理和过程: 在Internet上域名和IP是对应的,DNS解析有两种:一种是正向解析,另外一种是反向解析. 正向解析:正向解析就是将域名转换成对应的 IP地址的过程,它应用于在浏览器地址栏中输入网站域名时的情形. 反向解析:根据IP地址查找对应的注册域名,经常被一些后台程序使用,用户看不到. 另外需要知道的是DNS查询的工作方式: 客户端和浏览器,本地DNS之间的查询方式是递归查询: 本地DNS服务器与根域及其子域之间的查询方式是迭代查询: DNS解析过程: 场景:用户在浏览器输入