3-9-域名管理系统之DNS

为什么学DNS

一、为什么要学DNS

  1. 互联网通信基础
    • DNS(Domain Name System)是互联网的核心基础设施之一。在网络通信中,我们通常使用域名(如www.example.com)来访问网站,而不是直接使用IP地址。这是因为域名更容易被人类记忆。DNS的作用就是将域名解析为对应的IP地址,使得计算机能够准确地找到服务器并建立通信连接。例如,当你在浏览器中输入“www.baidu.com”时,DNS服务器会将这个域名转换为百度服务器的IP地址,这样你的浏览器才能向正确的服务器请求网页内容。如果没有DNS,用户需要记住每个网站的IP地址,这对于普通用户来说几乎是不可能完成的任务,而且也非常不便于网络的管理和使用。
  2. 网络故障排除和管理
    • 对于网络管理员来说,了解DNS是至关重要的。许多网络故障都与DNS有关。例如,当用户无法访问某个网站时,可能是DNS解析出现了问题。通过掌握DNS知识,可以快速判断是域名解析的问题还是服务器本身的问题。同时,在配置企业内部网络、搭建服务器环境等场景中,正确地配置DNS可以确保内部网络的稳定运行,方便对网络资源进行管理和分配。
  3. 网络安全防护
    • DNS也是网络安全的重要环节。攻击者可能会利用DNS的漏洞进行DNS劫持、缓存投毒等攻击。学习DNS可以帮助我们理解这些攻击的原理,从而采取相应的安全措施,如使用DNSSEC(Domain Name System Security Extensions)来确保DNS数据的完整性和真实性,保护网络免受恶意攻击。

二、DNS是什么

  1. 基本定义

    • DNS是一个分布式数据库系统,用于将域名(如www.google.com)转换为IP地址(如172.217.160.78)。它就像是互联网的电话簿,域名是“姓名”,IP地址是“电话号码”。这个系统由多个DNS服务器组成,这些服务器在全球范围内协同工作。

    • ``` nameserver 114.114.114.114 nameserver 114.114.115.115

      https://www.alidns.com/
      IPv4地址:223.5.5.5, 223.6.6.6 nameserver 223.5.5.5 nameserver 223.6.6.6 https://www.114dns.com/

      客户端对dns服务器的实际使用过程 root@yc-ubuntu-24 ~# nslookup yuchaoit.cn Server: 223.5.5.5 Address: 223.5.5.5#53

      Non-authoritative answer: Name: yuchaoit.cn Address: 101.126.78.228

 root@yc-ubuntu-24 ~# cat /etc/resolv.conf
 nameserver 223.5.5.5
 nameserver  223.6.6.6



 ```
    1. 工作原理
  • 当用户在浏览器中输入一个域名时,浏览器首先会向本地DNS服务器发送一个查询请求。本地DNS服务器通常由互联网服务提供商(ISP)提供。如果本地DNS服务器的缓存中有该域名对应的IP地址,它会直接返回这个IP地址给浏览器。如果本地DNS服务器没有缓存该记录,它会向根DNS服务器发送查询请求。根DNS服务器知道顶级域名(如.com、.org、.net等)服务器的地址,它会告诉本地DNS服务器应该向哪个顶级域名服务器查询。然后本地DNS服务器向顶级域名服务器发送请求,顶级域名服务器会告诉它二级域名服务器的地址,如此逐级查询,直到找到包含该域名和IP地址对应关系的权威DNS服务器。权威DNS服务器会将IP地址返回给本地DNS服务器,本地DNS服务器将这个IP地址缓存起来,并返回给浏览器。

    1. DNS记录类型
  • A记录(Address Record):这是最常见的DNS记录类型,用于将域名映射到IPv4地址。例如,一个域名“example.com”的A记录可能是“192.168.1.1”,这就表示当解析“example.com”这个域名时,返回的IP地址是192.168.1.1。
  • AAAA记录(IPv6 Address Record):随着IPv6的逐渐普及,AAAA记录用于将域名映射到IPv6地址。
  • CNAME记录(Canonical Name Record):CNAME记录是别名记录。它允许将一个域名指向另一个域名的规范名称。比如,“www.example.com”可以是“example.com”的一个别名,通过CNAME记录来实现这种关联。
  • MX记录(Mail Exchanger Record):用于指定负责接收邮件的邮件服务器的域名。当发送电子邮件时,邮件系统会根据目标域名的MX记录来找到对应的邮件服务器。

三、怎么学DNS,跟着于超老师课程学,最nice,666

  1. 理论学习
    • 阅读专业书籍:有许多关于网络基础知识和DNS的书籍,如《TCP/IP详解》,这本书详细地介绍了网络协议栈,包括DNS协议的细节,如DNS消息格式、查询和响应的过程等。通过阅读这些书籍,可以深入了解DNS的理论基础。
    • 在线课程学习:许多在线学习平台提供网络相关的课程,其中会涉及DNS的内容。例如,Coursera上的“计算机网络基础”课程,会从网络体系结构的角度讲解DNS的作用和工作原理。在学习过程中,可以做好笔记,记录关键概念,如DNS查询的不同类型(递归查询和迭代查询)以及它们在不同场景下的应用。
  2. 实践操作
    • 搭建本地DNS服务器:可以使用软件如BIND(Berkeley Internet Name Domain)来搭建自己的本地DNS服务器。通过实际配置DNS服务器,能够更好地理解DNS记录的设置和管理。例如,在本地网络环境中,设置A记录、CNAME记录等,然后通过修改本地计算机的DNS服务器设置为自己搭建的DNS服务器,来测试域名解析是否成功。
    • 使用网络工具进行测试:有一些工具可以帮助学习DNS,如nslookup和dig。nslookup是一个命令行工具,用于查询DNS记录。例如,在命令提示符或终端中输入“nslookup www.example.com”,可以查看该域名对应的IP地址以及其他相关的DNS信息。dig工具则提供了更详细的DNS查询功能,它可以显示DNS查询的详细过程,包括查询的服务器、返回的响应时间等信息,通过使用这些工具可以加深对DNS解析过程的理解。
  3. 网络环境观察与分析
    • 在实际的网络环境中观察DNS的运行情况。例如,在企业网络中,观察不同部门的计算机如何通过DNS服务器访问内部和外部网络资源。当网络出现故障时,尝试从DNS角度进行分析,判断是DNS服务器故障、网络连接问题还是DNS记录错误等原因导致的故障,通过这种方式可以不断积累实践经验,加深对DNS的理解。

基础知识

我相信有部分同学肯定碰到过这样的情况,那就是QQ明明上的去,而网页打不开,通常这个情况你去搜索解决方法,大家就会告诉你改DNS。

还有一些人办理宽带的时候,有些人会提到这个宽带有DNS劫持的情况,不要用这家的宽带,包括买路由器的时候也有人会提到DNS劫持,这里的DNS劫持你知道是什么意思吗?今天这个文章我们就来详细解读一下什么是DNS,DNS劫持是什么。

那么今天我们就来学习DNS,这里我们还得回顾下什么是IP。

image-20220218204554523

IP地址

在网络不发达的时候,电脑数据是独立不共享的,两台机器传输数据可以通过数据线传输。

image-20220218201836461

如果是三台,或者更多的机器,要怎么插网线?

image-20220218201904761

那现在满世界的N台电脑,怎么进行数据交互呢,你怎么看到淘宝网的商品呢。

所有的机器都能够接入互联网,通过互联网互相转发数据。

image-20220218202010121

那这里就要明确,每台机器的地址,否则数据发给别人可咋办,为了准确发送数据,就要给每台电脑添加门牌号与地址信息。

因此IP地址,就是用于标记机器在网络中的地址信息,保证数据不会发错给别的人。

比如向192.168.1.100机器发数据,肯定不会发送到192.168.1.105上

公网ip与局域网ip

