天天动画片 > 八卦谈 > 我在B站学习运维之DNS域名解析服务器基础概念和安装配置(1)

我在B站学习运维之DNS域名解析服务器基础概念和安装配置(1)

八卦谈 佚名 2023-06-12 15:11:13

本章目录:

  • 0x00 前言简述

    • 基础概念

    • 基础术语

    • 记录类型

  • 0x01 DNS服务介绍

    • 原理流程

    • 实验目标

  • 0x02 DNS服务之Bind9

    • Bind9 基础介绍

    • Bind9 安装方式

    • Ubuntu 安装

    • 1) 源码编译安装

    • 2) APT仓库安装

    • CentOS 安装

    • Docker 容器

0x00 前言简述


基础概念

Q: 什么是DNS(Domain Name System)?

A: DNS即域名名称系统(), 它使用层次结构的命名系统形成一个分布式数据库系统, 能够使人更方便的访问互联网
DNS 是互联网的基础设施类的服务、这是一种协议、协议最后是要实现的、协议实现的软件很多( 例如 Bind、CoreDNS)

Tips: DNS 命名用于 Internet 等 TCP/IP 网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS 名称时,该服务可以将此名称解析为与之相关的其他信息,如 IP 地址。

Tips: DNS 采用C/S架构服务器端主要工作在UDP协议端口53,当然也可以在TCP协议端口53之上。
Tips: 应用程序通常将 DNS 解析委派给操作系统的 DNS Resolver 来执行,程序员对它几乎无感知。


Q:什么是域名(Domain Name)?

A:是一串用点分割的字符,是互联网某台或者某组计算机的名称,使用者更好方便访问网页,而不需去记住一长串的IP地址字符,例如 

使用域名好处总结:

  • 1.方便人类记忆

  • 2.更换机器IP地址后不需要改变硬编码在应用的域名,只需要更改解析即可。

  • 2.便于实现负载均衡,例如一个域名可以对应多个IP。

  • 3.便于实现虚拟主机名进行访问同一个地址的多个应用,例如Nginx的代理。

Tips: 域名的购买与使用流程(此处忽略了我大天朝的特殊国情-):

  • 1.你在某域名提供商处购买了一个域名 weiyigeek.top

  • 2.域名提供商向 .top 对应的顶级域名服务器中插入一条以上的 NS 记录,指向它自己的次级 DNS 服务器,如 dns25.hichina.com.

  • 3.阿里云会向 TLD 中插入几条 NS 记录,指向阿里云的次级 DNS 服务器(如 alidns.com - 223.6.6.6)。

  • 4.你在该域名提供商的 DNS 管理界面中添加 A 记录,值为你的服务器 IP。

  • 5.OK 现在 ping 一下 weiyigeek.top,就会发现它已经解析到你自己的服务器了。

