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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人工智能安全-3-噪声数据处理

0 提纲 噪声相关概述噪声处理的理论与方法基于数据清洗的噪声过滤主动式过滤噪声鲁棒模型1 噪声相关概述 噪声类型: 属性噪声:样本中某个属性的值存在噪声标签噪声:样本归属类别关于噪声分布的假设:均匀分布、高斯分布、泊松分布等。 标签噪声的产生原因: (1)特定类别…

【GEMM预备工作】行主序和列主序矩阵的内存中的连续性,解决理解问题

在内存存储中,默认矩阵是按照行优先储存的,即矩阵的每一列在内存中是连续的。行优先矩阵储存中行数据是不连续的。 而对于列主序的矩阵,是按照列优先储存的,即矩阵的每一行在内存中是连续的。列优先矩阵储存中列数据是不连续的&am…

ReentrantLock锁并发环境线程安全读写ArrayList,Kotlin

ReentrantLock锁并发环境线程安全读写ArrayList,Kotlin import kotlinx.coroutines.* import java.util.concurrent.locks.ReentrantLock import kotlin.collections.ArrayList/*** 假设这样一种场景:在多线程的并发环境中,不同的线程/协程对…

python在函数中更改外部变量值

目录 前言 列表、字典(可变对象) 元组(不可变对象) 全局变量 前言 今天在写LeetCode题时,发现一个问题我并没有掌握,那就是如何在Python的函数中更改变量值(包括列表,字典&…

使用自适应去噪在线顺序极限学习机预测飞机发动机剩余使用寿命(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

如何在终端设置代理(设置jupyter notebook同理)

设置代理 在终端(我用的gitbash)下执行 set HTTP_PROXYhttp://<user>:<password><proxy server>:<proxy port> set HTTPS_PROXYhttp://<user>:<password><proxy server>:<proxy port>其中&#xff1a; user、password&#…

环球数科、BUFFALO面试(部分)

环球数科 系统复杂且需求迭代频繁&#xff0c;如何维护微服务之间的接口调用关系&#xff1f; API接口在设计的时候需要大量的需求文档&#xff0c;而且文档也需要不断维护。如何高效维护API文档就很重要了。以下是一些常见的API管理工具&#xff1a;Swagger&#xff1a;Swag…

python机器学习(七)决策树(下) 特征工程、字典特征、文本特征、决策树算法API、可视化、解决回归问题

决策树算法 特征工程-特征提取 特征提取就是将任意数据转换为可用于机器学习的数字特征。计算机无法直接识别字符串&#xff0c;将字符串转换为机器可以读懂的数字特征&#xff0c;才能让计算机理解该字符串(特征)表达的意义。 主要分为&#xff1a;字典特征提取(特征离散化)…

zabbix监控mysql容器主从同步状态并告警钉钉/企业微信

前言&#xff1a;被监控的主机已经安装和配置mysql主从同步&#xff0c;和zabbix-agent插件。 mysql创建主从同步&#xff1a;http://t.csdn.cn/P4MYq centos安装zabbix-agent2&#xff1a;http://t.csdn.cn/fx74i mysql主从同步&#xff0c;主要监控这2个参数指标&#xf…

JavaScript 中的隐式类型转换

一、什么情况会发生隐式类型转换&#xff1f; 1、加号&#xff08;&#xff09; 号比较特殊&#xff0c;既可以当做算数运算符做加法&#xff0c;又可以当做字符串连接符 ① 算数运算符 除了 string 类型以外的原始数据类型进行加法运算时&#xff0c;非数字类型会转换为数字…

unity制作FPS射击游戏

文章目录 介绍鼠标移动控制视角行走、奔跑、跳跃、下蹲射击、后坐力、射速、瞄准、弹痕、枪火、抛壳手臂摇摆手枪切枪效果动画状态机玩家血量新地图场景颜色渐变激光墙获取钥匙滑动门NPC属性攻击逻辑终点传送门 介绍 角色动作方面包括行走、奔跑、跳跃、武器切换、弹夹更换、武…

科技引领,教育革新|EasyV助力数字孪生智慧教育建设!

数字孪生校园是以物联网、大数据、云计算、人工智能、三维可视化等新型数字化技术为基础&#xff0c;构建的数智校园的“大脑”。对校园的人、车、资产设施、各业务系统进行全联接&#xff0c;实现数据全融合、状态全可视、业务全可管、事件全可控&#xff0c;使校园更安全、更…

elasticSearch常见的面试题

常见的面试问题 描述使用场景 es集群架构3个节点&#xff0c;根据不同的服务创建不同的索引&#xff0c;根据日期和环境&#xff0c;平均每天递增60*2&#xff0c;大约60Gb的数据。 调优技巧 原文参考&#xff1a;干货 | BAT等一线大厂 Elasticsearch面试题解读 - 掘金 设计阶…

【《快速构建AI应用——AWS无服务器AI应用实战》——基于云的解决方案快速完成人工智能项目的指南】

基于云的人工智能服务可以自动完成客户服务、数据分析和财务报告等领域的各种劳动密集型任务。其秘诀在于运用预先构建的工具&#xff0c;例如用于图像分析的Amazon Rekognition或用于自然语言处理的AWS Comprehend。这样&#xff0c;就无须创建昂贵的定制软件系统。 《快速构…

PADS过孔操作

过孔须先在Layout内设置好类型&#xff0c;然后在“过孔配置”选项页将使用的过孔勾选。 2&#xff09;有多个过孔类型&#xff0c;可以先指定当前设计时使用的过孔类型。布线操作期间&#xff0c;右击在“过孔类型”选项内选择“通孔类过孔”或者“自动类过孔”&#xff0c;选…

探索产品项目管理软件的种类及功能

随着科技的不断发展&#xff0c;越来越多的企业开始重视产品项目管理的重要性。产品项目管理软件作为一种有效的工具&#xff0c;可以帮助企业更好地规划、执行和控制项目&#xff0c;提高项目的成功率。本文将分为两部分&#xff0c;分别介绍产品项目管理软件的功能以及一些知…

MySQL数据库安装(二)

夕阳留恋的不是黄昏&#xff0c;而是朝阳 上一章简单介绍了MySQL数据库概述(一), 如果没有看过, 请观看上一章 一. MySQL 卸载 一.一 停止MySQL服务 在卸载之前&#xff0c;先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键&#xff0c;打开“任务管理器”对话…

Ubuntu服务器ELK部署与实践

文章目录 1. Docker安装2. 拉镜象2.1 ElastciSearch2.2 Kibana2.3 logstash 3. 数据展示 1. Docker安装 看之前的文章 docker ubuntu完全卸载docker及再次安装 Ubuntu安装 Docker 此外&#xff0c;Docker偶尔会出现这种问题dial tcp: lookup registry-1.docker.io on 192.168.1…

React 之 Redux - 状态管理

一、前言 1. 纯函数 函数式编程中有一个非常重要的概念叫纯函数&#xff0c;JavaScript符合函数式编程的范式&#xff0c;所以也有纯函数的概念 确定的输入&#xff0c;一定会产生确定的输出 函数在执行过程中&#xff0c;不能产生副作用 2. 副作用 表示在执行一个函数时&a…

基于Java+SpringBoot+SpringCloud+Vue的智慧养老平台设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…