当前位置: 首页 > news >正文

DNS部署与安全详解(上)

文章目录

  • 一、DNS
  • 二、域名组成
    • 1. 域名组成概述
    • 2. 域名组成
  • 三、监听端口
  • 四、DNS解析种类
    • 1. 按照查询方式分类:
    • 2. 按照查询内容分类:
  • 五、DNS服务器搭建过程
    • 1. 先确保服务器的IP地址是固定的
    • 2. 安装DNS软件


一、DNS

  DNS全称Domain Name Service(域名服务),作用是为客户机提供域名解析服务

二、域名组成

1. 域名组成概述

  如“www.sina.com.cn”是一个域名,从严格意义上讲,“sina.com.cn”才被称为域名(全球唯一),而“www”是主机名
  “主机名.域名”称为完全限定域名(FQDN-Full Quality Domain Name)。讲到这里,有的小伙伴可能就纳闷了:主机名和域名有啥区别呢?而且域名不是都全球唯一了吗?怎么还要加个主机名呢?

在这里插入图片描述

  域名“sina.com.cn”是新浪公司花钱买的,买了之后,公司想为用户提供上网浏览新闻的服务,则又花钱买了一台服务器,这台服务器名字就命名叫“www”,然后绑定上买好的域名就可以为用户提供服务了。也就是说“www.sina.com.cn”其实指向的就是新浪公司的某一台具体的服务器,故而又称为“完全限定域名”,也就是完全可以精准限定到某一台服务器。后面公司又打算开展邮件收发业务,又买了台服务器,命名叫“mail”,域名肯定就不用再买了,继续用已经买的域名为用户提供服务,那这时候用户访问“mail.sina.com.cn”,其实就是访问新浪公司内部专门提供邮件服务的那台服务器。

  这里我们做个小实验,在控制台里面使用nslookup命令来查看该域名原本的IP地址 ,如下图所示:

在这里插入图片描述
在这里插入图片描述

  通过上述实验就可以看出:www.sina.com.cn 和 mail.sina.com.cn指向的两台不同的服务器。所以通俗的说,主机名就是公司内部的某台服务器名字,而域名是该公司对外的唯一标识。以“sina.com.cn”为例,一般管理员在命名其主机的时候会根据其主机的功能而命名。比如网站的是www,博客的是blog,论坛的是bbs,那么对应的FQDN为www.sina.com.cn,blog.sina.com.cn,bbs.sina.com.cn。虽然有多个FQDN,然而我们只需要申请一个域名即“sina.com.cn”即可。

在这里插入图片描述

2. 域名组成

  域名组成是树形结构,如下图所示:

在这里插入图片描述

  根域名是一个点 “.”,根域名下面叫顶级域名,也叫一级域名,如.com、.cn、.org等等,我们是买不了的。一级域名下面就是二级域名,如baidu、qq、taobao等等,再往下以此类推。如下示例所示:

如:www.baidu.com.
.为根域名
.com为顶级域
baidu为二级域名
www为主机名

  注意:www.baidu.com.,后面是有一个点“.”,这个点代表的就是根域名,但是我们一般不敲,是浏览器已经给我们敲了,这个点不能没有,代表世界顶尖的那个根服务器。这就代表我们正在访问全世界根下面的com结尾的下面的baidu下面的www那台主机。从世界定位到某个公司内部的某台主机。

FQDN=主机名.DNS后缀
FQDN(完整的域名)

三、监听端口

  DNS服务器的端口号是53,但是很特殊,既有TCP,又有UDP

TCP53
UDP53

四、DNS解析种类

  DNS服务器为客户机提供解析服务的种类有多种

1. 按照查询方式分类:

1. 递归查询:客户机与本地DNS服务器之间
2. 迭代查询:本地DNS服务器与根等其他DNS服务器的解析过程

