DNS实践篇

通过前篇我们基本了解了DNS的整个协议原理,带着问题来进行接下来的。。。

1:为什么我想申请的域名都没了?

2DNS 域名还要备案,这是为什么啊?

3:如何将刚申请的域名绑定到自己的网站呢?

4:怎么才能看到那些在背后默默给我解析的域名服务器呢?

5:他们说用一个什么文件就可以访问好多好多不存在的网站,是真的吗?

6:可信任的域名服务器是怎么一回事,难道有些域名服务器会做坏事?

7:怎么知道我现在用的域名服务器有没有使坏呢?

 

1、域名注册、绑定

大多数时候我们希望去注册一个顶级域名(比如baidu.com, google.com等),那些二级域名毕竟不够好记(比如:vip09.youfen.com)。有的顶级域名(比如.tk域名)提供免费的一年域名试用,不过绝大多时候还是要为自己的域名付费的(一般是按年付费,也不是很贵)。

要想去注册域名,首先得找到域名注册商,国内的比较著名的阿里云(万网)DNSpod等,国外的有godaddy等。

接下来你可能会希望将自己的站点挂在自己选中的域名下,只需要找到一个提供域名解析的服务商,然后填写相应的域名解析记录。大多时候,你注册域名的服务商都会免费提供域名解析服务。

image.png

 

现在当我们访问 XXX 时,DNSpod就会将请求解析到提供的 IP 地址上。

 

2、域名解析

我们都知道一个域名的解析过程中,可能会有多台域名服务器给我们帮助,那么我们怎么能看到这些背后的功臣呢?先介绍两个常用的关于DNS的命令。

dig(Domain Information Groper)

查询 youfen.com A记录,并返回简短的结果:

image.png

dig 还可以查询某一 ip 对应的域名,如下:

 image.png

申请SSL证书时,需要填写txt记录,也可以来验证是否添加成功

_acme-challenge.youfen.com 配置一条 TXT 记录.

以阿里云上的域名为例,添加一条txt记录:

image.png

测试txt记录是否生效

 image.png


nslookup

……………………………………….

3、解析路径查询

接下来用 dig 命令查看从根域名到指定域名中间可能经过的所有域名服务器,使用 +trace 选项即可。

image.png

可以看到最开始是13台顶级域名服务器的NS记录,接下来是顶级域名 cpm. 的权威域名服务器,然后是 youfen.com  NS 记录,即 DNSpod 的两条 NS 记录,最后从 dns19.hichina.com 找到 youfen.com  A 记录。

seveas 提供了一个可视化的路径查询工具:dnsgraph,可以在线绘制跟域名到指定域名的所有可能路径。

当然,实际查询过程中,大多时候我们在本地缓存或者本地域名服务器缓存就能直接找到需要的域名记录,不需要每次都向根域名服务器发起请求,然后重复迭代或者递归查询过程。


4DNS缺陷

域名系统设计的很理想很美好,然而仍有一些小的瑕疵,可能会给我们带来些许困扰,首先,有些域名对注册人没有限制,而另外一些域名则对谁可以得到一个域名空间中名字有限制。比如pro域名是分配给合适的专业人员,但问题是谁才是专业的呢?显然医生、工程师是专业人员,但理发师、管道工呢?

此外,域名也可以被倒卖。黄牛们会批量注册大量域名(据说com域名下几乎每一个普通词都被人尝试注册了域名),然后转身就以高价转卖给那些对该域名感兴趣的人,这就是所谓的域名抢注。所以,现在你想注册一个符合自己网站特点的域名是很难的。

这个问题其实还不算严重,更要命的是下面两个问题。

 

5DNS劫持

我们知道一个域名服务器对其区域内的用户解析请求负责,但是并没有一个机制去监督它有没有真地负责。也就是说域名服务器的权力并没有被关在笼子里,所以它既可以认真地“为人民服务”,也可以指鹿为马。于是有些流氓的域名服务器故意更改一些域名的解析结果,将用户引向一个错误的目标地址。这就叫作 DNS 劫持,主要用来阻止用户访问某些特定的网站,或者是将用户引导到广告页面。

image.png

下面验证下我所用的域名服务器有没有干这种坏事,只需要一条简单的命令即可:

image.png

我们机房DNS服务器地址为10.6.0.1144,他告诉我proxy.tintop.cn的地址是10.6.0.9,然而这个IP并不是我解析的地址。因为机房使用了自己内部的DNS,其实就达到了DNS劫持的目的

针对DNS劫持,我们可以简单地更换域名服务器,比如使用Google提供的8.8.8.8。下面用 8.8.8.8 来解析一下 proxy.tintop.cn 就能看到正确的地址了。

image.png

 

6DNS欺骗

DNS 劫持通过简单的切换域名服务器就可以绕过,不过一旦你遇上了 DNS 欺骗,就无法简单地绕过了。下面我们用不同的域名服务器来查看 fb IP 地址,结果都返回了同一个地址,看起来好像是真的一样,不过也仅仅是看起来而已。

image.png

这个地址并不是 fb 的服务器地址

DNS 欺骗简单来说就是用一个假的 DNS 应答来欺骗用户计算机,让其相信这个假的地址,并且抛弃真正的 DNS 应答。在一台主机发出 DNS 请求后,它就开始等待应答,如果此时有一个看起来正确(拥有和DNS请求一样的序列号)的应答包,它就会信以为真,并且丢弃稍晚一点到达的应答。

image.png

实施 DNS 欺骗的关键在于伪造一个有特定序列号的应答包,并且让其抢先一步到达发起请求的主机。这对于个人来说还有点难度,但是对于拥有骨干网节点的组织来说,实在是易如反掌,所以这么多网站都已沦陷。不过使用网上流传的那些 hosts文件,就可以在本机缓存许多网站的ip地址,进而可以和部分网站通信。但是通过hosts文件并不能完全 Cross the Great FireWall,因为人家还有很多其他手段。

 

 


猜你喜欢

转载自blog.51cto.com/9473774/2645128