NAT

  1. 定义
    • 公网IP(Public IP Address):由互联网服务提供商(ISP)分配给用户或组织的全球唯一的IP地址。它用于在互联网上标识设备,就像家庭住址一样,通过这个地址,互联网上的其他设备可以找到并与之通信。例如,当你在互联网上搭建一个网站服务器,外部用户要访问这个网站,就需要通过这个服务器的公网IP地址来进行访问。公网IP地址是全球统一分配和管理的,主要由互联网名称与数字地址分配机构(ICANN)负责协调管理。
    • 局域网IP(Local Area Network IP,也称为私有IP):在一个局域网(如家庭网络、企业内部网络)内部使用的IP地址。它用于在局域网内部标识设备,使局域网内的设备之间能够相互通信。常见的私有IP地址范围有:10.0.0.0 - 10.255.255.255、172.16.0.0 - 172.31.255.255、192.168.0.0 - 192.168.255.255。这些地址是专门为局域网预留的,不会在互联网上直接用于通信。例如,在家庭局域网中,你的电脑、手机、智能电视等设备通过路由器连接,它们在局域网内使用的就是私有IP地址,如192.168.1.100、192.168.1.101等。
  2. 功能和用途
    • 公网IP
      • 互联网访问:使设备能够访问互联网上的各种资源,如网站、云服务等。当设备发送请求(如请求网页内容)时,数据包中的源IP地址就是该设备的公网IP地址,互联网上的服务器根据这个地址将响应数据发送回该设备。
      • 服务器搭建:如果要在互联网上提供服务(如Web服务、邮件服务等),需要有公网IP地址。这样,外部用户才能通过公网IP地址找到服务器并使用服务。例如,一个公司要搭建一个对外的企业网站,就需要将服务器的公网IP地址与域名进行绑定,以便用户通过域名访问网站。
    • 局域网IP
      • 内部通信:在局域网内部,设备之间可以通过局域网IP地址进行通信。例如,在办公室局域网中,打印机可以通过局域网IP地址与计算机相连,计算机可以将打印任务发送到打印机的局域网IP地址,实现打印功能。
      • 资源共享:方便局域网内的设备共享文件、文件夹等资源。例如,在家庭网络中,通过设置共享文件夹,家庭成员可以通过其他设备的局域网IP地址访问这些共享资源。
  3. 地址分配和管理
    • 公网IP:由ISP根据用户的需求和网络接入方式进行分配。一般来说,对于家庭宽带用户,ISP会通过动态分配的方式提供公网IP地址,这意味着每次用户重新连接网络时,可能会获得不同的公网IP地址。而对于企业等需要固定公网IP地址的用户,ISP可以提供静态公网IP地址,这样企业的服务器等设备的IP地址就不会经常变化,方便外部用户稳定地访问。
    • 局域网IP:在局域网内部,通常由路由器通过动态主机配置协议(DHCP)来分配。当设备连接到局域网时,路由器会自动为设备分配一个局域网IP地址。路由器维护着一个IP地址池,按照一定的规则(如先到先得)分配IP地址。用户也可以在路由器的管理界面中手动设置设备的局域网IP地址,但需要注意避免IP地址冲突。
  4. 网络安全方面的区别
    • 公网IP:由于公网IP直接暴露在互联网上,更容易受到来自互联网的攻击。黑客可以通过扫描公网IP地址来寻找网络服务的漏洞。因此,对于有公网IP的设备(如服务器),需要采取更严格的安全措施,如配置防火墙、入侵检测系统等,以防止未经授权的访问和攻击。
    • 局域网IP:相对来说,局域网IP在一定程度上受到路由器的保护。因为局域网内部的设备通过路由器连接到互联网,路由器可以起到隔离和过滤外部网络请求的作用。不过,如果局域网内的某个设备被黑客入侵,攻击者也可能利用这个设备作为跳板,攻击局域网内的其他设备。

局域网

局域网的ip好比是某一个小区的门牌号,用于某一个群体内部交互数据使用的ip地址,离开这个群体,也就失效了。


image-20220218202805254

公网

  • 公网ip,例如,123.206.16.61、123.206.16.62
  • 局域网ip,例如192.168.10.11,例如192.168.5.44

image-20220218203146211

  • 如果大楼A公司内部员工要发送数据资料,192.168.10.12只需发给192.168.10.11即可
  • 如果大楼A公司某一个机器,要给大楼B公司的一个机器发数据,就得

image-20220218203356096

什么是DNS

网页浏览的原理

大家日常上网的时候,打开的网页本质上就是你从对方服务器上获取的文件,比如说你现在正在看的这篇文章,就存储在在一台服务器上,你通过浏览器,获取到了这些数据,再把他们显示到屏幕上。

浏览网页的本质,就是下载文件,并将下载下来的网页文件变成你所能看到的图像。网页文件一般是.html结尾的,不相信的话你可以用电脑浏览器,随便打开一个网址,右键空白处,网页另存为,然后你就会发现你存储下来了一个.html结尾的网页文件,这时候你就算断网,双击这个网页文件你依旧可以用浏览器浏览,因为这个html文件被你保存到电脑上了。

所以浏览网页的原理就是,在互联网上找到了对方的电脑,然后从对方的电脑里拷贝出来html网页文件到你的电脑上,并将其转化成了文字和图片显示到显示器或手机上。

image-20220218203901457

问题是,我们是怎么访问的这些网站?

  • 直接访问该机器的IP地址?
  • 访问域名

域名与IP的关系

既然你要浏览网页需要在整个互联网上找到对方的电脑,那你就需要输入对方的IP才可以访问

比如大家可以在浏览器里输入这个IP地址123.206.16.61你们可以看看打开的是不是超哥的网站。

是不是很有意思,你靠着IP地址可以访问网站。

你也可以输入https://yuchaoit.cn/也可以访问到超哥的网站,这是什么原理呢?

域名诞生了

https://console.volcengine.com/domain-service/search?from=volc_developer_7316456993978974258

https://developer.volcengine.com/articles/7221517757890691131

https://console.volcengine.com/domain-service/domain

在早期的时候,上网就是这么麻烦,你想要访问对方的网站,你必须要知道对方的IP,然后在你的浏览器里输入IP地址,然后就可以访问了,但是IP地址是4组数字,记IP地址的难度不亚于背一个陌生人的手机号,于是乎,我们用一串英文字母来代替IP地址,这就是网站域名。

image-20220218204258808

域名,说白了就是网站名,专业的说法是电脑记录的IP地址,被翻译成了另外一种人类方便记录的语言。

对于网民来说,域名就是访问网站的一个地址。但对于企业来说,这就是门面,其地位等同于商标。

尤其是线上生意的需求越来越来大的疫情后时代,域名的重要性直接捆绑了网站的重要性。

美图秀秀的董事长蔡文胜就是通过域名投资获得了创业的第一桶金,http://qiyi.com(爱奇艺)、http://tudou.com(土豆)、http://baofeng.com(暴风影音)等域名都是出自他手转卖。

image-20220218204904432

域名的重要性

域名决定了用户搜索的精准性,比如www.taobao.com、www.jd.com是非常容易记忆的,用户也很容易搜索,就获得了更精准的访问率,直接提高企业产品售卖成功几率。这就是为什么京东一开始叫做360buy.com,后来改为了jd.com。

以上都是从企业角度,来体现一个域名的重要性。

从小的来说,域名能够让用户轻松、精准的访问到一台机器。

例如超哥的网站域名就是https://yuchaoit.cn/,对应的ip地址是123.206.16.61,ip很难记,域名可以自定义很好记。

域名怎么和IP对应的

但是这里就有一个问题了,你输入的是域名,你的电脑该怎么将他变成IP地址呢?就比如你输入是https://yuchaoit.cn/,为什么你的电脑知道对方的IP是123.206.16.61呢?

hosts文件

这个东西就是hosts文件,hosts文件就在你的C:\windows\system32\drivers\etc文件夹下,linux就是/etc/hosts

他相当于电脑的电话本,他记录着每一个域名对应的IP地址,当你输入域名而不是IP的时候,他就会在这个电话本里找到对应的域名,然后把他转化成IP地址。

image-20220218210708473

来玩一玩hosts文件

比如chaoge666.cn这个域名是不存在的。

image-20220218211526906

192.168.0.123这是你本地一个linux机器,是可以访问的。

image-20220218211554589

如何将这个域名和这个IP对应起来,做一个解析关系?

修改hosts文件即可,根据你自己的系统平台修改。

192.168.0.123  chaoge666.cn

image-20220218211704802

ping检测域名解析。

image-20220218211725151

关于域名和IP解析关系。

image-20220218211940955

DNS解析服务器

  1. 定义

    • DNS解析服务器是一种专门用于处理域名系统(DNS)解析请求的服务器。它的主要功能是将用户输入的域名(如www.example.com)转换为对应的IP地址(如192.168.1.1),使得计算机能够在网络中找到目标服务器并建立通信。就像是互联网世界的“翻译官”,把人类容易记忆的域名“翻译”成计算机能够理解的IP地址。
  2. 类型

    • 根DNS服务器:是DNS体系中的顶层服务器。全球共有13台根DNS服务器(标号从A - M),这些服务器的主要职责是提供顶级域名(如.com、.org、.net等)服务器的IP地址信息。当本地DNS服务器无法在缓存中找到域名对应的IP地址时,它首先会向根DNS服务器发起查询,根DNS服务器会引导本地DNS服务器去查询正确的顶级域名服务器。不过,根DNS服务器并不直接参与域名到IP地址的具体解析过程。
    • 顶级域名(TLD)DNS服务器:负责管理顶级域名相关的解析工作。例如,.com顶级域名服务器负责处理所有以.com结尾的域名的部分解析工作。它会根据域名中的二级域名部分,告知本地DNS服务器应该去查询哪一个二级域名服务器。不同的顶级域名(如国家顶级域名.cn、通用顶级域名.edu等)都有对应的DNS服务器来管理其域名解析事务。
    • 权威DNS服务器:这是真正存储域名和IP地址映射关系的服务器。对于一个特定的域名,如example.com,其权威DNS服务器保存着该域名对应的IP地址记录(包括A记录、AAAA记录、CNAME记录等)。当本地DNS服务器通过根DNS服务器和顶级域名服务器的引导,最终查询到权威DNS服务器时,权威DNS服务器会把域名对应的IP地址返回给本地DNS服务器,完成域名解析的最后一步。
    • 本地DNS服务器:通常由互联网服务提供商(ISP)提供,是离用户最近的DNS服务器。它会首先接收用户设备(如计算机、手机等)发送的域名解析请求。如果本地DNS服务器的缓存中有该域名对应的IP地址,它会直接返回给用户设备,从而加快解析速度。如果没有,它会按照DNS解析的流程,依次向根DNS服务器、顶级域名服务器和权威DNS服务器发起查询,直到获取到域名对应的IP地址,并将其缓存起来,以备后续相同域名的查询使用。
  3. 工作原理

    • 当用户在浏览器或其他网络应用中输入一个域名时,设备会向本地DNS服务器发送一个DNS解析请求。本地DNS服务器首先检查自己的缓存中是否有该域名对应的IP地址。如果有,就直接将IP地址返回给用户设备。
    • 如果本地DNS服务器的缓存中没有该域名对应的IP地址,它会向根DNS服务器发送一个查询请求。根DNS服务器收到请求后,会根据域名的顶级域名部分(如.com、.org等),返回对应的顶级域名服务器的IP地址给本地DNS服务器。
    • 本地DNS服务器接着向顶级域名服务器发送查询请求。顶级域名服务器根据域名中的二级域名部分等信息,返回相关的二级域名服务器(如果有)或权威DNS服务器的IP地址给本地DNS服务器。
    • 本地DNS服务器最后向权威DNS服务器发送查询请求。权威DNS服务器保存着域名和IP地址的真实映射关系,它会将域名对应的IP地址返回给本地DNS服务器。本地DNS服务器收到IP地址后,会将其缓存起来,然后将IP地址返回给用户设备,完成整个DNS解析过程。
  4. 配置和管理

    • 配置文件修改:对于一些DNS解析服务器软件(如BIND),可以通过修改配置文件来设置服务器的参数。例如,在BIND的配置文件中,可以指定域名和IP地址的映射关系(通过A记录、AAAA记录等),还可以设置服务器的监听端口、缓存策略等。管理员需要熟悉这些配置文件的语法和参数含义,才能正确地配置DNS解析服务器。
    • 缓存管理:缓存是DNS解析服务器提高性能的重要手段。合理地管理缓存可以加快域名解析速度,同时避免缓存过期或错误数据导致的解析问题。管理员可以设置缓存的有效期(TTL,Time - To - Live),定期清理缓存中的过期记录,并且可以根据服务器的负载和网络流量情况,调整缓存的大小。
    • 安全管理:DNS解析服务器面临多种安全威胁,如DNS缓存投毒、DNS劫持等。为了保障服务器的安全,需要采取多种安全措施。例如,使用DNSSEC(Domain Name System Security Extensions)技术来确保DNS数据的完整性和真实性,通过防火墙限制访问服务器的IP地址范围,定期更新服务器软件和操作系统补丁,以防止安全漏洞被利用。

