平常工做必备之DNS入门

前言

咱们平常访问么个网站或者么个服务时,必需要知道对方IP地址才能通讯。可是咱们通常很难记住哪一个IP地址对应的是哪一个服务。为了方便咱们区分哪一个IP对应的提供了什么服务,便发明了域名。咱们经过域名来访问咱们想要的网站,例如www.baidu.com。可是域名不是IP地址,前面咱们说想要上网须要指定具体的IP地址,这个时候就引入了咱们的主角DNS,他的做用就是解析IP地址和域名的对应关系。linux

域名

域名按照从右到左的顺序来划分层次结构,最右边的是最高级的根域,根域就是所谓的”.”,其实咱们的域名www.baidu.com在配置当中应该是www.baidu.com.(最后有一个点),通常咱们在浏览器里输入时会省略后面的点,浏览器会自动帮助咱们加上。接下来就是顶级域又称一级域,一级域以后还有二级、三级域。
如何区分当前域名是几级域,举个例子如:www.baidu.com
dns01.pngwindows

dns服务器

DNS服务器是能提供域名解析的服务器,域名每一层域都会有一堆域名(DNS)服务器,以上述案例www.baidu.com的为例:
dns02.png浏览器

根据域名服务器所起的做用,能够把域名服务器划分为如下四种不用的类型:
一、根域名服务器
根域名服务器是最高层次的域名服务器,全部根服务器都知道全部的顶级域名服务器的域名和IP地址,互联网上的根域名服务器只是用13个不一样IP地址的域名(注意不是13台机器,一个IP经过负载均衡有不少服务器提供服务)。
二、顶级域名服务器
这些域名服务器负责管理在该顶级域名服务器注册的全部二级域名。当收到DNS查询请求时,就给出相应的回答。
三、权威域名服务器
负责一个区域的服务器,例如上述中负责解析baidu的服务器就是权威服务器(只负责解析baidu的域)
四、本地域名服务器
咱们上网的时候为了提供查询速度通常会先访问本地域名服务器缓存

域名访问流程

假如咱们如今要访问www.baidu.com,流程如图所示:
dns05.png服务器

首先,浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,若是有,解析结束。
其次,若是浏览器缓存中没有(专业点叫还没命中),浏览器会检查操做系统缓存中有没有对应的已解析过的结果。而操做系统也有一个域名解析的过程。在windows中可经过c盘里一个叫hosts的文件来设置(C:\Windows\System32\drivers\etc\),若是你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。负载均衡

  1. 若是至此尚未命中域名,才会真正的请求本地域名服务器来解析这个域名,这台服务器通常在你的城市的某个角落,距离你不会很远,而且这台服务器的性能都很好,通常都会缓存域名解析结果,大约80%的域名解析到这里就完成了。
  2. 若是本地域名服务器仍然没有命中,就直接跳到根域名服务器请求解析
  3. 根域名服务器返回给本地域名服务器一个所查询域的顶级域名服务器(如.com .cn .org等)地址
  4. 此时本地域名服务器再发送请求给上一步返回的顶级域名服务器
  5. 接受请求的顶级域名服务器查找并返回baidu这个域名对应的权威域名服务器的地址,这个权威域名服务器就是www.baidu.com注册的域名服务器
  6. 权威域名服务器根据映射关系表找到目标ip,返回给本地域名服务器
  7. 本地域名服务器缓存这个域名和对应的ip
  8. 本地域名服务器把解析的结果返回给用户,域名解析过程至此结束

其中本机向本地域名服务器的查询通常称之为递归查询,本地域名服务器象根域名服务器等的查询称之为迭代查询。性能

清除dns缓存

在咱们平常工做中,若是频繁的修改本地host文件,会出现由于存在dns缓存,从而致使修改的host文件没有生效,不能正确的解析域名。清除缓存的方法以下:
dns06.png学习

//展现系统缓存的域名解析
ipconfig /displaydns
//清除系统缓存的域名解析
ipconfig /flushdns

dns其余概念

如图所示,用nslookup来查看域名www.163.com的解析状况:
dns07.png
SOA记录:
域权威记录,说明本机服务器为该域的管理服务器
图示案例由于访问的是本地dns服务器,因此显示非权威应答网站

A记录:又称正向解析记录
把域名解析为IPspa

PTR记录:又称反向解析记录
IP地址到域名的映射

cname记录:又称别名
和linux系统中命令的别名,简化命令是同样的做用
图示中的www.163.com.163jiasu.com和www.163.com.bsgslb.cn就是别名,访问这两个域名和访问www.163.com效果是同样的,即访问同一台机器(前提是服务端配置能容许访问这两个域名)

dns劫持

如今作个假设:假如攻击者劫持了DNS服务器,经过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,致使用户对该域名地址进行访问的时候,由原来的IP地址转入到修改后的IP地址。结果就是让正确的网址不能解析或者是被解析到另外一个网址的IP,实现获取用户资料或者破坏原有网址正常服务的目的。
dns08.png
你们试想一下,若是2.2.2.2这台服务器上的www.qq.com和qq官方的页面作的如出一辙(能够拷贝浏览器代码实现),那么咱们登陆QQ的时候,是否是就把本身的QQ账号和密码透露给了黑客呢?

好在及时黑客真的攻陷了本地dns服务器,影响的范围也只是使用该被攻击的dns服务器的群主,不会有大范围的影响(根域名dns服务器除外)。

解决办法:(本地DNS服务器都是运营商分配的)
一、直接用此IP代替域名后进行访问
二、手动指定信任的/没有被攻击的DNS服务器

结束语

这里只介绍了dns的工做常识,关于dns如何在linux上部署或者想更深刻学习dns(cdn相关的认识)的朋友能够参看书籍《DNS与BIND》

相关文章
相关标签/搜索