Tips: 了解各种域名状态的含义,有助于明白域名安全情况、不能正常使用的原因等,以便及时采取相应措施。

  • 1.新注册的域名可能出现以下状态:

    • .addPeriod : 注册局设置域名新注册期(域名新注册 5 天内会出现的状态,不影响域名使用,5 天后自动解除 - 添加句点)。

    • ·ok : 普通状态(可正常使用。没有需要立即进行的操作,也没有设置任何保护措施。有其他状态时,OK 状态不显示,但并不代表不正常。

  • 2.出于对域名注册信息的保护,域名在进行某些安全锁定后,会出现以下状态:

    • ·clientDeleteProhibited 注册商设置禁止删除(保护域名的一种状态,域名不能被删除)。

    • .serverdeleteProhibited 注册局设置禁止删除(保护域名的一种状态,域名不能被删除)。

    • ·clientUpdateProhibited 注册商设置禁止更新(域名信息,包括注册人/管理联系人/技术联系人/付费联系人/DNS 等不能被修改,但可设置或修改解析记录)。

    • ·serverUpdateProhibited 注册局设置禁止更新(域名信息,包括注册人/管理联系人/技术联系人/付费联系人/DNS 等不能被修改,但可设置或修改解析记录)。

    • ·clientTransferProhibited 注册商设置禁止转移(保护域名的一种状态,域名不能转移注册商)。

    • ·serverTransferProhibited 注册局设置禁止转移(保护域名的一种状态,域名不能转移注册商。有的域名新注册及转移注册商 60 天内会被注册局设置成该状态,60 天后自动解除;有的则为域名涉及仲裁或诉讼案被注册局设置,仲裁或诉讼案结束会被解除)。

  • 3.其他禁止解析、禁止续费的状态:

    • ·pendingVerification 注册信息审核期(该域名注册后未进行实名审核,需尽早在域名付费后 5 天内提交资料审核,5 天后仍未实名审核的,将进入 ServerHold 状态)。

    • ·clientHold 注册商设置暂停解析(处于该状态域名解析暂停,需联系注册商解除该状态)。

    • ·serverHold 注册局设置暂停解析(处于该状态域名解析暂停,.cn 国内中英文域名注册成功后未通过实名审核时多出现该种状态,需在域名有效期内完成实名审核后解除)。

    • ·inactive 非激活状态(注册时未填写域名 DNS,不能进行解析,需在注册商处设置域名 DNS)。

    • ·clientRenewProhibited 注册商或注册局设置禁止续费(域名不能续费,处于该状态通常表示该域名处于仲裁或法院争议期,需联系注册商确认原因)。

    • .serverRenewProhibited

    • ·pendingTransfer 注册局设置转移过程中(域名正在转移注册商过程中)。

    • ·redemptionPeriod 注册局设置赎回期(域名处于赎回期,可联系注册商高价赎回)。

    • ·pendingDelete 注册局设置待删除/赎回期(对于国际域名,该状态表示域名已过赎回期等待被删除,删除后开放重新注册;对于国内域名,该状态表示域名处于赎回期,可联系注册商高价赎回)。

Tips: 当前每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。


Q: 什么是FQDN?

A: FQDN( ) 完全限定域名,它是使用DNS的树状层级结构的完全路径域名来表示一个准确位置对应的主机。

例如域名大致分类:

WeiyiGeek.域名树状结构图

Tips : DNS提供的功能。


Q: 什么是名称解析?

A: 所谓名称解析的过程就是某个应用程序
简单的说: 它可以将一个域名(URL)解析到对应的IP地址上,从而能访问该IP地址下机器提供的相关应用, 所以几乎每个Internet连接都以DNS查找开始。
例如,多数用户喜欢使用友好的名称(如 debian.linuxsir.org)来查找计算机,如网络上的邮件服务器或 Web 服务器。友好名称更容易了解和记住。但是计算机使用数字地址在网络上进行通讯。为更容易地使用网络资源,DNS 等命名系统提供了一种方法,将计算机或服务的用户友好名称映射为数字地址。


基础术语

  • 主DNS服务器(master):就是一台存储着原始资料的DNS服务器。

  • 从DNS服务器(slave):使用自动更新方式从主DNS服务器同步数据的DNS服务器也叫(辅助DNS服务器)。

  • 缓存服务器(cache):不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。

  • 转发器(forward):这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。

  • hint : 根DNS internet服务器集。

  • 递归查询: 以上客户机和本地DNS服务器直接的查询方式

  • 迭代查询: 本地DNS服务器多次请求重复查询的方式

  • WHOIS: 即域名数据库查询, 一个域名的所有者可以通过查询WHOIS数据库而被找到;对于大多数根域名服务器基本的WHOIS由ICANN维护,而WHOIS的细节则由控制那个域的域注册机构维护。对于240多个国家代码顶级域名(ccTLDs),通常由该域名权威注册机构负责维护WHOIS, 例如:

    • 中国互联网络信息中心(China Internet Network Information Center)负责 .CN 域名的WHOIS维护

    • 香港互联网注册管理有限公司(Hong Kong Internet Registration Corporation Limited) 负责 .HK 域名的WHOIS维护

    • 台湾网络信息中心 (Taiwan Network Information Center) 负责 .TW 域名的WHOIS维护。

  • 域名分层结构(四层):

    • 1.根域(Root Zone):所有域名的根。根域名服务器负责解析顶级域名,给出顶级域名的 DNS 服务器地址。它的域名是 "" 空字符串。而它的全限定域名(FQDN)是 . ,因为 FQDN 总是以 . 结尾。
      Tips : 全球有13组DNS根服务器、11台在美国、一组在挪威、一组在日本、DNS服务重兵把守、他的安全性有多重要、一旦被攻击全球都互联网中断、可想而知。


  • 2.顶级域():.com .cn 等国际、国家级的域名, 顶级域名服务器,给出次级域名的 DNS 服务器地址, 每个顶级域名都对应各自的服务器,它们之间是完全独立的。例如 .cn 的域名解析仅由 .cn 顶级域名服务器提供。

  • 3.次级域(Second Level Domains): 个人/企业能够买到的域名,比如 baidu.com, 每个次级域名都有一到多个权威 DNS 服务器,这些 DNS 服务器会以 NS 记录的形式保存在对应的顶级域名(TLD)服务器中。权威域名服务器则负责给出最终的解析结果:等。

  • 4.子域(Sub Domians): *.baidu.com 统统都是 baidu.com 的子域。每一个子域都可以有自己独立的权威 DNS 服务器,这通过在子域中添加 NS 记录实现。

Tips: 目前国际 DNS 系统中已有上千个 TLD,包括中文「.我爱你」甚至藏文域名,详细列表参见 IANA TLD 数据库(http://www.iana.org/domains/root/db) , 除了国际可用的 TLD 还有一类,最常见的比如 ,被广泛用在集群通信中。

  • 公共 DNS 服务器:缓存了大量的 DNS 记录,有效地降低了上游 DNS 服务器的压力,也加快了网络上的 DNS 查询速度。例如Google 的 8.8.8.8,腾讯 的 114.114.114.114, 阿里 的 233.6.6.6。

  • DNS 泛解析通配符 * : DNS 记录允许使用通配符 *,并且该通配符可匹配任意级数的子域!!!比如 *.example.com 就可以匹配所有的一二三四级域名等等,但是无法匹配 example.com 本身!

  • TTL (): 上面讲了公共 DNS 服务器通过缓存技术,降低了上游 DNS 服务器的压力,也加快了网络上的 DNS 查询速度。可缓存总得有个过期时间吧!为了精确地控制 DNS 记录的过期时间,每条 DNS 记录都要求自定义设置一个时间属性——TTL,单位为秒。任何一条 DNS 缓存,在超过过期时间后都必须丢弃!另外在没超时的时候,DNS 缓存也可以被主动或者被动地刷新。

  • 本地 DNS 服务器:它只在当前局域网内有效,企业常用一般通过 DHCP 或者手动配置的方式,使内网的服务器都默认使用局域网 DNS 服务器进行解析,该服务器可以只解析自己的私有 DNS 域,而将其他 DNS 域的解析 forward 到公网 DNS 解析器去。

  • 私有 DNS 域:它会覆盖掉公网的同名域(如果公网上有这个域的话),它也可以使用公网不存在的 TLD,比如 xxx.local xxx.lan 等,例如 vmware vcenter 就默认使用  作为它的 sso (单点登录)系统的域名。kubernetes 默认使用 作为集群内部域名。



记录类型

Q: 什么是RR(Resource Record)资源记录?

答: DNS层级结构中不管是节点还是叶子节点都是资源,对这些资源中的某一个的标识使用一定格式的多字段的一条记录来表示,该条记录就是资源记录RR。

(1) RR(Resource Record)的组成说明:

  • owner name : 所属名称

  • TTL : 缓存RR的秒数(Time-to-live)到达此数后强制刷新

  • CLASS : 表示一个协议或者一族协议(常用IN表示Internet)

  • TYPE : RR 类型

  • rdATA : 记录数据

(2) RR中常见解析记录类型(type):

  • SOA :区域授权起始记录,区域文件第一条记录,而且一个区域文件只能有一条;

  • NS :名称服务器解析记录,就是一个Bind Server,这个Server不能提供这个域名的解析服务,直接返回NS记录,用户用这条记录请求权威的解析Bind Server,返回解析地址

  • MX :邮件服务器解析记录, 配合A记录进行

  • A :由域名解析出对应的IPv4地址就叫A记录,属于最基本的记录

  • AAAA : IPV6(A记录)可以理解成新一代的 A 记录。以后会用的越来越多的。

  • PTR :逆向解析记录(解析IP为域名)基本上只在设置邮件服务器时才会用到,例如

  • CNAME :别名记录(Canonical name) 记录域名与另一个域名的对应关系由别的域名提供A记录的解析,主要用于给域名起别名

  • TXT : 文本记录主要用于验证域名所属权以及证书申请校验时使用。

  • SRV : SRV 记录用于提供服务发现,看名字也能知道它和 SERVICE 有关。主要用于企业域控(AD)、微服务发现(Kubernetes)等


例如 SOA 记录格式解析



示例1: 百度的SOA解析

常用指令说明:



示例2: NS/MX/CNAME/A/PTR各个rdATA格式


0x01 DNS服务介绍


原理流程

描述: DNS服务器采用分布式数据结构保存着海量的名称,那么用户如何快速的在互联网上访问哪台服务器或者哪些服务器就能找到待解析的数据呢?

DNS常规解析请求流程:

描述: 客户机发起对的解析请求流程如下:

  • 1.客户机首先查看查找本地hosts文件,如果有则返回,否则进行下一步

  • 2.客户机查看本地缓存,是否存在本条目的缓存,如果有则直接返回,不再向外发出请求,否则进行下一步,转发。

  • 3.将请求转发本地DNS服务器。

  • 4.查看域名是否本地解析,是则本地解析返回,否则进行下一步。

  • 5.本地DNS服务器首先在缓存中查找,有则返回,无则进行下一步。

  • 6.向全球某一个根域服务器发起DNS请求,根域返回org域的地址列表。

  • 7.使用某一个org域的IP地址,发起DNS请求,org域返回kernel域服务器地址列表。

  • 8.使用某一个kernel域IP地址,发起DNS请求,kernel域返回www.kernel.org主机的IP地址,本地DNS服务收到后,返回给客户机。

WeiyiGeek.DNS访问

DNS域名解析查询方式分类

  • 1.递归查询: 以上客户机和本地DNS服务器直接查询的方式(),称为递归查询。

WeiyiGeek.递归方式查询
  • 2.迭代查询: 本地DNS服务器多次请求重复查询的方式,称为迭代查询。

WeiyiGeek.迭代方式查询


Tips: 总之 DNS 查询进程分两部分进行:

  • 1.名称查询从客户端计算机开始,并传输至解析程序即 DNS 客户端服务程序进行解析。

  • 2.不能在本地解析查询时,可根据需要查询 DNS 服务器来解析名称。



实验目标

描述: 企业内部Linux系统下智能DNS服务搭建系列分为四部:

  • 1.Bind9服务篇: Bind服务基础安装与DNS解析记录及其简单使用;

  • 2.Bind9负载均衡篇 : DNS的递归迭代查询和子域授权, DNS转发的实现过程和配置以及DNS主从域传输

  • 3.Bind9智能DNS篇 : 介绍了DNS的区域传输数据加密及相关配置;

  • 4.Bind9企业内部DNS搭建实践篇


0x02 DNS服务之Bind9

Bind9 基础介绍

Bind9 项目官网: https://www.isc.org/bind/

Q: 什么是Bind9?

答: 1984年,加州大学伯克利分校的几个学生完成了Unix名称服务的实现,起名叫做,目前,它是互联网上使用最为广泛的DNS服务软件。
BIND9 是开源的、多功能、经典的、完整的名称服务器软件; BIND9 已发展成为一个非常灵活,功能齐全的DNS系统。其根据MPL 2.0许可获得许可, 用户可以自由地向BIND 9添加功能;


Q: 为什么要使用BIND 9?

答:无论您的应用程序是什么,BIND 9可能都具有必需的功能。作为第一个最古老最常用的解决方案,与其他任何系统相比,已经有更多熟悉BIND 9的网络工程师。
从发布(由DNSSEC签名)的DNS根区域和许多顶级域到发布具有许多小区域的非常大的区域文件的主机提供商,以及具有内部(私有)和外部区域的企业的所有应用程序,BIND均可成功用于所有应用程序中到具有大型解析器场的服务提供商。


Q: Bind9 软件包包括以下三个部分?

1.DNS服务器: 它是一个叫做named的程序代表的简写, 它根据DNS协议标准的规定响应收到的查询, 默认Bind的配置文件为,在每一次named启动与挂起时都会被读取。。   
2.DNS解析库(resolver library) : 一个解析器等于一个程序,通过发送请求到合适的服务器并且对服务器的响应做出合适的回应, 来解析对一个域名的查询。一个解析库是程序组件的集合可以在开发其它程序时使用,为这些程序提供域名解析的功能。
3.软件测试工具 : 例如 dig、host 等DNS测试软件;

Q: Bind9 版本说明?

BIND 的当前代码库为 BIND9 ,当前Current-Stable为9.16.9;
BIND 稳定版,开发版,扩展支持(ESV)和订阅(支持的预览版标记为-S)。

Tips: bind服务需要开放的端口和说明():

  • UDP 53 port 用于常规解析;

  • TCP 53 port 用于bind同步数据等作用;

  • TCP 953 port 用于IPv6解析;



Bind9 安装方式

描述: 安装Bind服务软件的几种方式说明


Tips : 但是在生产环境中您很可能会有其他限制,包括:

  • 已经安装并正在运行BIND版本-在准备好之前,您不希望覆盖它。

  • 在升级后出现意外情况时,通常希望保留选择切换回以前版本的选项。

  • 您可能需要在另一台计算机上构建BIND,因为您的生产环境未安装编译器。

  • 您可能正在集中构建BIND,以将其分发到许多分散的生产机器。

Tips : 编译安装 bind9 有一个麻烦之处(), 所有的配置文件都得自己去建立比如/var/named/这个目录、编译安装时连这个目录都不会存在、得自己去创建这个目录、里面的各种配置文件、区域文件、像根的、甚至连
service启动脚本都没、所以不到万不得以最好别去编译它,所以建议采用操作系统中软件管理包进行自动安装;



Ubuntu 安装

安装环境:

Description: Ubuntu 20.04.1 LTS 

Linux ubuntu 5.4.0-26-generic 30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

安装帮助: https://kb.isc.org/docs/aa-00768



1) 源码编译安装

  • Step 1.默认绑定构建和安装


  • Step 2.bind源码下载和编译


  • Step 3.运行Bind用户以及组创建

  • Step 4.Bind软件相关的目录以及文件的配置

 

PS : 如果上述是多个网段的反向解析这里就需要定义多个反向解析区域。

  • Step 4.将您的二进制文件作为递归服务器进行测试以及运行后台守护程序


  • Step 5.权威解析配置


  • Step 6.修改DNS相关配置文件的属主属组和权限

  • Step 7.检查主配置文件和区域数据文件有没有语法错误

  • Step 8.最后检查守护程序是否正在响应:


2) APT仓库安装


