DNS服务
一.DNS介绍
DNS应用层协议
Domain Name System 域名系统
作用:实现域名解析,解析主机名所对应的IP地址,
在网络环境中设备与设备之间要想相互通信只能依赖IP地址,DNS服务器的作用是实现域名解析。
如上图所示,DNS存在的目的,就是机器给DNS服务器发送请求,然后获取京东网址的IP地址,然后机器进行数据封装,随后给京东机器通信。
自己构建一台DNS服务器的作用:正向解析(根据主机名,返回主机名机器的IP)反向解析(根据IP地址解析对应的主机名)。(做垃圾邮件过滤需要反向解析。)
DNS服务内部要有域名信息存在,才可以实现主机名解析成IP地址的功能,每一条信息称之为一条记录,面对海量的互联网主机名对应的IP信息肯定不能每一条信息都记录,就算机器能存下所有的信息也会影响搜索效率。
如果只让一台DNS服务器来解析主机名,会大幅度地拖慢机器的搜索效率。
解决方案主要采用分层的思想,
不同级别的DNS服务器干不同的事情,
如上图所示,是DNS服务器的域名结构,比如www.baidu.com中的com是一级域名,baidu是二级域名,www是百度自己在baidu.com这个域名中的一个名称而已,完成的主机名结构应该是www.baidu.com.只不过最后的一个点从来不写,
不同的机器干不同事情其作用就是用来缓解DNS服务器的压力。
二.DNS核心概念
1.区域 zone
创建区域,一般这个区域就是二级域名,
linux.com创建好之后就意为着我们告诉这台DNS服务器你要去负责解析linux.com结尾的所有主机名,如果又创建了一个域名,a.rog也就是告诉机器将来你要去解析a.org结尾的所有主机名,
正向区域:本质上就是一个二级域名,比如linux.com就相当于是告诉服务器来说你要去负责解析linux.com的所有域名,(即解析主机名所对应的IP地址是什么。)
反向区域:不是必须的,只有希望DNS服务器实现反向解析功能的时候,才需要创建反向区域,并且反向区域的名称格式就是x.x.x.in-addr.arpa
前面这三个数字就是IP地址的前三位数字位置倒过来写的,
比如1.168.192.in-addr.arpa这个反向区域的作用就是将来DNS服务器要负责解析IP地址是192.168.1开头的所有IP地址,将这个些IP地址对应的主机名返回。
2.记录 record
即将来的DNS服务器能够解析那些主机名就需要我们事先将主机名所对应的IP地址写进DNS服务器中,这样的一行信息称之为是一条记录。
常见的记录类型
1.A记录
主要是用来记录主机名,IP地址的对应关系的,
www.baidu.com A 1.1.1.1
即记录某一个主机名所对应的IP地址的。
2.PTR记录
反向指针记录,
用来记录IP地址,主机名的对应关系
1.1.1.1 PTR www.baidu.com
当DNS服务器需要所反向解析的时候,才需要PTR记录。
3.NS记录
用来标识某一个主机名所对应的服务器是DNS服务器,
NS test1.linux.com.
NS的作用是用来标识在网络中有一台DNS服务器,这台DNS服务器的主机名叫做test1.linux.com
NS记录不能单独存在,NS记录必须要跟A记录一起使用。
即NS test1.linux.com.
test1.linux.com. A 2.2.2.2
4.MX记录
用来标识邮件服务器的,MX 5 mail01.linux.com.
后面的mail01.linux.com.主机名代表的是一台邮件服务器,
在公司内部安全需求高的是不允许使用其他的邮件软件来发送邮件,都是使用公司内部的邮件服务器,此时收发邮件都是通过公司内部的邮件服务器来收发。
这个MX记录用的时候,也需要搭配A记录一起使用。
即先写MX 5 mail01.linux.com
mail01.linux.com. A 4.4.4.4
如果公司内部没有邮件服务器那么这个MX记录就用不到。
其中数字5标识这个邮件服务器的优先级,数字越小,优先级越高,优先级越高,其他客户端越会首先使用数字小的邮件服务器来收发邮件。
MX 10 mail02.linux.com
mail02.linux.com. A 5.5.5.5
数字越小优先级越高,
5.CNAME记录
中文叫做别名记录
给主机名起别名的,
也就是说,给主机名起一个别名,
如上图所示,比如www.baidu.com是www.a.shifen.com的别名,这样是为了好记。
给一个主机名起别名的时候可以起多个别名,但是没有必要啊。
书写形式如上。
3.DNS的查询类型
1.递归查询
指的是客户端只需要发送一次查询请求就可以获取结果。
2.迭代查询(实现迭代查询的前提是这台DNS服务器可以正常上网。)
指的是客户端需要发送多次查询请求才可以获取结果。
三.DNS的部署即DNS在Linux上的实现
软件:bind,bind-chroot
严格意思上说bind-chroot可以不安装,但是建议安装,为了增强DNS服务的安全性,
bind的配置文件都在/etc/保存着。
bind-chroot会给DNS进程生成一个伪根目录,即/var/named/chroot将来所有的配置都在这个为根目录下的配置文件书写。
也就是说把DNS服务的权限被限制在了伪根目录下,将来有一天这个DNS服务器被攻破了哪怕攻击者获取到了DNS服务器的运行权限也只能在这个伪根目录下进行操作,真正的重要的信息根本无法获取。
DNS经常被人攻破,要注意保护信息。
配置文件:伪根目录来说,
主配置文件:/var/named/chroot/etc/named.conf主要作用是用来定义区域,即正向区域还是反向区域,以及这个区域名称是什么。
记录文件:/var/named/chroot/var/named/*主要作用是用来写记录信息的。
搭建DNS服务器就是两件事创建区域,编写记录。
存放记录信息的文件名称可以随意。
但是
named.conf主配置文件:
定义区域:linux.com
记录文件:linux.com.zone
记录文件:/var/named/chroot/var/named/linux.com.zone
服务:named,named-chroot
端口:53/udp
四.配置DNS实现正向解析
需求实现:员工可以根据公司内部的DNS服务器实现主机名向IP地址转化的正向解析,
web.linux.com 192.168.1.1
ftp.linux.com 192.168.1.2
mail.linux.com 192.168.1.3
ns01.linux.com 192.168.183.10
如上图所示,创建区域,并且这个区域名称是linux.com
负责解析linux.com结尾的所有主机名,
1.关闭防火墙,SELinux,确保机器的时间一致
2.安装DNS相关软件
如上图所示,安装DNS所需要的软件,
3.编辑named.conf主配置文件,创建区域
如上图所示,在伪根目录下去创建这个主配置文件,
如上图所示,第一个文件路径表示的是记录文件的存放位置,
这个目录实际标识的是/var/named/chroot/var/named
如上图所示,第二个文件路径表示的是创建区域的名称,这个区域都是二级区域,
type master;表示的是这个区域是主区域,也就是说这个区域中记录信息可以根据自己的需要,随意添加修改记录信息。
也可以把区域类型修改为从区域,并且这个区域中的记录信息,都是不能直接操作的。需要从主区域来修改从区域中的内容。
文件名指定的就是区域的记录文件名称。
4.复制记录文件模板named.local host
如上图所示,就是记录文件模板,
5.添加记录信息
写管理员邮箱地址的时候把@改成点.
如上图所示,就是DNS服务器的记录文件。
6.记录named服务
如上图所示,启动DNS服务,并且配置DNS服务开机自启动。
如上图所示,通过查看进程以及查看DNS产生的UDP协议的端口号来验证DNS服务器是否启动成功。
7.检测DNS是否能够正向解析,即能否将主机名转化成IP地址
(测试DNS服务是否能够正常工作。)可以通过工具nslookup
如上图所示,指定需要哪个DNS服务器来解析主机名,
如上图所示,这时主机名解析正常。
随后exit退出即可。
DNS服务器的作用就只是解析这个主机名所对应的IP地址,但是这个机器能不能跟这个IP地址通信,跟这个DNS服务器没有关系。
五.配置DNS实现反向解析(如果要配置DNS服务器实现反向解析,必须要保证DNS的正向解析是正常的,需要在正向解析的基础上去进行反向解析。)
如上图所示,这个切换机器DNS服务器地址的行为只是临时的指定当退出这个nslookup软件的时候,DNS服务器指定的功能就失效了。
那么如何让其他机器使用你构建的DNS服务器的主机名呢?
如上图所示,可以把网卡的DNS服务器的地址修改为搭建的DNS服务器的IP地址,此时DNS在其他机器上能够成功生效。
如上图所示,就算是自己搭建的DNS服务器也可以去解析一些记录文件中没有的主机名,这里DNS服务器主要使用的是迭代查询。
这里的非权威应答是说的使用的是迭代查询。
当然DNS服务器能够使用迭代查询的条件是能上网。
如上图所示,此时要求DNS服务器进行反向解析是失败的。
如果想要DNS能够做反向解析的话,就要求有反向区域,并且有对应的记录
1.编辑named.conf主配置文件,添加反向区域
创建反向区域解析IP地址所对应的主机名
如上图所示,因为这三个机器的IP地址前三位一样所以只要创建一个反向区域就可以了。
如上图所示,就是在DNS的主配置文件中所创建的反向区域。以及反向区域的记录文件名称。
2.添加反向区域对应的记录文件
如上图所示,首先复制记录文件的模板。
随后去修改这个复制的记录文件中的内容。
如上图所示,就是这个反向区域的记录文件中的内容。
3.重启DNS服务,测试
如上图所示,此时将机器的DNS指定为创建的DNS服务器地址,就可以实现反向解析了。
六.hosts文件的使用
一个客户端想获知一个主机名所对应的IP,除了有对应的DNS服务器之外还有另外的方式。
客户端系统内部有一个文件hosts,这个文件是用来记录某IP地址和主机名之间的关系的,先找的是hosts文件,找不到的话然后再找的是DNS服务器,
这就是在windows系统上用来保存IP地址和主机名对应关系的文件。
如上图所示,如果想修改这个文件的内容需要把这个文件拖到桌面上,然后以记事本形式打开,随后前面是IP地址,后面是这个IP地址所对应的主机名。
随后保存,随后将原来的hosts文件替换即可。
相关文章:

DNS服务
一.DNS介绍 DNS应用层协议 Domain Name System 域名系统 作用:实现域名解析,解析主机名所对应的IP地址, 在网络环境中设备与设备之间要想相互通信只能依赖IP地址,DNS服务器的作用是实现域名解析。 如上图所示,DNS存…...

STM32 HAL freertos零基础(九)任务通知
1、任务通知 任务通知用于任务之间同步和通信。任务通知允许一个任务向另一个任务发送一个32位的值,并可以选择是否唤醒正在等待通知的任务。这使得任务之间的同步更加简单和灵活。 任务通知功能: 发送通知:一个任务可以向另一个任务发送一个32位的值。 接收通知:接收任…...

Qt+FFmpeg开发视频播放器笔记(三):音视频流解析封装
音频解析 音频解码是指将压缩的音频数据转换为可以再生的PCM(脉冲编码调制)数据的过程。 FFmpeg音频解码的基本步骤如下: 初始化FFmpeg解码器(4.0版本后可省略): 调用av_register_all()初始化编解码器。 调用avcodec_register_all()注册所有编解码器。 打开输入的音频流:…...

从黎巴嫩电子通信设备爆炸看如何防范网络电子袭击
引言: 在当今数字化时代,电子通信设备已成为我们日常生活中不可或缺的一部分。然而,近期黎巴嫩发生的电子设备爆炸事件提醒我们,这些设备也可能成为危险的武器。本文将深入探讨电子袭击的原理、防范措施,以及网络智能…...

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL16
使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器 描述 ②请使用2片该优先编码器Ⅰ及必要的逻辑电路实现16线-4线优先编码器。优先编码器Ⅰ的真值表和代码已给出。 可将优先编码器Ⅰ的代码添加到本题答案中,并例化。 优先编码器Ⅰ的代码如下: module…...

12 - TCPServer实验
在上一章节中,我们学习了TCPClient通信测试的相关知识。接下来,本章节将以此为基础,构建一个基础性的TCPServer连接机制,该机制将利用之前所建立的WIFI网络连接。为方便演示,我们将借助网络调试助手工具进行数据的发送…...

Explain执行计划
Explain执行计划 explain可以帮助开发人员分析SQL问题,explain用于显示MySQL如何使用SQL执行计划,可以帮助开发人员写出更优化的查询语句。使用方法就是在查询语句前加上explain关键字。 执行添加上explain关键字的语句可以看到一个列表: 其…...

ARM/Linux嵌入式面经(三六):中科曙光
文章目录 1.AD转换,怎么在项目中运用2.项目中的通信网络介绍一下通信网络介绍1. 通信网络类型2. 通信网络特点3. 应用场景4. 关键技术5. 项目中的具体应用和实现方式模拟面试官追问3.socketSocket介绍深度拓展与追问深度拓展可能的追问4.进程间通信方式进程间通信方式介绍总结…...

Python和C++气候模型算法模型气候学模拟和统计学数据可视化及指标评估
🎯要点 贝叶斯推理气候模型辐射对流及干湿能量平衡模型时间空间气象变化预测模型评估统计指标气象预测数据变换天气和气象变化长短期影响预估降低气候信息尺度评估算法气象行为模拟:碳循环、辐射强迫和温度响应温室气体排放碳循环温室诱导气候变化评估气…...

鸿蒙开发城市联动选择弹框
鸿蒙开发城市联动选择弹框 城市联动选择弹框不容易,在Android那边也是不容易。选择某个省份时,城市要对得上,切换得及时 一、思路: 关键用Provide和Consume互相监听对方的变化 二、效果图: 三、视频效果࿱…...

css 控制虚线刻度尺寸
文章目录 css效果 css <div style"width: 100%; height: 1px;background-image: linear-gradient(to right, #545454 0%, #545454 80%, transparent 5%);background-size: 15px 10px;background-repeat: repeat-x; margin: 0 auto;"></div>效果...

NLP三天入门大模型,我领先你好几个版本了
大模型时代下,nlp初学者需要怎么入门? 入门姿势简单粗暴:打一些必要的基础就跑步进入Transformera 大模型时代,传统的算法,像分词、词性标注,被替代得非常厉害,在入门阶段没必要花费太多精力在传统算法上面。 数学和…...

专题六_模拟_算法详细总结
目录 模拟算法 1.模拟算法流程(一定要在草稿纸上演算一遍流程) 2.把流程转换成代码 1. 替换所有的问号(easy) 解析: 1.暴力: 2.优化:(找规律) 总结: …...

ArrayList的扩容机制
ArrayList的扩容机制 ArrayList中的成员变量:1.不带参数的构造方法 让elementDate 引用指向 DEFAULTCAPACITY_EMPTY_ELEMENTDATA所指向的对象 > 当我们调用 不带参数的构造方法的时候 第一次进行add元素的时候,会为底层的数组 进行内存的分配&…...

一、编译原理(引论)
目录 【一】、引论 一、编译器 1、编译器 2、编译器与解释器 3、编译器结构 【一】、引论 一、编译器 1、编译器 (1)编译器:将人类易懂的 高级语言 翻译成 硬件可执行的目标机器语言 (2) 高级语言 ⚫ 直接面…...

【Javascript修炼篇】JS中的函数式编程
介绍: 函数式编程(FP)是一种编程范式,这意味着一种基于一些原则来思考软件构建的方法,比如 纯函数、不可变性、一等与高阶函数、函数组合、闭包、声明式编程、递归、引用透明性、柯里化 和 部分应用。 当这些原则有效…...

spring cxf 常用注解
在Spring框架中,特别是当与Apache CXF(一个流行的SOAP和RESTful Web服务框架)结合使用时,我们会遇到一系列的注解。以下是一些在Spring和CXF中常用的注解: Spring相关注解: Component:用于定义一…...

python | x-y 网格切片
写在前面 通常, 我们处理的毕竟完善的nc产品,一般呈现未timexlatxlon的维度,且lon和lat都是规则的网格,我们可以方便的使用xarray.sel()选择合适的区域进行切片。但是,部分nc产品比如卫星轨道或者模式输出的数据&…...

【C#】vs2022 .net8
Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com) 更新就会出现...

【华为杯】第二十一届中国研究生数学建模竞赛
“华为杯”第二十一届中国研究生数学建模竞赛即将开始,梦想科研社给大家整理一些比赛信息,在正式开赛后,我们也会持续分享一些课题的分析以及代码,有需要的可以联系我们获取资料信息哦 一、时间节点 1.加密赛题开始下载时间&…...

首次开机android.intent.action.BOOT_COMPLETED开机广播发送慢的问题
1. 背景 做过android开发的同学相信一定做个这种逻辑:app接收BOOT_COMPLETED开机广播,自启动,或者收到广播做一些事情。目前在我们的项目上遇到首次开机,BOOT_COMPLETED开机广播发送慢的问题。接下来分享记录下如何定位这类问题。 2. 分析过…...

通信工程学习:什么是OLT光线路终端
OLT:光线路终端 OLT(Optical Line Terminal,光线路终端)是光纤通信系统中的核心局端设备,特别是在无源光网络(Passive Optical Network, PON)架构中扮演着至关重要的角色。以下是关于OLT光线路终…...

Unity的Button组件进行扩展
废话不多说,在Untiy中,如果想要对Button等组件进行扩展的话,那么不仅仅只需要将新增的属性设置为public或者增加SerializeField字段就行了的,同时需要对Inspector的GUI面板进行修改,以下直接展示代码: usi…...

前端vue-插值表达式和v-html的区别
创建vue实例的时候,可以有两种形式。 1.let appnew Vue({}) 2 const appnew Vue({}) 3 el是挂载点,是上面div的id值 4 data中的值可以展示在上面div中 5 v-html标签里面如果有内容,则我们的新内容会把标签里面的内容覆盖掉...

【开发心得】筑梦上海:项目风云录(4)
不知不觉已经写到了第4篇,天下大事,必作于细。 其实项目管理也是如此,成功都在细节之处。自从博士离开以后,项目逐步开始进入了正常轨道。来来回回的30多人,也不能一一列举的记流水账。 目录 会海和MSN 小娇往事 …...

el-table使用el-switch选择器没效果
出现问题的代码: 0表示启用,1表示禁用,发现页面根本没有效果,百思不得其解,查阅资料,恍然大悟。 <el-table :data"userList" stripe border style"width: 100%" height"500"><…...

libserailport交叉编译适配说明
1:libserialport简介 github路径 自己的gitee路径 libserialport 是一个跨平台的串口通信库,由 sigrok 项目开发。它简洁、易用,并且支持多种操作系统。 libserialport 支持阻塞和非阻塞模式,可以根据你的需求选择适当的模式。阻…...

C语言中的一些小知识(二)
一、"%"运算符两侧只能是整数 在C语言中,% 运算符称为模运算符或取余运算符,它用于计算两个整数相除后的余数。当使用 % 运算符时,操作数必须是整数类型(包括 char、int、long 等)。 语法 remainder div…...

使用 Go 语言实现简单聊天系统
在互联网时代,聊天系统是常见的应用场景之一。无论是即时通讯、在线客服还是多人游戏中的消息系统,聊天功能的实现都是必不可少的。本文将使用 Go 语言,结合 WebSocket 来构建一个简单的多人聊天室系统。 一、项目结构 首先,我们…...

用友U8二次开发工具KK-FULL-*****-EFWeb使用方法
1、安装: 下一步,下一步即可。弹出黑框不要关闭,让其自动执行并关闭。 2、服务配置: 输入服务器IP地址,选择U8数据源,输入U8用户名及账号,U8登录日期勾选系统日期。测试参数有效性,提示测试通过…...