Linux系统——DNS解析详解

news2024/12/24 11:37:08

目录

一、DNS域名解析

1.DNS的作用

2.域名的组成

2.1域名层级结构关系特点

2.2域名空间构成

2.3域名的四种不同类型

2.3.1延伸

2.3.2总结

3.DNS域名解析过程

3.1递归查询

3.2迭代查询

3.3一次DNS解析的过程

4.DNS系统类型

4.1缓存域名服务器

4.2主域名服务器

4.3从域名服务器

二、Bind(Berkeley Internet Name Daemon)

1.搭建内网DNS服务器

1.1安装bind软件包

1.2修改DNS地址

1.3重启网卡

1.4再次ping百度地址

1.5配置本机为DNS内网解析服务器

1.6修改客户端配置

1.7验证

2.正向解析——通过域名解析IP地址

2.1安装bind工具包——bind-utlis

2.2修改配置

2.3手写域名配置文件

2.4手写配置文件

2.5开启named服务

2.6验证

2.6.1检测命令

3.反向解析

3.1修改配置文件

3.2检查主配置文件格式

3.3复制数据库文件进行修改

3.4重启dns服务

3.5修改配置文件

3.6重启网卡

3.7测试

4.主从复制

4.1原理

4.2主从服务器一起配置

4.3统一安装bind-utils

4.4修改主配置文件

4.5修改域名配置文件

4.6修改网卡配置——主从复制

4.7重启网卡 

4.8验证主服务器

4.9从服务器配置

4.10修改监听与权限配置

4.11修改从配置文件

4.212重启网卡验证从服务器

4.13关闭主服务器,测试从服务器

4.14补充

5.分离解析

5.1安装工具包

5.2修改配置文件

5.3复制文件格式修改配置文件

5.4添加网卡

5.5复制且修改网卡配置信息

5.6设置Windows地址

6.CDN——内容分发网络


 

一、DNS域名解析

首先,我们要知道DNS是什么,DNS(Domain Name System)是域名系统的英文系统,是一种组织成域层次结构和计算机和网络服务命名系统,用于TCP/IP网络。

DNS实际上是域名解析协议,将域名转化为IP地址;

在早期的域名解析的时候,是iana组织负责将域名和IP地址进行对应,并对其进行排列综合,形成了hosts文件,一个IP地址对应一个域名

我们可以进入/etc/hosts配置文件为www.baidu.com.域名配置192.168.241.123的IP地址;

hosts配置文件的优先级最高;

可以进入 /etc/nsswotch.conf   #可以修改DNS的优先级

将dns写在file前面 

1.DNS的作用

通常识别主机的方式为主机名或者IP地址。人们更倾向于去记忆主机名,类似于www.baidu.com,而IP地址复杂且难记。为了解决这种问题,我们使用DNS域名解析服务,对IP地址进行解析,将可用的IP地址转化为域名,域名系统作为将域名和IP地址相互映射的一个分布式数据库,基于C/S架构,服务端口号为tcp53,udp53;实际上每台DNS域名解析服务器都只负责一个有限的范围(只负责自己范围内的解析)

正向解析:根据域名查找对应的IP地址

反向解析:根据IP地址查找对应的域名

DNS系统的分布式数据结构

2.域名的组成

2.1域名层级结构关系特点

  • 因特网采用层次树状结构的域名结构
  • 域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。
  • 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。
  • 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
  • 完整的域名不超过255个字符。

2.2域名空间构成

上图展示了 DNS 服务器的部分层次结构,从上到下依次为根域名服务器、顶级域名服务器和权威域名服务器。域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。

2.3域名的四种不同类型

  • 根域名服务器 根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。

根域:“ . ”;全球根域服务器节点只有13个,10个在美国,1个在荷兰,1个在瑞典,1个在日本

  • 顶级域名服务器 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。

顶级域名也称一级域名(Top Level Domain:tid);顶级域:“ .com ”

  • 权限域名服务器 这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。

权限域名服务器也称组织与,国家域(.cn .ca  .hk  .tw);比如像.baidu就是权限域名服务器

  • 本地域名服务器 本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。