但是这样也有问题,那就是Hosts文件是有限的,就和你不可能拥有这个世界上所有人的电话号码一样。

既然我们自己不可能拥有全世界所有人的电话号码,但是我们可以将收集电话号码这个任务交给一个专门来干这个活的人,然后大家想要问电话的时候去他那查一下就可以了。

这就是DNS服务器,DNS服务器有着相当全的域名和IP,当你输入一串网站的时候,这串网站并不会直接访问,而是先将这个网站发送给DNS服务器,DNS服务器帮你把这串网站变成了IP地址,然后返回给你的电脑,你再访问这个IP地址,这样就解决了IP难记,而域名不能直接访问的问题了。

image-20220218212154087

DNS劫持

image-20220218212413252

正确的DNS会将域名、正确的解析到正确的IP地址,如www.yuchaoit.cn解析到123.206.16.61。

但是如果DNS有了问题,将你的域名解析到另一个人的IP地址,让你直接打开看到的不是超哥的学习网址,而是一个澳门xx,xx美女,在线发牌,,这。。。。

因此我们得给服务器、或者我们本地的电脑,设置一个解析速度很快的、绿色的、安全的DNS服务器。

公共DNS服务器

腾讯、119.29.29.29、https://www.dnspod.cn/Products/Public.DNS

阿里云、IPv4 DNS 地址:223.5.5.5 / 223.6.6.6、https://alidns.com/

百度、IPv4 DNS 地址:180.76.76.76 、https://dudns.baidu.com/support/localdns/Address/index.html

114、IPv4 DNS 地址:114.114.114.114 / 114.114.115.115、https://www.114dns.com/

  1. 定义和作用

    • 公共DNS服务器是由互联网服务提供商(ISP)以外的机构或组织提供的DNS解析服务。这些服务器向广大用户开放,用户可以在自己的设备(如电脑、手机等)上手动配置使用公共DNS服务器来进行域名解析,而不是使用由ISP默认提供的本地DNS服务器。其主要作用是提供更稳定、快速和安全的域名解析服务,同时也为用户提供了更多的选择。例如,当用户对自己ISP提供的本地DNS服务的速度或准确性不满意时,可以切换到公共DNS服务器。
  2. 常见的公共DNS服务器

    • 谷歌公共DNS(8.8.8.8和8.8.4.4)
      • 这是谷歌提供的公共DNS服务。8.8.8.8和8.8.4.4这两个IP地址广为人知。谷歌利用其强大的全球数据中心网络和先进的技术来维护这些DNS服务器,能够提供高效、快速的域名解析服务。其服务器分布在全球多个地区,可以有效地减少解析延迟。此外,谷歌也在不断加强这些DNS服务器的安全性能,以应对诸如DNS劫持和缓存投毒等威胁。
    • Cloudflare DNS(1.1.1.1和1.1.1.2)
      • Cloudflare是一家知名的网络安全和性能优化公司,其提供的DNS服务具有高速和高安全性的特点。1.1.1.1和1.1.1.2这组IP地址的DNS服务器采用了先进的隐私保护技术,并且通过优化网络架构和算法,能够快速地将域名解析为IP地址。Cloudflare还注重用户数据的保护,承诺不会出售用户的DNS查询数据。
    • OpenDNS(208.67.222.222和208.67.220.220)
      • OpenDNS是一家专业提供DNS服务的公司,其提供的公共DNS服务除了基本的域名解析功能外,还具有一些额外的特色功能。例如,它可以提供内容过滤服务,帮助用户过滤掉恶意网站、成人网站等不良内容。其服务器在全球范围内也有广泛的部署,能够为用户提供较好的解析性能。
  3. 优势

    • 速度和性能
      • 许多公共DNS服务器拥有广泛的服务器网络分布,能够减少解析请求的延迟。例如,谷歌公共DNS和Cloudflare DNS在全球各地都有数据中心,当用户请求域名解析时,可以选择距离用户较近的服务器进行处理,从而更快地返回解析结果。相比之下,一些ISP提供的本地DNS服务器可能由于资源有限或网络架构问题,导致解析速度较慢。
    • 安全和隐私
      • 公共DNS服务器通常会采取更严格的安全措施来防止DNS劫持和缓存投毒等安全问题。例如,使用DNSSEC(Domain Name System Security Extensions)技术来验证DNS数据的完整性和真实性。在隐私方面,部分公共DNS服务器(如Cloudflare DNS)有更好的隐私政策,不会随意收集和出售用户的DNS查询数据,为用户提供更安全的网络环境。
    • 稳定性和可靠性
      • 由于公共DNS服务器是由专业机构维护,这些机构往往有更强大的技术和资源来确保服务器的稳定运行。它们会有备份系统和冗余机制,以应对服务器故障或网络拥塞等情况。例如,在遇到大规模的DDoS攻击时,这些服务器能够通过自身的防护机制来维持正常的域名解析服务,而一些小型的ISP提供的本地DNS服务器可能在类似情况下出现服务中断的情况。
  4. 使用方法和注意事项

    • 使用方法
      • 在计算机上(以Windows为例),可以通过以下步骤设置公共DNS服务器:打开“控制面板”,选择“网络和共享中心”,点击“更改适配器设置”,右键单击正在使用的网络连接(如以太网或Wi - Fi),选择“属性”,在弹出的对话框中选择“Internet协议版本4(TCP/IPv4)”,点击“属性”,然后在“使用下面的DNS服务器地址”中输入公共DNS服务器的IP地址(如1.1.1.1),点击“确定”即可。在手机上(以安卓为例),可以在Wi - Fi设置中找到“高级选项”,在DNS设置中手动输入公共DNS服务器的IP地址。
    • 注意事项
      • 虽然公共DNS服务器有很多优势,但也可能存在一些问题。首先,在切换到公共DNS服务器后,可能会与某些特定的网络服务或网站出现兼容性问题。这是因为一些网站或服务可能依赖于ISP提供的本地DNS服务器的特定配置。其次,不同的公共DNS服务器可能有不同的内容过滤政策。例如,OpenDNS提供内容过滤功能,可能会过滤掉一些用户认为正常的网站内容,所以用户在选择公共DNS服务器时需要了解其功能和政策是否符合自己的需求。

私有DNS服务器

我们除了可以使用别人搭建好的DNS服务器,也就是说,你用的IP、域名,都是在互联中注册过的,是交了钱的。

那企业内部,或者我们个人的服务器环境,也需要用到大量的域名怎么办?

不能全部去买吧,自己搭建DNS域名解析服务不就完事了?

DNS域名解析服务

相较于由数字构成的 IP 地址,域名更容易被理解和记忆,所以我们通常更习惯通过域名 的方式来访问网络中的资源。

但是,网络中的计算机之间只能基于 IP 地址来相互识别对方的 身份,而且要想在互联网中传输数据,也必须基于外网的 IP 地址来完成。

为了降低用户访问网络资源的门槛,DNS(Domain Name System,域名系统)技术应运 而生。

这是一项用于管理和解析域名与 IP 地址对应关系的技术,简单来说,就是能够接受用 户输入的域名或 IP 地址,然后自动查找与之匹配(或者说具有映射关系)的 IP 地址或域名, 即将域名解析为 IP 地址(正向解析),或将 IP 地址解析为域名(反向解析)。

这样一来,我们 只需要在浏览器中输入域名就能打开想要访问的网站了。

DNS 域名解析技术的正向解析也是 我们最常使用的一种工作模式。

鉴于互联网中的域名和 IP 地址对应关系数据库太过庞大,DNS 域名解析服务采用了类似目录树的层次结构来记录域名与 IP 地址之间的对应关系,从而形成了一个分布式的数据库系统。

域名后缀一般分为国际域名和国内域名,国际域名是用户可注册的通用顶级域名的俗称。

它的后缀为.com、.top、.net或.org,. vip。 国内域名为后缀为.cn的域名;二者注册机构不同,在使用中基本没有区别。

原则上来讲,域名后缀都有严格的定义,但在实际使用时可以不必严格遵守。