在这里插入图片描述

  客户机寻求解析的过程:假如客户机现在要访问百度,输入www.baidu.com之后回车,会先看浏览器缓存,如果缓存中没有百度的解析记录,再看本机host文件,还没有,就寻求本地DNS服务器的帮助来解析,这里本地DNS服务器指的不一定是在本公司,而是给自己提供DNS解析服务最近的那台服务器,可能是在本公司,也可能是在当地城市,或者省会城市等。
  DNS服务器解析的过程:当客户机把解析请求给到本地DNS服务器之后,本地DNS服务器会查看自身所有域名对应IP信息。问题来了:这台DNS服务器上就一定会有www.baidu.com域名解析信息吗?不一定,因为全世界的域名信息有上亿个,一台服务器不可能包含所有的域名信息。假设本地DNS服务器中没有百度的域名信息,那他会寻求根域的帮助,如上图所示,根域收到请求后,会告诉他.com结尾的顶级域域名解析服务器的IP是多少,因为根域的下一级就是顶级域名,他必然知道自己的下一级是什么,在哪里,然后本地DNS服务器会去请求.com域名服务器,.com域名服务器会告诉他baidu.com域名服务器的IP地址,最后在请求baidu.com域名服务器,该域名服务器会把解析出来的www.baidu.com的真实IP地址给到本地DNS服务器,该服务器又把IP给到客户机,同时他会把这个IP也存入自己的缓存中,以便日后其他客户机再解析时直接可以给到。
  从上述两个过程就可以看出:客户机和本地DNS服务器之间是所问皆所答,也就是客户机要域名对应的真实IP,本地DNS服务器就会给到,这种关系也称递归查询本地DNS服务器与其他服务器之间是所问非所答,他需要逐级遍历请求,这种关系也称迭代查询

说明:全世界的根服务器只有13台,一台是主根服务器在美国,剩下12台是辅根服务器,其中9个在美国,2个在欧洲(位于英国和瑞典),1个在亚洲(位于日本)。

  对于本地DNS服务器来说,只要记住根服务器在哪里就可以。只要自己不知道的域名,都可以访问根服务器,继而找到答案。比如说,我们要把自己的电脑做成DNS服务器,那么从网上下载一个DNS软件,这个软件安装好之后一定内置了13个根服务器IP地址,当自己解析不了的时候,一定会去问根服务器
  很多公司因为业务需求的原因,需要在自己公司内部搭建一个DNS服务器,让公司员工直接指向内部的DNS服务器来解析上网域名。这个服务器称为本地DNS服务器,那么问题来了:我自己搭的服务器需要去找根服务器吗?当然是要的,任何服务器要做DNS解析都必须要找根服务器,也就说,如果公司员工要访问百度,用本地DNS服务器解析的时候,服务器必须要求助于根服务器,因为刚安装好的DNS服务器里面域名文件是空白的,每解析一次,DNS服务器就要去国外访问一次根服务器,而且需要多次迭代查询才可以找到百度。而且我们本地搭建的DNS服务器是轻量级服务器,这样频繁请求外部服务器对他而言很容易超负荷,那怎么办呢?
  工程师可以人为给本地DNS服务器加一个转发器,并且转发器指向的是我们当地的公网DNS服务器。这样的话,客户机如果访问百度,请求本地DNS服务器解析域名,本地DNS服务器会先查看缓存,自己如果有解析过百度,是有本地缓存的,如果没有,再看自己是不是负责解析baidu.com域名的服务器,如果也不是,这时候就不是把请求发给根服务器了,而是直接通过转发器甩给指向的那台的公网DNS服务器。转发器的工作原理就是递归查询,我把请求甩给公网DNS服务器,你只要给我结果就行,你那边没有,你自己请求根服务器,然后多次迭代去拿到最终结果给我就行,那我就轻松了。
  所以公司一般搭建好自己的DNS服务器之后,会让他通过转发器把解析请求转发给当地的公网DNS服务器,这样很大程度缓解本地DNS服务器的载荷压力

2. 按照查询内容分类:

  1. 正向解析:已知域名,解析IP地址
  2. 反向解析:已知IP地址,解析域名

  普通用户用的基本都是正向解析,防火墙会用到反向解析