本地域名服务器也称主机名,比如www就是主机名

最多可达127级域名

2.3.1延伸

ICANN(The internet Corpora-tion for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理

2.3.2总结

根dns服务器只能解析  主机名  +  根域  ;例如根域无法解析www.baidu.com.,只能解析com.,但是会告诉该地址,它的下一级地址可以解析baidu.com.

顶级域(一级域)的dns服务器只能解析  主机名  +  一级域   +根域  ;例如www.baidu.com.

二级域的dns服务只能解析  主机名  +  二级域  +  一级域   +根域 ;例如www.baidu.com.

3.DNS域名解析过程

域名解析包含两种查询方式,分别是递归查询迭代查询,两种查询方式都可以得到结果,但是递归只需要询问一次即可得到结果,迭代需要询问多次才可以得到结果。

DNS域名解析的次数和域名长度有关 

3.1递归查询

一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)

3.2迭代查询

一般情况下,本地的DNS服务器向其他DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询(需要自己手动)

3.3一次DNS解析的过程

假如我要访问www.baidu.com.服务器

1.首先看我本机的 /etc/hosts 文件,如果有的话直接访问,如果没有就去找你设置的缓存DNS服务器

2.如果缓存服务器有,直接反馈结果(递归)如果没有就需要迭代查询,直接去找根域服务

3.由于根域服务器只能解析根,无法解析www.baidu.com. ;但是,根域服务器会让你去找一级域服务器

4.一级域发现自己也解析不了,让你去找二级域

5.二级域发现这台服务器在自己的管理范围内,直接反馈结果给缓存服务器

6.缓存服务器再交给客户

4.DNS系统类型

4.1缓存域名服务器

  • 缓存域名服务器也称DNS高速缓存服务器
  • 通过向其他域名服务器查询获得域名→IP地址记录
  • 将域名查询结果缓存到本地,提高重复查询时的速度

4.2主域名服务器

  • 特定DNS区域的权威服务器,具有唯一性
  • 负责维护该区域内所有域名→IP地址的映射记录
  • 需要自行建立所负责区域的地址数据文件

4.3从域名服务器

  • 也称为辅助域名服务器,是对主域名服务器的热备份
  • 其维护的域名→IP地址记录来源于主域名服务器
  • 需要从主域名服务器自动同步区域地址数据库

权威DNS服务器,最后谁解析DNS,谁为权威服务器,最后解析成功的服务器为权威服务器

二、Bind(Berkeley Internet Name Daemon)

  • Bind是应用最广泛的DNS服务程序
  • 官方站点:https://www.isc.org/

DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns

  • bind:服务器
  • bind-libs:相关库
  • bind-utils: 客户端
  • bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/

1.搭建内网DNS服务器

实验目的:在内网服务器上可以使用域名进行上网

1.1安装bind软件包

安装bind的时候会自动生成一个名叫named的用户

安装完软件后   要找到两个东西 (1.配置文件位置  2.主程序的位置)

rpm -qc 可以找到配置文件的位置

rpm -ql可以找到主程序的位置

1.2修改DNS地址

 安装完软件后,要找到两个东西(1.配置文件位置;2主程序位置)

rpm -qc  #可以找到配置文件的位置

rpm -qc  #可以找到主程序的位置

其中,bind是安装包的名字,namde是程序的名字

named程序的主要文件:

/etc/named.conf  #主配置文件

/etc/named.rfc1912.zones  #子配置文件  域名配置文件

/var/named   #程序库文件 

启动named程序的话 会先读取主配置文件

然后读取include包含的子配置文件

1.3重启网卡

会出现如下报错

1.4再次ping百度地址

DNS解析使用的是TCP和UDP的53端口

1.5配置本机为DNS内网解析服务器

修改监听端口为任意;修改权限为任意 

1.6修改客户端配置

1.7验证

此时内网DNS服务器就搭好了

2.正向解析——通过域名解析IP地址

实验目的:在内网环境中,需要有一台自己的dns服务器,去解析内网的服务

2.1安装bind工具包——bind-utlis

2.2修改配置

2.3手写域名配置文件

