Linux系统——DNS解析详解

目录

一、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.hqwc.cn/news/343374.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-动态烟花【附完整源码】

烟花代码 运行效果:Python动态烟花代码 import pygame from random import randint from random import uniform from random import choice import math vector pygame.math.Vector2 # 重力变量 gravity vector(0, 0.3) # 控制窗口的大小 DISPLAY_WIDTH DISP…

《BackTrader量化交易图解》第10章:Trade 交易操作

文章目录 10 Trade 交易操作10.1 量化回测分析流程10.2 Cerebro 类模块10.3 案例:Trade 交易10.4 实盘交易机器隐性规则10.5 Stake 交易数额和 Trade 交易执行价格 10 Trade 交易操作 10.1 量化回测分析流程 从本章开始讲解 BackTrader 的实盘操作。前面的章节讲过…

SwiftUI 为任意视图加上徽章(Badge)而想到的(下)

概览 在 SwiftUI 为任意视图加上徽章(Badge)而想到的(上) 这篇文章中,我们讨论了如何使用 Preference 技术打造 SwiftUI 中任意视图上徽章的实现。 虽然,我们完成了一系列挑战最后基本得偿所愿,不过在上篇的实现中仍有些许不尽如人意之处。 在本篇博文中,您将学到如下…

java流程控制-给个一件三连呗!✨✨✨✨✨

接下来我们来看流程控制方面的知识 文章目录 1.Scanner类的使用1.1 使用next()进行接收1.2 nextLine()1.3 hasNext()1.4 scanner.nextInt() 2.选择结构2.1 if...else....语句2.2 if....else if....else...语句2.3 switch() case...语句 3.循环结构3.1for 循环:3.2w…

浅谈装配中的螺栓拧紧力矩——SunTorque智能扭矩系统

装配中的螺栓拧紧力矩是确保机械设备稳定运行的重要因素之一。在装配过程中,通过对螺栓拧紧力矩的合理控制,可以有效地提高螺栓连接的可靠性和耐久性,减少设备故障的发生。SunTorque智能扭矩系统从螺栓拧紧力矩的基本概念、影响因素以及如何选…

C桑(Cython)从入门到入土(2): np数组操作对比

C桑(Cython)从入门到入土 2. np数组操作对比 Node sc518 Copy has image data of type unsigned long long实际上, 👆🏻这个错误是我探索Cython的缘起… code1: Form: 更现代的方法是使用内存视图而不是指针: cdef np.uint32_t[:,:,::1] …

mysql基础操作

1.基础操作 1.1 启动服务 a.手动启动 我的电脑->右键->管理->服务->mysql->右键启动/启动 b.命令方式 在管理员模式下运行cmd,执行如下操作: net start mysql --启动服务 net stop mysql --关闭服务1.2 命令连接数据库(客户端连接数据…

STL之vector

目录 vector的定义和特性 vector的定义和结构非常简单,它由以下几个重要的部分组成: vector的常用函数 vector排序去重 排序 去重 代码示例 vector的定义和特性 在c中,vector是一个动态数组容器,可以存储一系列相同类型的…

深度解析:接口测试与功能测试的区别,精彩回答震撼心灵

软件测试的细分领域范围广泛。 很多人常常搞不清楚接口测试与功能测试之间的区别。 今天用一篇文章来讲清楚“接口测试与功能测试的区别及内存联系”。 接口测试和功能测试都属于软件测试的细分领域。 更准确的说,软件测试按大的方向分类分别为:功能…

如何用Mac工具制作“苹果高管形象照”

大伙儿最近有没有刷到“苹果高管形象照”风格,详细说来就是: 以苹果官网管理层简介页面中,各位高管形象照为模型,佐以磨皮、美白、高光等修图术,打造的看上去既有事业又有时间有氧的证件照,又称“苹…

对运放设计静态工作电压和求摆幅的理解

MOS的电压关系 在运放设计静态工作电压时要利用vod来确定,已知MOS的VTH,工作在饱和区,再假设管子的Vdsat,根据下式就能由G求S或由S求G: 上述关系可以用来确定电路的所有电压工作点,因为一旦Vod确定&#…

flask框架基本使用

一、使用pycharm创建项目 1.创建项目 2.调整默认终端 3.打开虚拟终端 打开终端可以看出使用的是p1的虚拟机终端了 4.pyCharm小技巧 在flask种输入一个完整并且存在的函数名称或者类明, 然后 Alt 回车,pycharm可以自动导包,不用在手动在代…