Tips : 至此安装告一段落后面企业内部DNS服务搭建时再进行详细讲解;


(3) 脚本附录
systemd 服务:


描述:因为是一个服务、所以我们要为他提供一个服务脚本、以后可以利用脚本启动、编辑

操作流程:


(3) 入坑解决

  • 问题1.error: Python >= 2.7 or >= 3.2 and the PLY package are required for dnssec-keymgr and other Python-based tools.


  • 问题2.error: OpenSSL/LibreSSL not found


  • 问题3.启动DNS由于权限问题导致监听错误



CentOS 安装

环境安装说明:


bind版本: bind-9.10.5-P3.tar.gz : http://www.isc.org/downloads/bind/

安装流程:


基于系统软件管理包进行安装使用


Docker 容器

基础环境准备:

  • 方式1:internetsystemsconsortium/bind9:9.16


  • 方式2: UI DNS 管理界面


WEB管理使用浏览器访问下面地址进行远程管理:, 默认登陆账号root,密码password

WeiyiGeek.Webmin

Tips: 小型企业中此种方式管理方便十分推荐。

    如果你觉得这个专栏还不错的,请给这篇专栏点个赞、投个币、收个藏、关个注,这将对我有很大帮助!     

    欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】

更多文章来源: https://weiyigeek.top 【WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少】



本文标题:我在B站学习运维之DNS域名解析服务器基础概念和安装配置(1) - 八卦谈
本文地址:www.ttdhp.com/article/33707.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们