五、DNS服务器搭建过程

1. 先确保服务器的IP地址是固定的

我们使用Windows server2003虚拟机作为要搭建DNS的服务器,先查看IP是否固定,步骤如下:

  1. 鼠标右键点击【网上邻居】,在弹出下来列表中点击【属性

在这里插入图片描述

  1. 鼠标右键点击【本地连接】,在弹出下来列表中点击【属性
    在这里插入图片描述
  2. 鼠标双击【Internet 协议(TCP/IP)
    在这里插入图片描述
  3. 可以看到是固定的IP地址,如果不是的要改为固定IP
    在这里插入图片描述

2. 安装DNS软件

安装DNS软件步骤如下:

  1. 在【我的电脑】里面,双击打开光驱
    在这里插入图片描述

  2. 选择【安装可选的 Windows 组件
    在这里插入图片描述

  3. 找到【网络服务】,然后双击打开
    在这里插入图片描述

  4. 勾选【域名系统(DNS)】,然后点击【确定】安装
    在这里插入图片描述

  5. 在安装DNS域名服务之前,我们先cmd进入控制台,输入命令:netstat -an查看当前所有开放的端口服务,如下图。发现还没有53端口号,因为还没有安装。
    在这里插入图片描述

  6. 然后回到刚才的DNS服务安装页面,勾选之后,点击确定,然后点击下一步,开始安装,安装过程中会弹出如下图所示窗口,并且会弹出两次。
    在这里插入图片描述

  7. 我们需要将D改为E,因为光驱是装在E盘的,改完之后,点击【确定】,需要改两次,然后确定,下一步
    在这里插入图片描述

  8. 安装成功之后,点击【完成
    在这里插入图片描述

  9. 鼠标点击左下角【开始】,点击【所有程序】,点击【管理工具】,就可以看到【DNS】软件已经在里面了
    在这里插入图片描述

  10. 然后再cmd进入黑色控制台,输入命令:netstat -an,回车就可以看到TCP和UDP的53号端口都已经打开了,证明DNS服务已经开启
    在这里插入图片描述

  至此,我这台电脑上的DNS服务就下载完成了,并且我这台电脑是可以正常上网的。员工本来是指向我们城市的公网DNS服务器解析域名上网的,然后我给某个员工说,你的IP、子网掩码都不用动,把DNS手动指向我的IP,请问他能不能上网呢?

在这里插入图片描述

  答案是可以上网的,给大家解释一下整个原理:我现在什么都没做,只是在电脑上安装了DNS软件,也就是打开了DNS服务。现在员工把请求发给我了,说想要访问百度,上面我也讲了服务器的解析过程,收到请求之后,先看本地有咩有百度的域名解析缓存?我是刚搭建的,肯定是没有,其次看我这台服务器是不是负责该类型域名的解析,我们没有给这台电脑指定让他解析哪方面的域名,没有做这方面的任何配置,所以肯定也不是负责这块解析的。如果都没有,那服务器会找转发器,我也没给这台服务器设置转发器,那就剩最后一个方法-找根服务器。我这台服务器是能上网的,也就是内置了13个根服务器的IP信息的,那就可以去国外找对应的根服务器去迭代解析,最终我是能够把百度解析出来的,并且给到客户机。
  其实我们把DNS软件装好之后,我们这台电脑就是一台真正的DNS服务器了,只是这种只安装了DNS软件的服务器,我们称之为:DNS缓存服务器。什么意思呢?也就是我这台服务器其实本身什么类型的解析都不负责,你问我什么域名,我就去根服务器逐级去解析,最后拿到解析后的结果返回给客户机,我一旦问的多了之后,我的本地缓存就会越来越多,而且缓存的时间可以设置的长点,当一段时间后,我把大家经常访问的域名都拿到之后。员工再访问我的时候,我就不用去互联网上找根服务器去问,就可以提高员工访问的速度。假设某天所在城市的公网DNS服务器瘫痪了,我照样可以为大家提供解析服务。所以我们只要把DNS服务软件装好之后,其实就已经是一台完整的DNS服务器了
  下一篇博客我会讲到,给这台DNS服务器进行后续的配置,让他可以真正意义上负责某一类型的域名解析,并进行验证,然后再做一些DNS劫持和转发器的实验。而且转发器是一定要会做,因为公司自己只要有DNS服务器,一定会用到转发器。