vim /etc/named.rpc1912.zones

2.4手写配置文件

拷贝named.localhost例子,到cxk.com.zone

vim /var/named/cxk.com.zone

@:域名;

IN:使用Internet协议

SOA:这条配置的基本功能

A:正向解析(将域名转化为IP地址);PTR:反向解析(将IP地址转化为域名)

master:定义了谁是dns服务器

2.5开启named服务

2.6验证

使用dig来解析域名

显示www.cxk.com的地址是192.168.241.111

2.6.1检测命令

named-checkconf  主配置文件

named-chechconf  /etc/named.conf

named-checkzone  域名  数据库文件

named-checkzone cxk.com /var/named/cxk.com.zone

3.反向解析

3.1修改配置文件

vim /etc/named.rfc1912.zones

3.2检查主配置文件格式

3.3复制数据库文件进行修改

3.4重启dns服务

3.5修改配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33

3.6重启网卡

 

3.7测试

4.主从复制

4.1原理

4.2主从服务器一起配置

在Xshell中选择工具一栏,选择“发送键输入到所有会话”

关闭防火墙

4.3统一安装bind-utils

4.4修改主配置文件

4.5修改域名配置文件

4.6修改网卡配置——主从复制

4.7重启网卡 

4.8验证主服务器

4.9从服务器配置

4.10修改监听与权限配置

4.11修改从配置文件

4.212重启网卡验证从服务器

4.13关闭主服务器,测试从服务器

重启从服务器的dns服务 

4.14补充

5.分离解析

分离解析:一个服务器可以解析两个服务器地址

5.1安装工具包

5.2修改配置文件

 vim /etc/named.rfc1912.zones

5.3复制文件格式修改配置文件

 

5.4添加网卡

5.5复制且修改网卡配置信息

5.6设置Windows地址

6.CDN——内容分发网络

静态资源:不需要服务器二次处理的(图片、txt、视频)

动态资源:需要服务器二次处理的(java、Python、php)

状态代码:404错误、200正确、304缓存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1378393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PaddleSeg的训练与测试推理全流程(超级详细)

LeNet模型量化 参考文档一.下载项目地址:https://gitee.com/paddlepaddle/PaddleSeg/tree/release%2F2.5/特别注意下载版本: 二.paddlepaddle-gpu安装1.环境安装参考文档:https://gitee.com/paddlepaddle/PaddleSeg/blob/release/2.8/docs/in…

HCIP OSPF实验

任务: 1.使用三种解决ospf不规则区域的方法 2.路由器5、6、7、8、15使用mgre 3.使用各种优化 4.全网可达 5.保证更新安全 6.使用地址为172.16.0.0/16合理划分 7.每个路由器都有环回 拓扑图&IP划分如下: 第一步,配置IP&环回地址…

VUE---计算属性computed

概念: 基于 现有的数据 ,计算出来的 新属性 。 依赖 的数据变化, 自动 重新计算 。 语法: ① 声明在 computed 中,一个计算属性对应一个函数 ② 使用起来和普通属性一样使用 {{ 计算属性名 }},注意不…

window系统安装MySQL

一、下载 MySQL 官网在线下载: https://www.mysql.com/ 二、开始安装 2.1 安装类型选项 developer default(开发者默认):安装 mysql 开发所需的所有产品 server only(服务器):只安装 mysql 服…

最大公共子串

解题思路: 解题代码: UP主运用的方法很巧妙。厉害。

打架识别摄像机

随着社会治安问题的增加,打架事件在公共场所频繁发生,给社会治安带来了一定程度的威胁。因此,为了提高公共场所的安全性,可以利用现代科技,如人工智能和摄像技术,开发一种打架识别摄像机。 这种摄像机可以通…

js封装根据年月日获取星座效果demo(整理)

//根据年月日获取星座 function getZodiacSign(dateString) {// 用法:const dateStr 2024-01-11;// const zodiacSign getZodiacSign(dateStr);const date new Date(dateString);const month date.getMonth() 1;const day date.getDate();if ((month 1 && day &…

Rust-变量

