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

相关推荐
代码讲故事3 天前
子域提取工具,子域名收集神器,支持多种数据源和枚举选项,域名发现工具,可以为任何目标枚举海量的有效子域名,安全侦察工具,利用证书透明原则监控部署的新子域
网络·安全·证书·域名·提取·扫描·子域名
唯之为之4 天前
给网站设置三级域名
github·域名
SuperherRo1 个月前
基础入门-Web应用&架构搭建&域名源码&站库分离&MVC模型&解析受限&对应路径
架构·源码·域名·web·解析·路径
雪碧聊技术1 个月前
Java网络编程1 - 介绍网络编程、网络编程三要素
网络·域名·协议·ip·网络通信·ipv4·ipv6
剑痞2 个月前
注册了个域名Wordpress.cn.com
域名
中科三方3 个月前
网络安全宣传周 | DNS安全威胁与应对措施分享
dns解析
第四维度44 个月前
【IPV6从入门到起飞】3-域名解析动态IPV6(阿里云)
linux·python·阿里云·域名·ipv6
TANKING4 个月前
闲鱼卖2000元的带腾讯备案的 gaapqcloud.com.cn 域名低成本获取方法!
腾讯云·域名·备案
聚名网4 个月前
.fun是什么域名后缀?
域名
CSDN云计算4 个月前
阿里云万网推出首个域名AI大模型智能体应用,上线“.ai”等40个全新域名后缀
人工智能·阿里云·云计算·域名·万网