目前最常见的域名后缀有.com(商业组织)、.org(非营利组 织)、.gov(政府部门)、.net(网络服务商)、.edu(教研机构)、.pub(公共大众)、.cn(中国 国家顶级域名)等。

image-20220219115347747

任务背景

公司在开发一个电商网站,该服务器地址是192.168.0.110已经部署好了,现在希望通过域名pdd.yuchaoit.cn来访问该网站,便于更好的访问体验。

运维部门需要解决这个问题,便于开发、测试团队使用,通过内网的DNS服务器,做好域名解析。

可以改hosts吗?为什么不能?

任务需求

需要在内网环境下,开发、测试部门同事可以访问该网站。

192.168.0.110 pdd.yuchaoit.cn

任务拆解

1.修改hosts文件(不合适,此方式只适合自己本机调试)

2.部署DNS服务器(正解)

学习目标

1.DNS服务作用

2.域名构成

3.DNS服务部署

4.域名解析实践

DNS结构

DNS(domain name system ) 域名管理系统

  • 域名:

由特定的格式组成,用来表示互联网中 某一台计算机或者计算机组的名称 ,能够使人更方便的访问互联网,而不用记住能够被机器直接读取的IP地址。

1、DNS的作用

  • 域名的 正向解析

    将主机域名转换为对应的IP 地址,以便网络程序能够通过主机域名访问到对应的服务器主机

    域名——>IP A记录

  • 域名的 反向解析

    将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名

    IP——>域名 PTR记录

2、DNS树形结构

  1. DNS树形结构概述
    • DNS(Domain Name System)即域名系统,它的结构是一个分层的树形结构。这棵树的最顶层是根(root),用“.”来表示。根服务器主要用来管理顶级域名服务器。
    • 根服务器并不直接解析域名,而是将请求指向相应的顶级域名服务器。就像是一个公司的最高管理层,不直接处理基层业务,而是将任务分配到下一层级。
  2. 顶级域名(TLD - Top - Level Domain)
    • 顶级域名是DNS树形结构中的第二层。常见的有通用顶级域名(gTLD),如.com(用于商业机构)、.org(用于非营利组织)、.net(用于网络服务机构)等;还有国家及地区顶级域名(ccTLD),像.cn(中国)、.us(美国)、.jp(日本)等。
    • 这些顶级域名服务器负责管理其下`一级域名(二级域名)的相关信息。例如,所有以.com结尾的域名相关的权威信息存储和管理都与.com顶级域名服务器有关。可以把顶级域名服务器想象成各个“部门主管”,每个“部门主管”负责特定类型(如商业类型的.com)或者特定地区(如中国的.cn)域名的管理。
  3. 二级域名(Second - Level Domain)具体,企业业务需要购买的域名。
    • 二级域名是在顶级域名之下创建的域名。例如,在.com顶级域名下,有baidu.com、taobao.com等二级域名。这些二级域名通常是由域名注册人通过域名注册商向相应的顶级域名管理机构申请注册的。
    • 二级域名服务器负责存储和提供其下主机(如www、mail等主机名)的IP地址映射等信息。以baidu.com为例,它的二级域名服务器存储着像www.baidu.com对应的IP地址等信息,用于将用户对该域名的访问请求正确地引导到相应的服务器IP地址上。
  4. 子域名(Sub - Domain)
    • 子域名是二级域名的进一步细分。例如,在baidu.com这个二级域名下,可能有map.baidu.com、tieba.baidu.com等子域名。子域名可以根据组织的需要进行创建,用于区分不同的服务或者部门。
    • 子域名的解析可以由二级域名服务器来完成,也可以通过专门为子域名设置的独立服务器来处理。这就好比在一个公司内部,在大的部门(二级域名)下可以再细分出小的团队(子域名),每个团队可以有自己的小“服务器”(解析服务器)来处理相关事务。
  5. 主机记录(Host Record)
    • 在DNS树形结构的最底层是主机记录。例如,在www.baidu.com中,“www”就是主机记录。主机记录指向具体的服务器IP地址,这样用户在浏览器中输入域名时,DNS系统能够通过查询,从主机记录找到对应的IP地址,从而将用户的请求发送到正确的服务器上,完成网页内容的访问等操作。

image-20220219133551231

根域 .

  1. 定义与位置
    • 在DNS(域名系统)树形结构的最顶端是根域,用“.”来表示。它是整个域名系统的基础和起始点,就像一棵树的树根一样,所有的域名层级都是从根域开始向下延伸的。所有的域名查询实际上都是从根域开始引导,然后逐步找到对应的目标域名服务器。
  2. 根服务器的作用
    • 根服务器并不直接解析域名所对应的IP地址。它的主要功能是存储顶级域名服务器(TLD)的信息。当客户端(如用户的浏览器)发出一个域名查询请求时,首先会向根服务器询问该域名对应的顶级域名服务器的位置。例如,对于域名“example.com”,根服务器会告知客户端.com顶级域名服务器的地址,然后客户端再向.com顶级域名服务器查询“example”这个二级域名对应的服务器信息。
  3. 根服务器的数量与分布
    • 全球共有13个根服务器(从A - M命名),不过这13个根服务器有许多镜像服务器(通过复制根服务器的数据来减轻主根服务器的负担,并提高访问效率)。这些根服务器主要由互联网名称与数字地址分配机构(ICANN)管理和维护。这些服务器分布在世界各地,如美国、英国、瑞典等国家。这种分布方式有助于确保全球范围内的域名查询都能够快速地得到响应,同时也增强了域名系统的可靠性和稳定性。例如,即使某个地区的网络出现故障或者受到攻击,其他地区的根服务器或其镜像服务器仍然可以正常工作,保证域名查询的基本流程能够进行。
  4. 根域的安全性和重要性

    • 根域的安全性至关重要。因为它是整个DNS系统的核心,如果根服务器受到攻击或者出现故障,可能会导致全球范围内的域名解析出现混乱。例如,如果攻击者篡改了根服务器中的顶级域名服务器信息,那么客户端可能会被引导到错误的域名服务器,从而无法正确访问网站或者获取正确的服务。为了保障根域的安全,采用了多种安全措施,如采用先进的网络安全技术进行防护,对根服务器的访问进行严格的权限管理等。
  5. 在整个 DNS 系统的最上方一定是 . (小数点) 这个 DNS 服务器 (称为 root),也叫”根域“。

  6. 根域 (13台 全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。)

顶级域名(一级域名)

  1. 通用顶级域名(gTLD)
    • .com
      • 这是最常见的顶级域名,用于商业机构。许多知名的企业网站都使用.com域名,比如亚马逊(amazon.com)、谷歌(google.com)等。它代表着商业性质的网站,这些网站通常是为了进行商品销售、提供商业服务或者展示商业信息等目的而建立的。
    • .org
      • 主要用于非营利组织。像维基百科(wikipedia.org)就使用了这个顶级域名。非营利组织利用这个域名来宣传自己的宗旨、筹集资金、发布公益信息等活动。例如,许多慈善机构、学术研究机构、行业协会等都选择.org域名来体现其非盈利的性质。
    • .net
      • 用于网络服务机构。早期主要是为网络相关的基础设施服务提供商使用,如互联网服务提供商(ISP)。现在也有很多其他类型的公司使用,例如一些网络技术公司、云计算服务公司等。比如namecheap.net,它是一家提供域名注册等网络服务的公司。
    • .edu
      • 是教育机构专用的顶级域名。在美国等国家,从小学到大学等各级教育机构都可以申请使用。例如哈佛大学(harvard.edu)、斯坦福大学(stanford.edu)等。这个域名有助于明确网站的教育属性,方便用户识别其为教育相关的资源平台,如学校官网、在线教育课程平台等。
    • .gov
      • 用于政府机构。这是一个具有权威性的顶级域名,只有政府部门可以使用。例如美国白宫官方网站(whitehouse.gov)。通过这个域名,用户可以方便地找到政府部门发布的政策法规、政务公开信息、公共服务资源等内容。
    • .mil
      • 是军事机构使用的顶级域名。它主要用于各国的军队相关组织和部门,如美国国防部(defense.gov)下属的一些军事单位网站可能会使用.mil域名的子域名。这个域名有助于确保军事信息的安全性和独立性,同时也方便军队内部以及与相关政府部门之间的沟通和信息共享。
  2. 国家及地区顶级域名(ccTLD)
    • .cn
      • 代表中国。中国的各类网站都可以使用这个域名,包括企业、政府机构、教育机构、个人等。例如百度(baidu.cn)、新华网(xinhuanet.cn)等。它体现了网站与中国地区的关联,对于本土企业和组织在国内市场的推广以及面向国内用户的服务提供了很好的标识作用。
    • .us
      • 代表美国。美国的许多网站会使用这个域名,像美国政府的一些州级政府网站(如california.us)、美国本地企业网站等。它有助于区分网站的地域来源,特别是对于一些主要面向美国本土用户的网站或者美国本土特色的企业和组织来说,是一个很好的选择。
    • .jp
      • 代表日本。日本的企业、政府机构、文化组织等网站会使用这个域名,如日本航空公司(jal.com.cn和jal.co.jp),通过这个域名可以突出网站的日本地域属性,方便日本国内以及对日本文化、产品等感兴趣的国际用户访问相关网站。

顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如在http://yuchaoit.cn这个域名中,顶级域是.cn(或.COM),大小写视为相同。

二级域名

二级域名是域名的倒数第二个部分,例如在http://yuchaoit.cn这个域名中,二级域名是yuchaoit。以此类推。

3、域名机构

收费、新网https://www.xinnet.com/、万网https://www.hichina.com/

免费域名、tk域名等。

4、DNS工作原理

image-20220219140035446


image-20220219140603334

DNS域名解析和手机号查询理解。

image-20220219141035940

1、在浏览器中输入www.baidu.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器(常见8.8.8.8;114.114.114.114)在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

4、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找baidu.com域服务器,重复上面的动作,进行查询,直至找到www.baidu.com主机。

5、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

DNS部署(重要)

什么是BIND系统

一、BIND DNS系统概述

  1. 定义
    • BIND(Berkeley Internet Name Domain)是一款广泛使用的域名系统(DNS)服务器软件。它主要用于将域名(如example.com)转换为对应的IP地址(如192.0.2.1),同时也能进行反向解析,即将IP地址转换为域名。这一功能对于互联网的正常运转至关重要,因为大多数网络应用是通过域名来访问服务器的,而不是直接使用IP地址。
  2. 历史背景

    • BIND最初是由加利福尼亚大学伯克利分校开发的,其开发目的是为了满足当时不断增长的互联网域名解析需求。随着互联网的发展,BIND也在不断更新和完善。它已经从简单的域名解析工具发展成为一个功能强大、高度可配置的DNS系统,支持多种操作系统,如Linux、Unix和Windows等。
  3. 工作原理

    • 域名解析请求流程
      • 当用户在浏览器中输入一个域名时,例如www.example.com,浏览器首先会检查本地缓存(如浏览器缓存或操作系统缓存)中是否已经存在该域名对应的IP地址。如果缓存中没有,请求会被发送到本地配置的DNS服务器(这个服务器可能是由互联网服务提供商提供的)。
      • 如果本地DNS服务器没有该域名的解析记录,它会向根DNS服务器发送请求。根DNS服务器会根据域名的顶级域名(如.com、.org等)指示本地DNS服务器应该向哪个顶级域名服务器询问。
      • 本地DNS服务器接着向顶级域名服务器发送请求,顶级域名服务器会告知本地DNS服务器负责该域名的权威DNS服务器的位置。
      • 最后,本地DNS服务器向权威DNS服务器请求域名对应的IP地址,权威DNS服务器返回解析结果,本地DNS服务器将结果缓存并返回给用户的浏览器。
    • 区域(Zone)概念
      • BIND使用区域来管理域名解析。一个区域是域名空间的一个子集,它包含了特定域名及其子域名的所有DNS记录。例如,example.com区域可能包含www.example.com、mail.example.com等域名的解析记录。区域文件是存储区域相关DNS记录的文本文件,这些记录包括A记录(用于将域名映射到IPv4地址)、AAAA记录(用于将域名映射到IPv6地址)、CNAME记录(用于创建域名别名)等。

二、BIND DNS系统的安装与配置

  1. 安装
    • 在不同的操作系统上安装BIND的方式有所不同。以常见的Linux系统为例,在Debian或Ubuntu系统中,可以使用命令“apt - get install bind9”进行安装;在Red Hat或CentOS系统中,可以使用“yum install bind”命令进行安装。
  2. 主配置文件(named.conf)

    • 这是BIND的核心配置文件。它定义了BIND服务器的全局选项,如监听的IP地址和端口、访问控制列表等。例如,以下是一个简单的named.conf文件片段,用于指定BIND服务器监听在本地所有IP地址的53端口(DNS标准端口):
      options {
        listen - on port 53 { any; };
        directory "/var/named";
        // 其他选项
      };
      
    • 其中,“directory”选项指定了区域文件等相关文件的存储目录。
  3. 区域文件配置
    • 假设要配置一个名为example.com的正向区域。首先,需要在named.conf文件中添加区域声明,如下所示:
      zone "example.com" {
        type master;
        file "example.com.zone";
      };
      
    • 这里“type master”表示这是一个主区域,负责提供域名解析数据。“file”选项指定了区域文件的名称。然后,需要创建example.com.zone文件,其内容可能包括以下A记录示例:
      $TTL 86400
      @       IN      SOA     ns1.example.com. admin.example.com. (
                            2023010101 ; serial
                            3600       ; refresh
                            1800       ; retry
                            604800     ; expire
                            86400      ; minimum
                        )
      @       IN      NS      ns1.example.com.
      www     IN      A       192.168.1.100
      
    • 在这个区域文件中,“$TTL”定义了DNS记录的默认生存时间(以秒为单位)。“SOA”(Start of Authority)记录包含了区域的管理信息,如序列号(用于版本控制)、刷新时间、重试时间等。“NS”记录指定了该区域的权威DNS服务器名称,“A”记录将域名“www.example.com”映射到IP地址“192.168.1.100”。

三、BIND DNS系统的安全与维护

  1. 安全措施
    • 访问控制列表(ACL):可以通过在named.conf文件中定义ACL来限制对DNS服务器的访问。例如,可以创建一个ACL只允许特定IP地址或IP地址段的主机访问DNS服务器的某些功能。
    • TSIG(Transaction Signature)密钥:用于在DNS服务器之间进行安全的通信,特别是在主从DNS服务器同步数据时。通过配置TSIG密钥,可以防止数据被非法篡改。
  2. 维护与监控
    • 日志记录:BIND可以记录各种操作日志,如查询日志、错误日志等。通过分析日志,可以及时发现异常的DNS请求,如恶意域名解析尝试。可以在named.conf文件中配置日志选项,例如:
      logging {
        channel default_log {
            file "bind.log";
            severity info;
        };
        category queries {
            default_log;
        };
      };
      
    • 这将把查询日志记录到bind.log文件中,日志级别为“info”。
    • 性能监控:可以使用工具如nagios、zabbix等来监控BIND服务器的性能,包括查询响应时间、CPU和内存使用率等。通过监控这些指标,可以及时发现服务器性能下降的情况,并采取相应的措施,如优化配置或升级硬件。

四、BIND DNS系统的应用场景与优势

  1. 应用场景
    • 企业内部网络:企业可以使用BIND构建自己的内部DNS系统,用于解析内部服务器的域名,如企业内部的邮件服务器、文件服务器等。这有助于提高企业网络的管理效率和安全性。
    • 互联网服务提供商(ISP):ISP使用BIND来为其用户提供域名解析服务。通过配置多个BIND服务器并进行合理的负载均衡,可以高效地处理大量的域名解析请求。
  2. 优势
    • 稳定性和可靠性:BIND经过多年的发展和广泛的应用,已经被证明是一个稳定可靠的DNS系统。它能够在高负载的情况下保持良好的性能,并且具有完善的错误处理机制。
    • 高度可定制性:可以根据不同的应用场景和需求对BIND进行定制化配置,如设置不同的区域类型(主区域、从区域、存根区域等)、添加自定义的DNS记录等。
    • 开源免费:BIND是开源软件,这意味着用户可以免费使用、修改和分发它,对于许多预算有限的组织和个人来说,这是一个很大的优势。

ubuntu部署BIND9

https://www.isc.org/bind/

以下是在Ubuntu系统中安装BIND DNS服务器的详细步骤:

  1. 更新系统软件包列表

    • 在安装任何软件之前,建议先更新系统的软件包列表。打开终端(可以通过按下Ctrl + Alt + T组合键),然后运行以下命令:
      sudo apt update
      
    • 这个命令会从Ubuntu软件仓库中获取最新的软件包信息。sudo是用于以管理员权限运行命令,系统会提示你输入用户密码。
  2. 安装BIND9

    • 在更新软件包列表后,运行以下命令来安装BIND9:
      sudo apt install bind9
      
    • 安装过程中,系统会自动下载并安装BIND9以及它所依赖的其他软件包。安装完成后,BIND9服务会自动启动。
  3. 配置BIND9

    • 主要配置文件是/etc/bind/named.conf。这个文件定义了BIND服务器的全局选项,如监听的IP地址和端口、访问控制列表等。
    • 区域(Zone)配置文件存放在/etc/bind/目录下。例如,如果你要配置一个名为yuchaolinux.com的正向区域,你需要在named.conf文件中添加区域声明,像这样:
    • # ```

      编辑如下文件,填写你的企业域名zone file

      /etc/bind/named.conf.default-zones