Rust的变量必须先声明后使用。对于局部变量,最常见的声明语法为: let variable:i32 100;与传统的C/C语言相比,Rust的变量声明语法不同。这样设计主要有以下几个方面的考虑。 语法分析更容易 从语法分析的角度来说,Rust的变量声明…

Qt QGraphicsItem获取鼠标位置对应图像坐标

本次使用了QGraphicsView来加载图像,然后给其设置了一个QGraphicsScene场景,再给场景添加了一个自定义的QGraphicsItem,在其中重写了paint事件,用来重绘图像。 正常情况时,QGraphicsItem上图像的有效区域QRect大小和QG…

ChatGLM-6B使用、微调、训练

介绍 由清华大学知识工程 (KEG) 实验室和智谱AI公司与2023年共同训练的语言模型。ChatGLM-6B 参考了 ChatGPT 的设计思路,在千亿基座模型 GLM-130B 中注入了代码预训练,通过有监督微调等技术实现与人类意图对齐(即让机器的回答符合人类的期望…

Java LeetCode刷题 单调栈

单调栈 单调栈概念 每日温度 单调栈 概念 单调栈(Monotonic Stack)是一个特殊的数据结构,它是一种栈,但具有单调性的特性。单调栈有两种类型:单调递增栈和单调递减栈。 在单调递增栈中,栈内的元素保持递…

客户管理系统平台是什么?客户关系管理系统的核心主要解决哪些问题?

客户管理系统平台是什么?客户关系管理系统的核心主要解决哪些问题? 阅读本文你将了解:一、客户管理系统平台的概念;二、客户关系管理系统的核心。 一、客户管理系统平台的概念 客户管理系统是专门为做好客户信息收集、管理、分…

chromedriver 114以后版本下载地址

谷歌浏览器版本经常会升级,chromedriver 也得下载匹配的版本 chromedriver 114以前版本下载地址https://registry.npmmirror.com/binary.html?pathchromedriver/ 找到匹配浏览器版本 查看自己浏览器版本号v120.0 v120.0版本chromedriver下载地址https://google…

图灵机:计算机科学的奠基之作

图灵机的概念由英国数学家阿兰图灵在1936年提出,这个时期正是计算机科学的黎明时分。那个时候,人们还在使用机械计算器进行计算,而且这些计算器的功能都非常有限。 图灵提出这个概念的初衷,是为了解决所谓的“判定问题”&#xf…

gazebo模型库目录(国内源)

这个是比较普遍的,一般用途: GitCode - 开发者的代码家园https://gitcode.com/geniusChinaHN/osrf.gazebo_models/tree/master/ambulance这个主要是车辆: car_demo: osrf汽车模型库https://gitee.com/geniuschinahn/car_demo还有这个是以前…

(26)Linux 进程通信之共享内存(共享储存空间)

共享内存是System V版本的最后一个进程间通信方式。共享内存,顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一…

多无人机编队避障(人工势场法)

matlab2020正常运行,预设编队类型,目标位置,障碍物 多无人机编队避障(人工势场法)资源-CSDN文库

蓝桥杯单片机组备赛——蜂鸣器和继电器的基本控制

文章目录 一、蜂鸣器和继电器电路介绍二、题目与答案2.1 题目2.2 答案2.3 重点函数解析 一、蜂鸣器和继电器电路介绍 可以发现两个电路一端都接着VCC,所以我们只要给另一端接上低电平就可以让蜂鸣器和继电器进行工作。与操作LED类似,只不过换了一个74HC5…

SpringBoot 引入分页插件 PageHelper

官网 https://pagehelper.github.io/docs/howtouse/ 引入步骤 第1步&#xff1a;引入依赖 <!--分页插件--> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.2</ver…

适用于 Windows 的 12 个最佳免费磁盘分区管理器软件

分区是与其他部分分开的硬盘驱动器部分。它使您能够将硬盘划分为不同的逻辑部分。分区软件是一种工具&#xff0c;可帮助您执行基本选项&#xff0c;例如创建、调整大小和删除物理磁盘的分区。许多此类程序允许您更改磁盘片的标签以便于识别数据。 适用于 Windows 的 12 个最佳…