Last Updated on

前言

DNS 作为网络基础服务,是每个公司系统运维基础架构中不可或缺的部分,都会有自己公司的内部DNS,内网域名通过内部DNS进行解析访问。

那么要构建公司的内部DNS架构,就首先要了解DNS原理与DNS解析的过程。

正文

DNS服务是什么

首先,DNS服务域名系统服务,是因特网中的一项核心服务,是用于实现域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住机器实际访问的IP地址。通过域名,得到该域名对应的IP地址的过程就叫做域名解析(或主机名解析)。

比如,访问www.amos-x.com 域名,则会通过DNS服务器进行解析,得到对应的IP地址,然后根据IP地址去进行HTTP访问,返回内容,展示在浏览器上。

域名结构与DNS服务器结构

这里以百度的域名作为示例讲解:

www.baidu.com.

完整的域名,后面都是有一个“.”的,但是一般使用中都是默认省略掉了,这是一个完整的域名。通过 "." 来进行分割成三个部分:

  • www: www是 主机名
  • baidu: baidu是 域名
  • com: com是 类型

从后往前,从高层往下层呈一个树状结构,最顶端就是常被忽略的".",代表根服务器,全球根服务器只有固定的13个。根的下一层就是由我们所熟知的.com、.net、.cn等通用域和.cn、.uk等国家域组成,称为顶级域。然后我们在网上注册的域名基本都是二级域名,比如baidu.comamos-x.com等等二级域名,它们基本上是归企业和运维人员管理。接下来便是三级域名,也就是www.baidu.com,www.baidu.com,就是我们平时常见的域名了。


这么多域名,每个域名与IP的对应关系还可以有多条,就会有海量的域名与IP的映射关系,上面说到DNS域名解析服务就是用于解析域名,返回与之对应的IP的服务。海量的数据也无法统一存储解析,于是,DNS服务器的设计如下:

根据域名的层级,也大致分为三次结构:

  • 第一层:根DNS服务器,此服务器只存储顶层域名对应的DNS服务器地址
  • 第二层:顶层域名DNS服务器,根据顶层域名不同,会有很多。且同一个顶层域名也可能存在多个DNS服务器,比如,有100个.com的DNS服务器存储着全世界所有的.com域名
  • 第三层:二级域名DNS服务器,比如:baidu.com里面储存着所有此域名下的三级域名的对应解析记录

这样就一层层涵盖了所有DNS解析记录,形成一个整体的网络基础服务。

DNS解析流程

当我们访问一个域名时,DNS解析过程如下:

  1. 首先客户端位置是一台电脑或手机,在打开浏览器以后,比如输入www.zdns.com的域名。首先会查找自己本地的DNS缓存和hosts记录,如果本地没有记录,则会向本机配置的dns服务器(这一般是本机的网络设置中可以找到),发起解析请求。
  2. 假设DNS服务器找不到结果,则会向根服务器查询,根服务器里面记录的都是各个顶级域所在的服务器的位置,当向根请求www.zdns.com的时候,根服务器就会返回所有.com服务器的位置信息。
  3. DNS服务器拿到.com的权威服务器地址以后,就会寻问.com的权威服务器知不知道www.zdns.cn的位置。这个时候.com权威服务器查找并返回zdns.com服务器的地址。
  4. DNS服务器继续向zdns.com的权威服务器去查询这个地址,由zdns.com的服务器给出了地址:xxx.xxx.xxx.xxx
  5. DNS将此结果,返回给客户端。客户端得到地址后,便可以发起HTTP请求了。

补充:一旦递归服务器拿到解析记录以后,就会在本地进行缓存,如果下次客户端再请求本地的递归域名服务器相同域名的时候,就不会再这样一层一层查了,因为本地服务器里面已经有缓存了,就直接返回缓存里的记录。

DNS服务器的分类

如图,DNS服务器可以被大致分为两类:权威解析服务器递归解析服务器。其中递归解析服务器也叫localDNS,也就是本地dns服务器。比如查看自己电脑的DNS,一般是当地电信或联通的本地DNS服务器,就是一个递归DNS服务器。

平时我们修改DNS,添加DNS记录,都是在网上的域名服务商处进行操作,操作后,便会将数据更新到对应的权限DNS服务器上

可以在你的域名管理页面上,找到你域名(二级域名)的权威DNS服务器

DNS解析记录

明白了DNS解析的过程后,再来看看,一条DNS记录是怎样的,一般域名解析,都是以二级域名作为作为可以进行操作的域名记录。如:amos-x.com。

以阿里云的域名解析为例,一条解析记录,主要有如下几个信息:

  • 主机记录: 也就是自定义的三级及以下域名,如www.amos-x.com那么主机记录就是www
  • 记录类型: 就是这条记录的类型,一般指向IPV4地址,类型则为A记录,其他类型,下面细说。
  • 解析线路: 这个一般由域名服务商提供,可以根据线路解析到不同的IP,比如,国内解析到广州的服务器,国外解析到香港的服务器。类似这样。不同的服务和提供商所支持的线路也不相同。
  • 记录值:也就是根据解析类型,填上对应的结果,比如A记录是解析到IPv4地址,则填入IPv4的IP地址。
  • TTL:解析记录在递归DNS服务器上缓存的保存时间,也是一个域名从修改到更新到全网的最长所需时间。因为缓存失效后,会重新从权威服务器获取最新记录。

DNS记录,有很多不同类型的记录,主要有如下几种,下面列举说一下:

  • A:将域名指向一个IPV4地址
  • CNAME:将域名指向另一个域名
  • AAAA:将域名指向一个IPV6地址
  • NS:将子域名指定其他DNS服务器解析
  • MX:将域名指向邮件服务器地址
  • SRV:记录提供特定的服务的服务器
  • TXT:文本记录
  • CAA:CA证书颁发机构授权校验
  • 显性url:将域名重定向到另外一个地址
  • 隐形url:与显性url类似,但是会隐藏真实目标地址

如上一些解析类型,最常用的就是A记录与CNAME记录。A记录就不说了,CNAME常用于cdn等服务与域名的接入。还有其中NS指定子域名的DNS服务器地址,这个是这个重要的一点,通过这个,可以无限向下扩展域名的层级,可以变成是:xx.xx.xx.xx.amos-x.com这样,当然也可以直接添加这样的记录,但是如果DNS记录过多,想要有区分,就可以善用NS记录实现。

结束

好了,到此,了解了DNS的原理和相关知识,就可以动手,想想怎么搭建自己公司内部的DNS服务环境,来建设内网的DNS基础服务。

后面,有空就会详细探讨一下,给出一个可行方案。