创建你的企业域名,二级域名在这里,以及对应的域名记录文件

zone "yuchaolinux.com" { type master; file "/etc/bind/yuchaolinux.com.zone"; };

在yuchaolinux.com.zone这个区域文件里,填写你的域名解析关系

   - 然后,创建`example.com.zone`文件(通常也放在`/etc/bind/`目录下),内容可以是如下示例(这只是一个简单的示例,实际应用中根据需要添加更多记录):

你的业务域名的解析关系

$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2023010101 ; serial 3600 ; refresh 1800 ; retry 604800 ; expire 86400 ; minimum ) @ IN NS ns1.example.com. www IN A 192.168.1.100

参考写法

; ; BIND reverse data file for broadcast zone ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost.

   - 这里的`$TTL`定义了DNS记录的默认生存时间(以秒为单位)。`SOA`(Start of Authority)记录包含了区域的管理信息,如序列号(用于版本控制)、刷新时间、重试时间等。`NS`记录指定了该区域的权威DNS服务器名称,`A`记录将域名`www.example.com`映射到IP地址`192.168.1.100`。

4. **检查配置文件语法**
   - 在修改配置文件后,为了确保配置文件语法正确,可以运行以下命令:

sudo named - checkconf

   - 如果配置文件语法正确,命令会没有输出;如果有语法错误,会显示错误信息,提示你修正配置文件。

5. **重新启动BIND服务**
   - 当配置文件修改正确后,需要重新启动BIND服务使配置生效。运行以下命令:

sudo service bind9 restart

   - 现在,你的Ubuntu系统上的BIND DNS服务器就已经安装并配置完成,可以开始使用它来提供域名解析服务了。不过,在实际应用中,还需要进行更多的测试和优化,例如检查域名解析是否正常、设置安全访问控制等。



