DNS的备忘

最近稍微深入的了解了一下DNS,本文记录过程中的一些知识点作为备注。
1. 权威应答or非权威应答
在用nslookup来查询域名的DNS时有时候会出现“Non-authoritative answer“的情况。其现象如下:

lxg@lxg-ThinkPad-X240:~$ nslookup baidu.com
Server:     127.0.1.1
Address:    127.0.1.1#53

Non-authoritative answer:
Name:   baidu.com
Address: 111.13.101.208
Name:   baidu.com
Address: 180.149.132.47
Name:   baidu.com
Address: 123.125.114.144
Name:   baidu.com
Address: 220.181.57.217

这里我们看到查询的结果显示这是一个Non-authoritative answer,那么我能信任这次的查询结果吗?
权威和非权威应答是根据DNS数据包的flags标记中的AA位来判断的:
这里写图片描述
什么情况下返回的是权威应答,什么情况返回的是非权威的应答呢?我理解就是查询的时候选择的nameserver如果不是直接管理该查询域名那么返回的就是非权威应答。譬如/etc/resolv.conf中配置的nameserver为192.168.1.1,这个IP是公司自己搭建的nameserver,此时nslookup baidu.com那么公司搭建的这个域名服务器肯定是不能直接解析(也就是不直接管理)baidu.com的,它是通过递归解析或者从自己的缓存cache中获得baidu.com这个域名的IP的,此时返回的就是非权威应答。

lxg@lxg-ThinkPad-X240:~$ nslookup baidu.com 119.75.219.82
Server:     119.75.219.82
Address:    119.75.219.82#53

Name:   baidu.com
Address: 111.13.101.208
Name:   baidu.com
Address: 123.125.114.144
Name:   baidu.com
Address: 180.149.132.47
Name:   baidu.com
Address: 220.181.57.217

这里写图片描述
上面这个执行nslookup的时候我指定了nameserver,没有用系统默认的/etc/resolv.conf中配置的nameserver,最后查询出来的结果就是权威的应答。因为119.75.219.82这个nameserver是baidu.com的primary name server
从上面的这两个查询结果来看最后查询的结果其实是一致的,也就是说非权威的应答并不是不可信的,非权威的意思就是说:我的应答不是权威的,是我通过其它nameserver查询到的。
2. EDNS(扩展DNS)
不知道大家有注意过没,大部分的DNS服务器没有超过13台(当然其实不止13台,后面其实是一个集群)。这是为什么呢?我猜这是跟DNS的UDP数据包长度不能超过512字节有关,DNS规定UDP数据包(不包括UDP头部)不能超过512,如果超过则会被截断(设置TC标志位)。
DNS大概在1983年被定义,随着时间增长我们对DNS的需求在不断增加,而且Internet也变得越来越复杂和多样,在1983年定义的DNS规格(RFC 1035RFC 1034)已经不能满足我们对DNS的需求。于是,RFC 2671提出了一种扩展的DNS机制,在RFC 2671中就“举例”描述了一种扩展的DNS机制EDNS0,用来打破前面我们提到的UDP 512字节的限制。
关于EDNS的更多内容可以参考:EDNS: What is all about?使用 DNS 的扩展名机制 (EDNS0)EDNS
3. DNSSEC(DNS安全扩展)
DNS协议跟HTTP协议一样,是Internet的重要组成部分,必然是”黑客”重点攻击的地方。在DNS建立之初也没有考虑协议的安全性,随着Internet的发展DNS协议的安全性问题也越来越突出,此时就不得不考虑DNS协议的安全性了,DNSSEC就是为了加强DNS协议的安全性被提出来的。
DNSSEC是在保持DNS协议的兼容性前提下加入的一种扩展,可以理解为HTTP中的安全扩展HTTPS。
DNSSEC的详细内容可以参考:how-dnssec-worksUnderstanding DNSSECDNSSEC安全技術簡介

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页