相关文章:

DNS部署与安全详解(上)

文章目录 一、DNS二、域名组成1. 域名组成概述2. 域名组成 三、监听端口四、DNS解析种类1. 按照查询方式分类:2. 按照查询内容分类: 五、DNS服务器搭建过程1. 先确保服务器的IP地址是固定的2. 安装DNS软件 一、DNS DNS全称Domain Name Service&#xff0…...

【51单片机】晨启科技,酷黑版,音乐播放器

四、音乐播放器 任务要求: 设计制作一个简易音乐播放器(通过手柄板上的蜂鸣器发声,播放2到4首音乐),同时LED模块闪烁,给人视、听觉美的感受。 评分细则: 按下播放按键A6开始播放音乐&#xff0…...

基于SPSSPRO实现层次分析法(AHP)

层次分析法,简称AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。(摘自百度百科) 层次分析法有着广泛使用,涉及到的平台也多种多样,今…...

Spring Test中使用MockMvc进行上传文件单元测试时,报NullPointerException

问题: MockMvc peform在集成测试中返回nullPointerException 原因: springboot-2.x版本以上,当你添加依赖spring_boot_starter_test后,可以在内部看到自带了jupiter测试核心模块,也就是 junit5,junit5&am…...

HTTP常用状态码及其含义

HTTP常用状态码及其含义 1XX:信息,服务器收到请求,需要请求者继续执行操 状态码状态码英文名称中文描述100Continue继续。客户端应继续其请求101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议&…...

FFmpeg中AVIOContext的使用

通过FFmpeg对视频进行编解码时,如果输入文件存在本机或通过USB摄像头、笔记本内置摄像头获取数据时,可通过avformat_open_input接口中的第二个参数直接指定即可。但如果待处理的视频数据存在于内存块中时,该如何指定,可通过FFmpeg…...

【react】react中BrowserRouter和HashRouter的区别:

文章目录 1.底层原理不一样:2.path衣现形式不一样3.刷新后对路山state参数的影响4.备注: HashRouter可以用于解决一些路径错误相关的问题 1.底层原理不一样: BrowserRouter使用的是H5的history API,不兼容IE9及以下版不。 HashRouter使用的是URL的哈希值。 2.path衣…...

机器学习常用Python库安装

机器学习常用Python库安装 作者日期版本说明Dog Tao2022.06.16V1.0开始建立文档 文章目录 机器学习常用Python库安装Anaconda简介使用镜像源配置 Pip简介镜像源配置 CUDAPytorch安装旧版本 TensorFlowGPU支持说明 DGL简介安装DGLLife RDKitscikit-multilearn Anaconda 简介 …...

HTTP 劫持、DNS 劫持与 XSS

HTTP 劫持、DNS 劫持与 XSS http 劫持是指攻击者在客户端和服务器之间同时建立了连接通道,通过某种方式,让客户端请求发送到自己的服务器,然后自己就拥有了控制响应内容的能力,从而给客户端展示错误的信息,比如在页面中…...

bash引用-Quoting详细介绍