## Named.conf

这是一段用于BIND DNS服务器(`named`)的主要配置文件内容。下面逐行分析:
- `// This is the primary configuration file for the BIND DNS server named.`:这是一行注释,说明这个文件是BIND DNS服务器`named`的主配置文件。
- `//` 开头的后续几行同样是注释,提示用户在定制配置文件之前,先阅读`/usr/share/doc/bind9/README.Debian.gz`这个文档,以了解Debian系统下BIND配置文件的结构,特别是在添加区域(zones)的时候,推荐在`/etc/bind/named.conf.local`文件中操作 。
- `include "/etc/bind/named.conf.options";`:使用`include`指令引入`/etc/bind/named.conf.options`文件,这个文件通常用于设置一些全局的DNS服务器选项,例如监听地址、访问控制列表、缓存设置等。
- `include "/etc/bind/named.conf.local";`:引入`/etc/bind/named.conf.local`文件,正如前面注释所提示的,用户自定义的区域配置等内容通常放在这个文件里,方便管理和维护,避免直接修改主配置文件导致出错。
- `include "/etc/bind/named.conf.default-zones";`:引入`/etc/bind/named.conf.default-zones`文件,该文件一般包含一些默认的DNS区域设置,帮助服务器快速搭建起基础的DNS服务架构。

总体而言,这段配置通过`include`指令将不同功能的配置片段整合到一起,让整个DNS服务器的配置更模块化、易于维护。

创建你的企业域名,二级域名在这里,以及对应的域名记录文件

zone "yuchaolinux.com" { type master; file "/etc/bind/yuchaolinux.com.zone"; };




### 配置文件作用

1. **bind.keys文件(-rw - r--r-- 1 root root 2403 7月17 02:16 bind.keys)**
   - 这是一个普通文件(开头的`-`表示),所有者和所属组都是`root`,权限为所有者可读写,其他用户和所属组用户仅可读。
   - 它可能包含与BIND(Berkeley Internet Name Domain,一种域名服务器软件)相关的密钥信息。密钥可能用于安全地进行域名解析相关的操作,如与其他服务器之间的安全通信、数据签名等。
2. **db.0 - db.255、db.empty和db.local文件(如 -rw - r--r-- 1 root root 237 4月12 2024 db.0)**
   - 这些都是普通文件,所有者是`root`,所属组是`root`,权限为所有者可读写,其他用户和所属组用户仅可读。
   - 它们很可能是BIND的数据库文件。在DNS(Domain Name System)服务中,这些文件可能存储了域名到IP地址的映射信息`(正向解析)`或IP地址到域名的映射信息(反向解析)。例如,`db.0`等文件可能用于存储特定区域的DNS记录,`db.empty`可能是一个模板或者初始为空的数据库文件,`db.local`可能与本地域名解析相关。
3. **named.conf文件(-rw - r--r-- 1 root bind 463 4月12 2024 named.conf)**
   - 这是一个普通文件,所有者是`root`,所属组是`bind`,权限为所有者可读写,其他用户和所属组用户仅可读。
   - 它是BIND服务的主配置文件。在这个文件中,会定义BIND服务器的全局参数,如监听的IP地址和端口、访问控制列表、加载哪些区域文件等。通过修改这个文件,可以配置BIND服务器的基本行为,比如设置域名解析规则、指定权威域名区域等。
4. **named.conf.default - zones文件(-rw - r--r-- 1 root bind 673 1月8 14:56 named.conf.default - zones)**
   - 这是一个普通文件,所有者是`root`,所属组是`bind`,权限为所有者可读写,其他用户和所属组用户仅可读。
   - 它可能包含BIND服务默认区域(zone)的配置信息。区域是DNS中的一个重要概念,代表了域名空间的一个特定部分,这个文件中的配置可能用于定义一些默认的域名解析规则,比如默认的正向和反向解析区域的设置等。
5. **named.conf.local文件(-rw - r--r-- 1 root bind 165 4月10 2024 named.conf.local)**
   - 这是一个普通文件,所有者是`root`,所属组是`bind`,权限为所有者可读写,其他用户和所属组用户仅可读。
   - 它用于本地定制的BIND配置。与主配置文件`named.conf`相比,`named.conf.local`可以用来添加一些特定于本地环境或者特定应用场景的配置,`比如为本地网络自定义的域名解析规则,或者针对本地开发环境的特殊设置。`
6. **named.conf.options文件(-rw - r--r-- 1 root bind 846 4月10 2024 named.conf.options)**
   - 这是一个普通文件,所有者是`root`,所属组是`bind`,权限为所有者可读写,其他用户和所属组用户仅可读。
   - 它用于配置BIND服务器的各种选项。这些选项可能包括缓存设置(如缓存的大小、缓存的有效期等)、转发设置(是否转发DNS请求以及转发的目标服务器等)、安全选项(如允许哪些IP地址访问服务器等),通过调整这些选项,可以优化BIND服务器的性能和安全性。
7. **rndc.key文件(-rw - r----- 1 bind bind 100 1月8 14:45 rndc.key)**
   - 这是一个普通文件,所有者是`bind`,所属组是`bind`,权限为所有者可读写,所属组用户仅可读,其他用户没有任何权限。
   - `rndc`是Remote Name Daemon Control(远程名称守护进程控制)的缩写。这个文件包含用于`rndc`工具的密钥,`rndc`可以用于远程管理和控制BIND服务器,例如重新加载配置文件、查询服务器状态等操作,密钥用于保证这些操作的安全性。
8. **zones.rfc1918文件(-rw - r--r-- 1 root root 1317 4月10 2024 zones.rfc1918)**
   - 这是一个普通文件,所有者是`root`,所属组是`root`,权限为所有者可读写,其他用户和所属组用户仅可读。
   - 它可能与RFC 1918定义的私有网络区域的域名解析相关。RFC 1918定义了一些私有IP地址范围(如10.0.0.0 - 10.255.255.255、172.16.0.0 - 172.31.255.255、184.168.0.0 - 192.168.255.255),这个文件可能用于配置这些私有网络区域内的域名解析规则,比如在本地网络环境中如何解析内部域名等。

## Bind Zone文件解释

1. **基本概念**
   - BIND的区域(Zone)文件是DNS服务器用来存储域名解析信息的文本文件。一个区域代表域名空间的一个子集,包含了特定域名及其子域名的所有DNS记录。例如,“example.com”区域文件会包含像“www.example.com”、“mail.example.com”等域名相关的记录。

