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服务器,一定会用到转发器。

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

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

相关文章

pycharm打开terminal报错

Pycharm打开终端报错如何解决?估计是终端启动conda不顺利,需要重新设置路径。参考以下文章的做法即可。 Windows下Pycharm中Terminal无法进入conda环境和Python Console 不能使用 给pycharm中Terminal 添加新的shell,才可以使用conda环境 W…

前端安全XSS和CSRF讲解

文章目录 XSSXSS攻击原理常见的攻击方式预防措施 CSRFCSRF攻击原理常见攻击情景预防措施: CSRF和XSS的区别 XSS 全称Cross Site Scripting,名为跨站脚本攻击。为啥不是单词第一个字母组合CSS,大概率与样式名称css进行区分。 XSS攻击原理 不…

Vue缓存字典值减少网络请求次数,解决同样参数并发请求多次

前言 在一些项目里,我们可能有着大量的下拉框,而这些下拉框的数据就来源于我们后端接口返回的字典信息。于是,画风可能是这样的,每次下拉,你都需要请求一次字典接口拿到这些数据,于是每次组件刷新都会重复…

Android平台一对一音视频通话方案对比:WebRTC VS RTMP VS RTSP

一对一音视频通话使用场景 一对一音视频通话都需要稳定、清晰和流畅,以确保良好的用户体验,常用的使用场景如下: 社交应用:社交应用是一种常见的使用场景,用户可以通过音视频通话进行面对面的交流;在线教…

分享kubernetes部署:基于Ansible自动安装kubernetes

基于Ansible自动安装kubernetes 环境准备 我们以如下机器环境为例: 开放端口: 控制平面节点 工作节点 请按如上中规定的开放端口,或关闭防火墙: systemctlstopfirewalld&&\ systemctldisablefirewalld 安装常用工具 sudo…

PPT忘记密码如何解除?

PPT文件所带有的两种加密方式,打开密码以及修改权限,两种密码在打开文件的时候都会有相应的提示,但不同的是两种加密忘记密码之后是不同的。 如果忘记了打开密码,我们就没办法打开PPT文件了;如果是忘记了修改密码&…

Android 版本 对应的 API版本

Android 14(开发者预览版) 如需详细了解平台变更,请参阅 Android 14 文档。 Android 13(API 级别 33) 如需详细了解平台变更,请参阅 Android 13 文档。 Android 12(API 级别 31、32&#xf…

【云原生】Docker-Compose全方面学习

目录 1.compose简介 Compose V2 2.compose安装与下载 二进制包 PIP 安装 bash 补全命令 卸载 3.docker compose管理命令 命令对象与格式 命令选项 命令使用说明 1.compose简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可…

【音视频】edge与chrome在性能上的比较

目录 结论先说 实验 结论 实验机器的cpu配置 用EDGE拉九路​编辑 google拉五路就拉不出来了 资源使用情况 edge报错​编辑 如果服务器端 性能也满 了,就会不回复;验证方式 手动敲 8081,不回应。 结论先说 实验 用chrome先拉九路&#…

k8s概念-pv和pvc

回到目录 kubernetes存储卷的分类太丰富了,每种类型都要写相应的接口与参数才行,这就让维护与管理难度加大。 persistenvolume(PV) 是配置好的一段存储(可以是任意类型的存储卷) 也就是说将网络存储共享出来,配置定义成PV。 PersistentVolumeClaim(PVC)是用户pod使…

使用隧道HTTP时如何解决网站验证码的问题?

使用代理时,有时候会遇到网站验证码的问题。验证码是为了防止机器人访问或恶意行为而设置的一种验证机制。当使用代理时,由于请求的源IP地址被更改,可能会触发网站的验证码机制。以下是解决网站验证码问题的几种方法: 1. 使用高匿…

APP开发中的性能优化:提升用户满意度的关键

APP开发中的性能优化是需要持续进行的,它不仅能够让用户体验到 APP的使用感受,还能在一定程度上提升用户的满意度,从而提升 APP的粘性和转化率。不过在实际开发中,很多 APP开发公司会存在性能优化上的问题,这就需要了解…

IP提取器对比器

需求: 一个html 页面 ,有两个输入框 第一个输入框输入文本中包含多个ip,输入的ip是不规则的,需要使用正则表达式提取出 输入文本的ip地址 , 然后在第二个输入框中输入内容,并提取出内容的ip ,如…

Vue基于php医院预约挂号系统_6nrhh

随着信息时代的来临,过去的管理方式缺点逐渐暴露,对过去的医院预约挂号管理方式的缺点进行分析,采取计算机方式构建医院预约挂号系统。本文通过阅读相关文献,研究国内外相关技术,开发并设计一款医院预约挂号系统的构建…

【Linux命令行与Shell脚本编程】第十六章 Shell函数

Linux命令行与Shell脚本编程 第一章 文章目录 Linux命令行与Shell脚本编程六.函数6.1.脚本函数基础6.1.1.创建函数6.1.2.使用函数 6.2.函数返回值6.2.1.默认的退出状态码6.2.2.使用return命令6.2.3.使用函数输出 6.3.函数中使用变量6.3.1.向函数传递参数6.3.2.在函数中处理变量…

OLED透明屏拼缝技术:创新的显示解决方案

引言:OLED透明屏作为一种创新的显示技术,已经在各个领域展现出了巨大的潜力。而其中的拼缝技术更是为OLED透明屏的应用带来了全新的可能性。 对此,尼伽便大家具体介绍一下OLED透明屏拼缝技术的概念、优势以及应用领域,并探讨其在…

JVM之类加载与字节码(二)

3. 编译期处理 什么是语法糖 所谓的 语法糖 ,其实就是指 java 编译器把 *.java 源码编译为 *.class 字节码的过程中,自动生成 和转换的一些代码,主要是为了减轻程序员的负担,算是 java 编译器给我们的一个额外福利(给…

C高级 作业 day4 8/7

1.整理思维导图 2.写一个函数&#xff0c;获取用户的uid和gid并使用变量接收 3.整理冒泡排序、选择排序和快速排序的代码 冒泡排序 //冒泡排序 void bubble_sort(int a[],int len) {int count0;for(int i1;i<len;i) //控制轮数{for(int j0;j<len-i;j) //控制每一轮交换…

flex 弹性布局

Flex 布局的使用 任何一个容器都可以指定为 Flex 布局。 .box{ display: flex; //flex作为display的一个属性使用 } 行内元素也可以使用 Flex 布局。 .box{ display: inline-flex; } 注意&#xff1a;设为 Flex 布局以后&#xff0c;子元素的float、clear和vertical-align…

Java_理解方法调用

理解方法调用 首先什么是隐式参数 --->隐式参数是调用该方法的对象本身。 接下来方法的名称和参数列表被称为方法的签名&#xff08;signature&#xff09;。在Java中&#xff0c;方法的签名由方法的名称和参数列表组成&#xff0c;用于唯一标识一个方法。返回类型不是签名的…