bash引用-Quoting详细介绍 概述 引用的字面意思就是,用引号括住一个字符串。这可以保护字符串中的特殊字符不被shell或shell脚本重新解释或扩展。(如果一个字有不同于其字面意思的解释,它就是“特殊的”。例如:星号*除了本身代表*号以外还表…...

powershell几句话设置环境变量

设置环境变量比较繁琐,现在用这段话,在powershell中就可以轻松完成。 $existingPath [Environment]::GetEnvironmentVariable("Path", "Machine") $newPath "C:\Your\Path\Here"if ($existingPath -split ";"…...

Javascript 数据结构[入门]

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…...

IO(JavaEE初阶系列8)

目录 前言: 1.文件 1.1认识文件 1.2结构和目录 1.3文件路径 1.4文本文件vs二进制文件 2.文件系统的操作 2.1Java中操作文件 2.2File概述 2.2.1构造File对象 2.2.2File中的一些方法 3.文件内容的操作 3.1字节流 3.1.1InPutStream的使用方法 3.1.2OutPu…...

React Native 样式表的基础知识

在 React Native 中我们要使用组件元素进行样式设置的话,我们需要使用StyleSheet组件才能制定样式。useColorScheme是为 APP 定义颜色主题的。在此笔记中我们只是简单做一个介绍和使用。 使用StyleSheet定义样式 当我们要使用StyleSheet的话,我们需要引…...

【JS 解构赋值】

JS 解构赋值是 ES6 中一种简洁、高效的赋值方式,它可以将数组和对象中的值拆分出来并赋值给变量。 解构赋值 解构数组解构对象嵌套解构结语 解构数组 解构数组时,需要使用方括号 [] 包围变量名,并用逗号 , 将变量名隔开。 let [a, b, c] …...

Vue3状态管理库Pinia——自定义持久化插件

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...

il汇编整数相加

在这里尝试了IL汇编字符串连接; IL汇编字符串连接_bcbobo21cn的博客-CSDN博客 下面来看一下IL汇编整数相加; 大概的看一下一些资料,下面语句, ldc.i4 20 ldc.i4 30 add 看上去像是,装载整数20到一个类似于…...

RabbitMQ 事务

事务简介 就像我们了解的MySQL中的事务一样,RabbiMQ的事务也具备原子性和一致性,并且RabbiMQ的事务是针对消息从生产者发送到RabbitMQ中提供的支持,因此不同事务可以同时给同一个队列发送信息。   可通过channel.txSelect,chann…...

vue前端 让年月日 加上23:59:59

yyyy/MM/dd HH:mm:ss 格式 // 获取 lateCreateTime 的原始时间戳 const timestamp new Date(this.queryAO.lateCreateTime).getTime();// 将时间戳转换为指定格式的字符串 const formattedDateTime new Date(timestamp).toLocaleString("zh-CN", {year: "num…...

【雕爷学编程】Arduino动手做(186)---WeMos ESP32开发板8

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...

EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势

一、WebRTC与智能硬件整合趋势​ 随着物联网和实时通信需求的爆发式增长,WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能,对实时…...

RKNN开发环境搭建2-RKNN Model Zoo 环境搭建

目录 1.简介2.环境搭建2.1 启动 docker 环境2.2 安装依赖工具2.3 下载 RKNN Model Zoo2.4 RKNN模型转化2.5编译C++1.简介 RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程.   本…...

【Axure高保真原型】图片列表添加和删除图片

今天和大家分享图片列表添加和删除图片的原型模板,效果包括: 点击图片列表的加号可以显示图片选择器,选择里面的图片; 选择图片后点击添加按钮,可以将该图片添加到图片列表; 鼠标移入图片列表的图片&…...

FTPS、HTTPS、SMTPS以及WebSockets over TLS的概念及其应用场景

一、什么是FTPS? FTPS,英文全称File Transfer Protocol with support for Transport Layer Security (SSL/TLS),安全文件传输协议,是一种对常用的文件传输协议(FTP)添加传输层安全(TLS)和安全套接层(SSL)加密协议支持的扩展协议。…...

【RabbitMQ】- Channel和Delivery Tag机制

在 RabbitMQ 的消费者代码中,Channel 和 tag 参数的存在是为了实现消息确认机制(Acknowledgment)和精细化的消息控制。 Channel 参数 作用 Channel 是 AMQP 协议的核心操作接口,通过它可以直接与 RabbitMQ 交互: 手…...