2. **常见记录类型及其含义**
   - **$TTL(Time - To - Live)**
     - 示例:`$TTL 86400`
     - 含义:它定义了DNS记录的默认生存时间,单位是秒。在这个例子中,86400秒(即一天)表示客户端(如浏览器)可以缓存该区域内的DNS记录的时间。当缓存时间超过这个值后,客户端需要重新向DNS服务器请求最新的记录。
   - **SOA(Start of Authority)记录**
     - 示例:
     ```bash
     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     # 给域名添加 三级域名
     # www.yuchaoit.cn  110.242.68.66
     # book.yuchaoit.cn 110.242.68.66
     # api.yuchaoit.cn 110.242.68.66
     # yuchaoit.cn

     # 这3个叫做主机记录

     ; BIND reverse data file for broadcast zone
     ;
     $TTL    604800
     @       IN      SOA     localhost. root.localhost. (
                                   1         ; Serial
                              604800         ; Refresh
                               86400         ; Retry
                             2419200         ; Expire
                              604800 )       ; Negative Cache TTL
     ;
     @       IN      NS      localhost.
 - 含义:
   - “@”符号在这里代表区域的根域名,也就是在这个区域文件对应的域名,如“example.com”。“IN”是记录类型的类别,代表“Internet”。
   - “SOA”表明这是一个起始授权记录。它包含了区域的管理信息。
   - “ns1.example.com.”是这个区域的主域名服务器的名称。“admin.example.com.”是区域管理员的邮箱地址(注意,在实际记录中,邮箱地址中的“@”符号通常用“.”代替,以避免与DNS记录中的“@”混淆)。
   - “serial”(序列号)是用于版本控制的一个数字。每次区域文件内容更新时,这个数字应该递增。在这个例子中,序列号是“2023010101”。
   - “refresh”表示从服务器(如从DNS服务器)应该多长时间向主服务器检查区域数据是否更新,这里是3600秒(1小时)。
   - “retry”表示如果从服务器在检查更新时无法联系到主服务器,多长时间后再次尝试,这里是1800秒(30分钟)。
   - “expire”表示如果从服务器一直无法联系到主服务器,经过多长时间后,从服务器将停止使用当前的区域数据,这里是604800秒(7天)。
   - “minimum”表示在没有其他TTL值指定的情况下,DNS记录的最小生存时间,这里是86400秒(1天)。
  • NS(Name Server)记录
    • 示例:@ IN NS ns1.example.com.
    • 含义:它指定了该区域的权威DNS服务器的名称。在这个例子中,“example.com”区域的权威DNS服务器是“ns1.example.com”。对于一个区域来说,至少应该有一个NS记录来指示域名解析请求应该发送到哪个服务器。
  • A(Address)记录
    • 示例:www IN A 192.168.1.100
    • 含义:它用于将一个完全合格域名(FQDN)映射到一个IPv4地址。在这个例子中,域名“www.example.com”(因为“@”代表根域名,“www”是相对根域名的子域名)被映射到IP地址“192.168.1.100”。这是最常见的记录类型之一,用于正向域名解析,使得用户可以通过域名访问到对应的IP地址上的服务器。
  • AAAA记录
    • 示例:www IN AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334
    • 含义:和A记录类似,但它是用于将域名映射到IPv6地址,随着IPv6的推广,这种记录类型越来越重要,用于支持使用IPv6地址的服务器的域名解析。
  • CNAME(Canonical Name)记录
    • 示例:ftp IN CNAME www.example.com
    • 含义:它创建了一个域名别名。在这个例子中,“ftp.example.com”是“www.example.com”的别名。当对“ftp.example.com”进行域名解析请求时,DNS服务器会将请求重定向到“www.example.com”对应的IP地址。这对于在多个服务共享同一IP地址或者需要方便地更改域名指向的情况下非常有用。
  • MX(Mail Exchanger)记录
    • 示例:@ IN MX 10 mail.example.com
    • 含义:它用于指定邮件交换服务器。在这个例子中,“10”是优先级(数字越小优先级越高),表示“mail.example.com”是“example.com”区域接收邮件的服务器。当其他邮件服务器向“example.com”域名下的邮箱发送邮件时,会先查询MX记录,然后将邮件发送到指定的邮件交换服务器。

案例,参考火山云的添加规则

yuchaoit.vip 192.168.110.24

book.yuchaoit.vip 192.168.110.24
api.yuchaoit.vip  192.168.110.96

centos bind搭建

目标,在客户端配置了我们部署的DNS服务器之后,可以解析www.yuchao666.cn。

服务器准备

IP hostname 作用
192.168.0.104 dns-server DNS服务 域名解析使用
192.168.0.105 web-server web服务 提供web业务访问
192.168.0.106 client 测试访问web服务

根据以上要求,配置好机器

image-20220219145159578

部署dns-server

安装bind套件

yum install bind bind-utils -y

解释
bind-utils:bind客户端程序集,例如dig, host, nslookup等;

bind:提供的dns server程序、以及几个常用的测试程序;

bind-libs:被bind和bind-utils包中的程序共同用到的库文件;

# ubuntu
sudo apt update && sudo apt install bind9
1.关闭防火墙
[root@dns-server ~]# systemctl stop firewalld
[root@dns-server ~]#
[root@dns-server ~]# iptables -F
[root@dns-server ~]#
[root@dns-server ~]# getenforce
Disabled

2.配置yum源,用于安装bind软件。
[root@dns-server ~]# ls /etc/yum.repos.d/

3.安装bind
[root@dns-server ~]# yum install bind -y

4.查看软件
[root@dns-server ~]# rpm -qi bind


5.查看dns配置文件
[root@dns-server ~]# rpm -ql bind

# 日志轮转文件
/etc/logrotate.d/named
# 配置文件目录
/etc/named
# 主配置文件
/etc/named.conf
# zone文件,定义域
/etc/named.rfc1912.zones
# 服务管理脚本
/usr/lib/systemd/system/named.service
# 二进制程序文件
/usr/sbin/named
# 检测配置文件
/usr/sbin/named-checkconf
# 检测域文件
/usr/sbin/named-checkzone
# 根域服务器
/var/named/named.ca
# 正向解析区域文件模板
/var/named/named.localhost
# 反向解析区域文件模板
/var/named/named.loopback
# dns服务器下载文件的默认路径
/var/named/slaves
# 进程pid
/var/rum/named

部署正向解析

1.备份原有文件
[root@dns-server ~]# cp /etc/named.conf /etc/named.conf.bak
[root@dns-server ~]#
[root@dns-server ~]#
[root@dns-server ~]# cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak

2.修改主配置文件

# 定义监听端口、监听方式、允许查询来源

options {
        // 定义监听方式  any代表全网监听
        // 监听的地址和端口,localhost表示监听在本机所有地址上;
        listen-on port 53 { 127.0.0.1;any; };
        listen-on-v6 port 53 { ::1; };
        // 区域数据库文件存放的目录
        directory       "/var/named";
        // dns解析过内容的缓存文件
        dump-file       "/var/named/data/cache_dump.db";
        // 静态解析文件(几乎不用)
        statistics-file "/var/named/data/named_stats.txt";
        // 内存的统计信息
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        // 允许谁向本台DNS发起查询请求(localhost|ip|any);
        allow-query     { localhost;any; };
        ..
        ...
        ...
        省略

 // 控制日志输出级别,路径
 logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

// 区域设置,这是根域。
zone "." IN {
        type hint;
        file "named.ca";
};


 59 include "/etc/named.rfc1912.zones";  // 这里include表示,载入一个子配置文件
 60 include "/etc/named.root.key";



配置文件解析
主配置文件组成部分::

options {} :全局选项(监听端口、数据文件存储位置、缓存位置、权限等)
logging {} :服务日志选项
zone . {} :自定义区域配置
include :包含其他的文件


主配置文件注意事项

语法非常严格;
文件权限属主 root ,属组 named ,文件权限 640;

[root@dns-server ~]# ll /etc/named.conf
-rw-r----- 1 root named 1812 Feb 19 17:10 /etc/named.conf

image-20220219170535947

named.rfc1912.zones主配置文件解析

zone "ZONE_NAME" IN {
    type {master|slave|hint|forward};
    file "ZONE_NAME.zone";
};
zone "ZONE_NAME“:定义解析库名字,通常和解析库文件前缀对应起来。
type:
    master指的是主dns解析
    slave指的是从dns解析
    hint指的是根域名解析(根提示域)
    forward指的是转发,转发不使用file
file :定义区域解析库文件名字(位置默认在/var/named下面),file的前缀通常和zone的名字通常对应起来,然后加一个.zone的后缀。

继续看配置流程

3.修改子配置文件,自定义区域配置文件

配置解析
zone "example.com" IN { 
    type master|slave; 
    #自定义区域类型 
    file /path/to/zonefile; 
    #绝对路径和相对路径 
    allow-update {ip|none}; 
    #允许哪个ip可以使用nsupdate动态更新 区域文件 
};

添加如下配置,注意格式,这里就是添加你的域名了。 一定不要落下分号
[root@dns-server ~]# tail -5  /etc/named.rfc1912.zones
zone "yuchaoit.cn" IN {
        type master;
        file "yuchaoit.cn.zone";
        allow-update { none; };
};


4.创建zone区域文件 yuchaoit.cn.zone,先去复制一个模板,区域文件放在了/var/named
[root@dns-server ~]# cp -p /var/named/named.localhost /var/named/yuchaoit.cn.zone


5.修改区域文件
让这个域名和你要的IP地址对应起来,以及添加一个三级域名www.yuchaoit.cn。
[root@dns-server ~]# cat  /var/named/yuchaoit.cn.zone
$TTL 1D
@    IN SOA    @ rname.invalid. (
                    0    ; serial
                    1D    ; refresh
                    1H    ; retry
                    1W    ; expire
                    3H )    ; minimum
    NS    @
    A    192.168.0.105
    AAAA    ::1

www A 192.168.0.105


6.修改完了后,务必修改zone文件的权限
[root@dns-server ~]# chmod 640 yuchaoit.cn.zone
[root@dns-server ~]# ll /var/named/
total 20
drwxrwx--- 2 named named    6 Nov 25 00:38 data
drwxrwx--- 2 named named    6 Nov 25 00:38 dynamic
-rw-r----- 1 root  named 2253 Apr  5  2018 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named    6 Nov 25 00:38 slaves
-rw-r----- 1 root  named  173 Feb 19 17:58 yuchaoit.cn.zone


7.检查配置文件语法,不要有任何错误
[root@dns-server ~]# named-checkconf /etc/named.conf
[root@dns-server ~]# named-checkconf /etc/named.rfc1912.zones
[root@dns-server ~]#


8.启动named域名解析服务,注意名字是这个。
[root@dns-server ~]# netstat -tnlp|grep named
[root@dns-server ~]#
[root@dns-server ~]# systemctl start named
[root@dns-server ~]# netstat -tnlp|grep named
tcp        0      0 10.96.0.177:53          0.0.0.0:*               LISTEN      8051/named
tcp        0      0 192.168.0.104:53        0.0.0.0:*               LISTEN      8051/named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      8051/named
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      8051/named
tcp6       0      0 ::1:53                  :::*                    LISTEN      8051/named
tcp6       0      0 ::1:953                 :::*                    LISTEN      8051/named
[root@dns-server ~]#

关于zone文件语法解析

time to live(TTL),ttl值主要是控制域名指向的ip地址在dns服务器上的缓存时间

@ 指的就是yuchaoit.cn

$TTL 1D                      //定义一个TTL默认值为1天,下面数据直接引用此值.
@                            [TTL]    IN   SOA  主DNS服务器FQDN 管理员邮箱  (


                                        0       ; 序列号
                                        1D      ; 更新间隔
                                        1H      ; 更新失败后重试间隔
                                        1W      ; 过期时长
                                        3H )    ; 否定记录保存时长

资源类型:A(IPv4), AAAA(IPv6):定义FQDN的IP
          NS :   定义DNS服务器的FQDN
          SOA :   起始授权(每个zone首先要定义此值)
          MX:    定义邮件记录,有优先级概念(0-99),值越小优先级越高。
          CNAME:  定义别名
          PTR:   反向记录

客户端设置DNS地址(重要)

1.客户端配置我们自己部署的dns服务器地址,写入配置文件,这个192.168.0.104是超哥部署的dns服务器IP。

[root@web-server ~]# cat  /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.0.104


2.检查解析关系
[root@web-server ~]# nslookup www.yuchaoit.cn
Server:        192.168.0.104
Address:    192.168.0.104#53

Name:    www.yuchaoit.cn
Address: 192.168.0.105

3.修改dns服务器地址试试,看看解析关系

image-20220219182650222


image-20220219183241955

试试改掉dns服务器,改为公网的114.114.114.114

[root@web-server ~]# cat  /etc/resolv.conf
# Generated by NetworkManager
#nameserver 192.168.0.104
nameserver 114.114.114.114

image-20220219183512258

轻量级dnsmask服务

以目前中小公司为例,大多数公司基础设施服务,更愿意直接买云产品,节省运维成本。

如果需要自建内网dns系统,会以dnsmasq此类轻量级DNS系统居多,便于维护,运维成本更低(人力,机器数量。)

  1. 概述
    • dnsmasq是一个轻量级的DNS、DHCP和TFTP服务器。它在Ubuntu系统中被广泛应用,主要用于在本地网络环境中提供域名解析服务和IP地址分配服务。
  2. 安装
    • 在Ubuntu系统中,可以使用以下命令安装dnsmasq
      • sudo apt - get update(更新软件包列表)
      • sudo apt - get install dnsmasq(安装dnsmasq
  3. 配置文件
    • 主要配置文件是/etc/dnsmasq.conf
    • 基本配置选项
      • 监听接口interface选项用于指定dnsmasq监听的网络接口。例如,如果要让dnsmasqeth0接口上监听,可以在配置文件中添加interface = eth0
      • 域名解析:可以通过server选项指定上游DNS服务器。例如,server = 8.8.8.8会将请求转发到Google的公共DNS服务器。也可以添加多个server选项来设置多个备份DNS服务器。
      • 本地域名解析:如果要为本地网络中的主机名提供自定义解析,可以使用address选项。例如,address =/local - host - name/192.168.1.100会将local - host - name解析为192.168.1.100
  4. 缓存功能
    • dnsmasq具有缓存功能。当它接收到一个域名解析请求并查询到结果后,会将结果缓存一段时间。
    • 缓存时间可以通过cache - size选项进行配置。例如,cache - size = 150表示缓存150个DNS查询结果。缓存可以加快对重复域名的解析速度,减少向上游DNS服务器查询的次数。
  5. 与其他服务的集成
    • 与DHCP服务集成dnsmasq可以同时提供DHCP服务。在配置文件中,可以设置dhcp - range选项来指定IP地址分配范围。例如,dhcp - range = 192.168.1.10,192.168.1.20会为本地网络中的设备分配从192.168.1.10192.168.1.20的IP地址。
    • 与网络管理器集成:在Ubuntu系统中,dnsmasq可以与网络管理器(NetworkManager)一起工作。可以通过网络管理器的设置界面来配置dnsmasq,使其在特定的网络连接中使用。
  6. 启动和停止
    • 启动dnsmasq服务可以使用sudo service dnsmasq start命令。
    • 停止dnsmasq服务可以使用sudo service dnsmasq stop命令。
    • 重启dnsmasq服务可以使用sudo service dnsmasq restart命令。
  7. 日志查看
    • dnsmasq的日志通常记录在/var/log/syslog中。可以使用grep等工具来筛选出dnsmasq相关的日志信息。例如,grep dnsmasq /var/log/syslog可以查看所有dnsmasq的日志记录,用于故障排查和性能分析。

如何选择DNS软件

  1. 功能特点
    • dnsmasq
      • 轻量级和简单性:dnsmasq是一个轻量级的DNS、DHCP和TFTP服务器。它的配置相对简单,非常适合小型网络环境,如家庭网络或小型办公室网络。例如,在一个家庭网络中,你只需要配置简单的本地域名解析和DHCP服务,dnsmasq可以快速完成设置。
      • 缓存功能高效:它有很好的缓存功能。当一个域名被解析后,dnsmasq会将结果缓存起来,下次有相同的请求时,可以直接从缓存中获取答案,大大提高了域名解析的速度。比如,在一个经常访问相同网站的小型办公网络中,缓存可以减少对外部DNS服务器的查询次数。
      • 本地解析方便:对于本地自定义域名解析非常方便。你可以轻松地通过配置文件将本地自定义的主机名解析到指定的IP地址,方便在本地网络中访问本地服务器等设备。
    • bind
      • 功能强大复杂:BIND(Berkeley Internet Name Domain)是一款功能强大、高度可定制的DNS服务器软件。它支持复杂的DNS配置,包括主从服务器设置、区域传输、DNSSEC(DNS安全扩展)等高级功能。例如,在大型企业网络或者互联网服务提供商的网络中,需要对域名解析进行精细控制和高安全性保障,BIND可以满足这些要求。
      • 适合大规模网络:BIND更适合大规模网络环境。它能够处理大量的域名解析请求,并且有很好的扩展性。在处理复杂的域名空间划分和分布式DNS架构时,BIND的优势明显。例如,一个跨国公司需要为不同地区的分支机构设置不同的域名解析策略,BIND可以很好地实现这种分层和分布式的配置。
      • 安全性能高:由于其广泛应用和成熟的设计,BIND在安全方面有很多措施。例如,DNSSEC功能可以确保DNS数据的完整性和真实性,防止DNS欺骗等安全威胁,这在互联网基础设施等关键网络环境中非常重要。
  2. 性能比较
    • 资源占用
      • dnsmasq:由于其轻量级的设计,dnsmasq在资源占用方面表现出色。它通常占用较少的内存和CPU资源,这使得它在资源有限的设备(如小型路由器)上也能很好地运行。
      • bind:BIND相对来说资源占用较多,尤其是在处理大量请求或者复杂配置的情况下。它需要更多的内存来存储DNS数据和缓存,并且在高负载情况下,CPU使用率也会比较高。不过,在配置合理的服务器环境下,这些资源占用是可以接受的,并且能够提供强大的DNS服务。
    • 解析速度
      • dnsmasq:在简单的网络环境中,dnsmasq的解析速度通常很快,这得益于它的缓存机制。对于经常访问的域名,从缓存中获取答案可以几乎瞬间完成解析。
      • bind:BIND的解析速度在合理配置缓存等参数后也可以很快。不过,由于其功能复杂,在处理一些特殊的请求(如涉及复杂的区域传输或者DNSSEC验证)时,可能会比dnsmasq稍慢一些。但在大规模网络中,通过合理的服务器集群和缓存设置,也可以达到很高的解析效率。
  3. 适用场景
    • dnsmasq
      • 家庭网络和小型办公室网络:是家庭网络路由器或者小型办公室网络服务器的理想选择。用于提供简单的域名解析和DHCP服务,方便用户在本地网络中共享文件、打印机等设备,并且可以通过简单的配置实现对一些常用网站的加速访问(通过缓存)。
      • 资源有限的设备:适合运行在资源有限的设备上,如嵌入式设备或者小型网络设备。可以在这些设备上提供基本的DNS和DHCP功能,而不会对设备性能造成太大负担。
    • bind
      • 大型企业网络和互联网服务提供商:适用于大型企业网络,用于管理复杂的内部域名系统,以及互联网服务提供商用于提供公共域名解析服务。可以通过主从服务器设置实现高可用性,并且利用DNSSEC等功能保障网络安全。
      • 对安全性和可靠性要求高的网络:在金融机构、政府网络等对安全性和可靠性要求极高的网络环境中,BIND可以提供强大的安全机制和可靠的域名解析服务,确保网络数据的完整性和真实性。

ubuntu配置dnsmasq

以下是在 Ubuntu 上部署 dnsmasq 并添加 yuchaoit.vip 域名的步骤:


部署和配置 dnsmasq

1. 安装 dnsmasq

sudo apt update
sudo apt install -y dnsmasq

2. 配置 dnsmasq

编辑 dnsmasq 的配置文件:

sudo vim /etc/dnsmasq.conf

添加以下内容:

# 配置域名解析
address=/yuchaoit.vip/192.168.110.24
address=/www.yuchaoit.vip/192.168.110.24
# 可选:设定上游DNS
server=114.114.114.114
server=119.29.29.29
# 配置本地网络的域名
#local=/yuchaoit.vip/

说明

  • address=/yuchaoit.vip/192.168.1.100 表示将域名 yuchaoit.vip 指向 192.168.1.100(可根据实际需求修改)。
  • server=8.8.8.8 指定了上游 DNS 服务器。

3. 配置本地解析(可选)

如果需要将子域名也解析到指定 IP,例如 www.yuchaoit.vip,可以添加:

address=/www.yuchaoit.vip/192.168.1.100

重启 dnsmasq

1. 检查配置

sudo dnsmasq --test

若显示 dnsmasq: syntax check OK,表示配置无误。

2. 重启服务

sudo systemctl restart dnsmasq
sudo systemctl enable dnsmasq

配置客户端解析

1. 配置 resolv.conf

在客户端(或本地服务器)中,将 DNS 指向运行 dnsmasq 的服务器:

sudo nano /etc/resolv.conf

添加:

nameserver 192.168.1.100

2. 验证解析

使用 nslookupdig 测试:

nslookup yuchaoit.vip
dig yuchaoit.vip

结果应返回 192.168.1.100


其他说明

  1. 防止 resolv.conf 被覆盖
    如果 resolv.confNetworkManager 或其他服务覆盖,可编辑 /etc/systemd/resolved.conf
    sudo nano /etc/systemd/resolved.conf
    

修改为:

DNS=192.168.1.100
FallbackDNS=8.8.8.8

然后重启服务:

sudo systemctl restart systemd-resolved
  1. 支持 HTTPS 的 yuchaoit.vip
    如果 yuchaoit.vip 需要支持 HTTPS,需同时配置 Web 服务器(如 Nginx)和证书(如 Let’s Encrypt)。

云服务器dns管理

https://console.volcengine.com/domain-service/search

Copyright © www.yuchaoit.cn 2025 all right reserved,powered by Gitbook作者:于超 2025-01-08 22:30:21

results matching ""

    No results matching ""