DNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。
一、DNS 是什么?
DNS (Domain Name System 的缩写)的作用, 就是根据域名查出IP地址。你可以把它想象成一本巨大的电话本。
举例来说,如果你要访问域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69。
如果你不清楚为什么一定要查出IP地址,才能进行网络通信,建议先阅读我写的 《互联网协议入门》 。
在DNS 配置文件中,用于表示某主机别名的是 : CNAME
DNS系统的作用
DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
-
正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址。
-
反向解析:根据IP地址查域名,即将指定的IP地址解析为相对应的域名。
DNS系统的类型
-
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
-
主域名服务器:维护某一个域名DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
-
从域名服务器:与主域名服务器提供完全相同的DNS域名服务,通常用于DNS服务器的热备份。
Bind不是唯一能够提供域名服务的DNS服务程序,可以运行在大多数Linux和UNIX主机中。官方:https://www.isc.org/
Bind服务控制
bind软件包安装完毕以后,会自动增加一个名为named的系统服务,通过脚本文件/etc/init.d/named或service工具都可以控制DNS域名服务的运行。默认监听端口:53
安装步骤如下:
准备工作:首先开启两台服务器,配置静态IP地址,关闭防火墙和selinux并查看系统中所包含bind的rpm包。
1)bind:提供了域名服务的主要程序及相关文件
2)bind-utils:提供了对DNS服务器的测试工具程序,如nslookup等。
3)bind-libs:提供了bind。bind-utils需要使用的库函数
4)bind-chroot为bind服务提供了一个伪装的根目录,已提供安全性。
默认已经安装了bind-utils和bind-libs,所以只需要安装bind和bind-chroot即可。
DHCP有三种机制分配IP地址:
1) 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
2) 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
3) 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。
DNS工作原理
DNS译成中文就是“域名系统”或“域名解析系统”。它在互联网的作用是:把域名转换成为网络可以识别的IP地址.DNS分为Client和
Server,Client扮演发问的角色,也就是问Server一个Domain Name,而Server必须要回答此Domain Name的真正IP地址。而当地的
DNS先会查自己的资料库。如果自己的资料库没有,则会往该DNS上所设的的DNS询问,依此得到答案之后,将收到的答案存起来,并
回答客户。
域名解析配置文件
指定为本机提供DNS解析的服务器地址
/etc/resolv.conf文件中记录了本机默认使用的DNS服务器的地址信息,对该文件所做的修改将会立刻生效。Linux系统中最多可以指定3个不同的DNS服务器地址,优先使用第1个DNS服务器。
[root@localhost-181117 ~]# vi /etc/resolv.conf
# Generated by NetworkManager
domain localdomain
search localdomain
nameserver 192.168.231.2
本地主机映射文件
/etc/hosts文件中记录着一份主机名与IP地址的映射关系表,一般用来保存经常需要访问的主机的信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到在去向DNS服务器查询。
[root@localhost-181117 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@localhost-181117 ~]#
/etc/dhcp/dhcp.conf文件的配置构成
在主配置文件dhcp.conf中,可以使用声明、参数、选项这三种类型的配置。
-
声明:用来描述dhcp服务器中对网络布局的划分,是网络设置的逻辑范围。常见的声明是subnet、host,其中subnet声明用来约束一个网段,host声明用来约束一台特定的主机。
-
参数:由配置关键字和对应的值组成,总是以分好“:”结束,一般位于指定的声明范围之内,用来设置所在范围的运行特性。
-
选项:由“option”引导,后面跟具体的配置关键字和对应的值,也是以分号“:”结束,用于指定分配给客户机的各种地址参数。
确定dhcp服务的全局配置
为了使配置文件的结构更加清晰,全局配置通常会放在配置文件dhcp.conf的开头部分,可以是配置参数,也可以是配置选项。
-
ddns-update-style,动态DNS更新模式。用来设置与DHCP服务相关联的DNS数据动态更新模式。在实际的DHCP应用中很少用到该参数,将值设为“none”。
-
default-lease-time,默认租约时间。单位为秒,表示客户端可以从DHCP服务器租用某个IP地址的默认时间。
-
max-lease-time,最大租约时间,单位为秒,表示允许DHCP客户端请求的最大租约时间,当客户端未请求明确的租约时间时,服务器将采用默认租约时间。
-
option domain-name,默认搜索区域。为客户机指定解析主机名时的默认搜索域,改配置选项将体现在客户机的/etc/resolv.conf配置文件中。
-
option domain-name-servers,DNS服务器地址,为客户机指定解析域名时使用的DNS服务器地址,该配置选项同样将体现在客户机的/etc/resolv.conf配置文件中。需设置多个DNS服务器地址时,应以逗号进行分隔。
二、查询过程
虽然只需要返回一个IP地址,但是DNS的查询过程非常复杂,分成多个步骤。
工具软件dig可以显示整个查询过程。
$ dig math.stackexchange.com
上面的命令会输出六段信息。
第一段是查询参数和统计。
第二段是查询内容。
上面结果表示,查询域名math.stackexchange.com的A记录,A是address的缩写。
第三段是DNS服务器的答复。
上面结果显示,math.stackexchange.com有四个A记录,即四个IP地址。600是TTL值(Time to live 的缩写),表示缓存时间,即600秒之内不用重新查询。
第四段显示stackexchange.com的NS记录(Name Server的缩写),即哪些服务器负责管理stackexchange.com的DNS记录。
上面结果显示stackexchange.com共有四条NS记录,即四个域名服务器,向其中任一台查询就能知道math.stackexchange.com的IP地址是什么。
第五段是上面四个域名服务器的IP地址,这是随着前一段一起返回的。
第六段是DNS服务器的一些传输信息。
上面结果显示,本机的DNS服务器是192.168.1.253,查询端口是53(DNS服务器的默认端口),以及回应长度是305字节。
如果不想看到这么多内容,可以使用+short参数。
$ dig +short math.stackexchange.com 151.101.129.69 151.101.65.69 151.101.193.69 151.101.1.69
上面命令只返回math.stackexchange.com对应的4个IP地址(即A记录)。
三、DNS服务器
下面我们根据前面这个例子,一步步还原,本机到底怎么得到域名math.stackexchange.com的IP地址。
首先,本机一定要知道DNS服务器的IP地址,否则上不了网。通过DNS服务器,才能知道某个域名的IP地址到底是什么。
DNS服务器的IP地址,有可能是动态的,每次上网时由网关分配,这叫做DHCP机制;也有可能是事先指定的固定地址。Linux系统里面,DNS服务器的IP地址保存在/etc/resolv.conf文件。
上例的DNS服务器是192.168.1.253,这是一个内网地址。有一些公网的DNS服务器,也可以使用,其中最有名的就是Google的8.8.8.8和Level 3的4.2.2.2。
本机只向自己的DNS服务器查询,dig命令有一个@参数,显示向其他DNS服务器查询的结果。
$ dig @4.2.2.2 math.stackexchange.com
上面命令指定向DNS服务器4.2.2.2查询。
四、域名的层级
DNS服务器怎么会知道每个域名的IP地址呢?答案是分级查询。
请仔细看前面的例子,每个域名的尾部都多了一个点。
比如,域名math.stackexchange.com显示为math.stackexchange.com.。这不是疏忽,而是所有域名的尾部,实际上都有一个根域名。
举例来说,www.example.com真正的域名是www.example.com.root,简写为www.example.com.。因为,根域名.root对于所有域名都是一样的,所以平时是省略的。
根域名的下一级,叫做”顶级域名”(top-level domain,缩写为TLD),比如.com、.net;再下一级叫做”次级域名”(second-level domain,缩写为SLD),比如www.example.com里面的.example,这一级域名是用户可以注册的;再下一级是主机名(host),比如www.example.com里面的www,又称为”三级域名”,这是用户在自己的域里面为服务器分配的名称,是用户可以任意分配的。
总结一下,域名的层级结构如下。
主机名.次级域名.顶级域名.根域名 # 即 host.sld.tld.root
五、根域名服务器
DNS服务器根据域名的层级,进行分级查询。
需要明确的是,每一级域名都有自己的NS记录,NS记录指向该级域名的域名服务器。这些服务器知道下一级域名的各种记录。
所谓”分级查询”,就是从根域名开始,依次查询每一级域名的NS记录,直到查到最终的IP地址,过程大致如下。
-
从”根域名服务器”查到”顶级域名服务器”的NS记录和A记录(IP地址)
-
从”顶级域名服务器”查到”次级域名服务器”的NS记录和A记录(IP地址)
-
从”次级域名服务器”查出”主机名”的IP地址
仔细看上面的过程,你可能发现了,没有提到DNS服务器怎么知道”根域名服务器”的IP地址。回答是”根域名服务器”的NS记录和IP地址一般是不会变化的,所以内置在DNS服务器里面。
下面是内置的根域名服务器IP地址的一个例子。
上面列表中,列出了根域名(.root)的三条NS记录A.ROOT-SERVERS.NET、B.ROOT-SERVERS.NET和C.ROOT-SERVERS.NET,以及它们的IP地址(即A记录)198.41.0.4、192.228.79.201、192.33.4.12。
另外,可以看到所有记录的TTL值是3600000秒,相当于1000小时。也就是说,每1000小时才查询一次根域名服务器的列表。
目前,世界上一共有十三组根域名服务器,从A.ROOT-SERVERS.NET一直到M.ROOT-SERVERS.NET。
六、分级查询的实例
dig命令的+trace参数可以显示DNS的整个分级查询过程。
$ dig +trace math.stackexchange.com
上面命令的第一段列出根域名.的所有NS记录,即所有根域名服务器。
根据内置的根域名服务器IP地址,DNS服务器向所有这些IP地址发出查询请求,询问math.stackexchange.com的顶级域名服务器com.的NS记录。最先回复的根域名服务器将被缓存,以后只向这台服务器发请求。
接着是第二段。
上面结果显示.com域名的13条NS记录,同时返回的还有每一条记录对应的IP地址。
然后,DNS服务器向这些顶级域名服务器发出查询请求,询问math.stackexchange.com的次级域名stackexchange.com的NS记录。
上面结果显示stackexchange.com有四条NS记录,同时返回的还有每一条NS记录对应的IP地址。
然后,DNS服务器向上面这四台NS服务器查询math.stackexchange.com的主机名。
上面结果显示,math.stackexchange.com有4条A记录,即这四个IP地址都可以访问到网站。并且还显示,最先返回结果的NS服务器是ns-463.awsdns-57.com,IP地址为205.251.193.207。
七、NS 记录的查询
dig命令可以单独查看每一级域名的NS记录。
$ dig ns com $ dig ns stackexchange.com
+short参数可以显示简化的结果。
$ dig +short ns com $ dig +short ns stackexchange.com
八、DNS的记录类型
域名与IP之间的对应关系,称为”记录”(record)。根据使用场景,”记录”可以分成不同的类型(type),前面已经看到了有A记录和NS记录。
常见的DNS记录类型如下。
(1) A:地址记录(Address),返回域名指向的IP地址。
(2) NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
(3)MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
(4)CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转,详见下文。
(5)PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名,详见下文。
一般来说,为了服务的安全可靠,至少应该有两条NS记录,而A记录和MX记录也可以有多条,这样就提供了服务的冗余性,防止出现单点失败。
CNAME记录主要用于域名的内部跳转,为服务器配置提供灵活性,用户感知不到。举例来说,facebook.github.io这个域名就是一个CNAME记录。
$ dig facebook.github.io ... ;; ANSWER SECTION: facebook.github.io. 3370 IN CNAME github.map.fastly.net. github.map.fastly.net. 600 IN A 103.245.222.133
上面结果显示,facebook.github.io的CNAME记录指向github.map.fastly.net。也就是说,用户查询facebook.github.io的时候,实际上返回的是github.map.fastly.net的IP地址。这样的好处是,变更服务器IP地址的时候,只要修改github.map.fastly.net这个域名就可以了,用户的facebook.github.io域名不用修改。
由于CNAME记录就是一个替换,所以域名一旦设置CNAME记录以后,就不能再设置其他记录了(比如A记录和MX记录),这是为了防止产生冲突。举例来说,foo.com指向bar.com,而两个域名各有自己的MX记录,如果两者不一致,就会产生问题。由于顶级域名通常要设置MX记录,所以一般不允许用户对顶级域名设置CNAME记录。
PTR记录用于从IP地址反查域名。dig命令的-x参数用于查询PTR记录。
$ dig -x 192.30.252.153 ... ;; ANSWER SECTION: 153.252.30.192.in-addr.arpa. 3600 IN PTR pages.github.com.
上面结果显示,192.30.252.153这台服务器的域名是pages.github.com。
逆向查询的一个应用,是可以防止垃圾邮件,即验证发送邮件的IP地址,是否真的有它所声称的域名。
dig命令可以查看指定的记录类型。
$ dig a github.com $ dig ns github.com $ dig mx github.com
九、其他DNS工具
除了dig,还有一些其他小工具也可以使用。
(1)host 命令
host命令可以看作dig命令的简化版本,返回当前请求域名的各种记录。
$ host github.com github.com has address 192.30.252.121 github.com mail is handled by 10 ALT4.ASPMX.L.GOOGLE.COM. github.com mail is handled by 10 ALT3.ASPMX.L.GOOGLE.COM. github.com mail is handled by 5 ALT1.ASPMX.L.GOOGLE.COM. github.com mail is handled by 1 ASPMX.L.GOOGLE.COM. $ host facebook.github.com facebook.github.com is an alias for github.map.fastly.net. github.map.fastly.net has address 103.245.222.133
host命令也可以用于逆向查询,即从IP地址查询域名,等同于dig -x 。
$ host 192.30.252.153 153.252.30.192.in-addr.arpa domain name pointer pages.github.com.
(2)nslookup 命令
nslookup命令用于互动式地查询域名记录。
$ nslookup > facebook.github.io Server: 192.168.1.253 Address: 192.168.1.253#53 Non-authoritative answer: facebook.github.io canonical name = github.map.fastly.net. Name: github.map.fastly.net Address: 103.245.222.133 >
(3)whois 命令
whois命令用来查看域名的注册情况。
$ whois github.com
十、参考链接
-
DNS: The Good Parts, by Pete Keen
-
DNS 101, by Mark McDonnell
…………………………end…………………………
附,DNS百科,可过滤
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。
DNS功能
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。
主机名到IP地址的映射有两种方式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
DNS服务器
提供DNS服务的是安装了DNS服务器端软件的计算机。服务器端软件既可以是基于类linux操作系统,也可以是基于Windows操作系统的。装好DNS服务器软件后,您就可以在您指定的位置创建区域文件了,所谓区域文件就是包含了此域中名字到IP地址解析记录的一个文件,如文件的内容可能是这样的:primary name server = dns2(主服务器的主机名是 )
serial = 2913 (序列号=2913、这个序列号的作用是当辅域名服务器来复制这个文件的时候,如果号码增加了就复制)
refresh = 10800 (3 hours) (刷新=10800秒、辅域名服务器每隔3小时查询一个主服务器)
retry = 3600 (1 hour) (重试=3600秒、当辅域名服务试图在主服务器上查询更新时,而连接失败了,辅域名服务器每隔1小时访问主域名服务器)
expire = 604800 (7 days) (到期=604800秒、辅域名服务器在向主服务更新失败后,7天后删除中的记录。)
default TTL = 3600 (1 hour) (默认生存时间=3600秒、缓存服务器保存记录的时间是1小时。也就是告诉缓存服务器保存域的解析记录为1小时)
DNS安全问题
1.针对域名系统的恶意攻击:DDOS攻击造成域名解析瘫痪。
2.域名劫持:修改注册信息、劫持解析结果。
3.国家性质的域名系统安全事件:“.ly”域名瘫痪、“.af”域名的域名管理权变更。
4.系统上运行的DNS服务存在漏洞,导致被黑客获取权限,从而篡改DNS信息。
5.DNS设置不当,导致泄漏一些敏感信息。提供给黑客进一步攻击提供有力信息。
常见问题 :
1、当用户在浏览器当中输入一个网 g 站,说说计算机对 dns 解释经过那些流程?注:本机跟本地 dns 还没有缓存。
答: a.用户输入网址到浏览器
b.浏览器发出 DNS 请求信息
c.计算机首先查询本机 HOST 文件,看是否存在,存在直接返回结果,不存在,继续下一
步
d.计算机按照本地 DNS 的顺序,向合法 dns 服务器查询 IP 结果,
e.合法 dns 返回 dns 结果给本地 dns,本地 dns 并缓存本结果,直到 TTL 过期,才再次
查询此结果
f.返回 IP 结果给浏览器
g.浏览器根据 IP 信息,获取页面
2、dns 既采用了 tcp 协议,又采用了 udp 协议,什么时候采用 tcp 协议?
什么时候采用 udp 协议?为什么要这么设计?
答:这个题需要理解的东西比较的多,分一下几个方面
a,从数据包大小上分:UDP 的最大包长度是 65507 个字节,响应 dns 查询的时候数据包
长度超过 512 个字节,而返回的只要前 512 个字节,这时名字解释器通常使用 TCP 从发
原来的请求。
b,从协议本身来分:大部分的情况下使用 UDP 协议,大家都知道 UDP 协议是一种不可靠
的协议,dns 不像其它的使用 UDP 的 Internet 应用 (如:TFTP,BOOTP 和 SNMP 等),
大部分集中在局域网,dns 查询和响应需要经过广域网,分组丢失和往返时间的不确定性在
广域网比局域网上更大,这就要求 dns 客户端需要好的重传和超时算法,这时候使用 TCP
3、简述 DNS 进行域名解析的过程。
参考答案:
首先,客户端发出 DNS 请求翻译 IP 地址或主机名。DNS 服务器在收到客户机的请求后:
(1)检查 DNS 服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;
(2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信
息;
(3)若没有查到,则将请求发给根域 DNS 服务器,并依序从根域查找顶级域,由顶级查
找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的 DNS
服务器发出应答信息,DNS 服务器收到应答后现在缓存中存储,然后,将解析结果发给客
户机。
(4)若没有找到,则返回错误信息。
4、
5、
6、
链接 :
脚本之家 DNS 系列 (16篇):https://www.jb51.net/list/list_219_1.htm
DNS服务-详解 : http://blog.51cto.com/fighter/500957
Linux DNS 服务器安装、配置和维护 :https://mp.weixin.qq.com/s/4olKISlmf8mnm0x5XcXdsQ
CentOS下搭建智能DNS系统wdDNS 的方法 : http://blog.51cto.com/xiaogongju/2071106
虚拟化云计算-使用windowsserver2012r2配置AD&DNS&DHCP服务器 : http://blog.51cto.com/11555417/2162547
linux服务之DNS : http://blog.51cto.com/best0/105682
DNS区域主从复制 : http://blog.51cto.com/xiaoluoge/1555221
[Dns] Linux(centos 6) DNS(bind)服务器安装及dns理论详解 : http://blog.51cto.com/itwish/2128257
浅谈DNS体系结构:DNS系列之一 : http://blog.51cto.com/yuelei/106228
高可用dns方案 荐 : http://blog.51cto.com/caiguangguang/1357867
详解DNS的常用记录(上):DNS系列之二 荐: http://blog.51cto.com/yuelei/106921
详解DNS的常用记录(下):DNS系列之三 荐 : http://blog.51cto.com/yuelei/107676
配置DNS辅助服务器:DNS系列之四 荐 : http://blog.51cto.com/yuelei/108672
揭秘DNS后台文件:DNS系列之五 荐 : http://blog.51cto.com/yuelei/109657
亲手缔造DNS体系,创建DNS私有根:DNS系列之六 荐 : http://blog.51cto.com/yuelei/110700
DNS不平凡的查询过程 : http://blog.51cto.com/zhangqi/32224
DNS服务-详解 荐 : http://blog.51cto.com/fighter/500957
脚本实现自动创建DNS域名服务器 : http://blog.51cto.com/fighter/500005
CentOS 7实现DNS+DHCP动态更新详解 : https://www.jb51.net/os/RedHat/534684.html
CentOS下DNS的基本和高级配置详解 : https://www.jb51.net/os/RedHat/527825.html
centos5.3 搭建DNS多域名解析服务器的教程 : https://www.jb51.net/os/RedHat/34043.html
四招教你快速解决DNS服务器未响应 : http://server.51cto.com/sOS-569801.htm
CentOS6.7服务器上部署内网DNS服务 : http://server.51cto.com/sOS-582509.htm
模拟构建DNS解析流程 : http://blog.51cto.com/11010461/2123639
Linux DNS服务系列之主从复制、子域授权和转发、view配置详解 : http://blog.51cto.com/scholar/1631058
Linux DNS服务系列之原理介绍及正反向解析配置 : http://blog.51cto.com/scholar/1629834
DNS正向反向解析与主从复制 : http://blog.51cto.com/11010461/2105703
DNS基础与bind的安装 : http://blog.51cto.com/11010461/2105534
DNS软件bind使用(一) : http://blog.51cto.com/cuchadanfan/1710387
DNS软件bind使用(二) : http://blog.51cto.com/cuchadanfan/1711165
原 RH134-第二十三节-DNS高速缓存 : https://blog.csdn.net/sinat_37757403/article/details/77132298
系统架构师-DNS学习笔记 : https://www.jianshu.com/p/4cde538315a8
DNS原理介绍和具体搭建DNS 荐 : http://blog.51cto.com/guoting/1536612
DNS服务器搭建 :https://www.jianshu.com/p/99a4b1ff2648
搭建DNS服务,反向解析ip : http://blog.51cto.com/13728740/2143039
搭建DNS服务,正向解析域名 ; http://blog.51cto.com/13728740/2142704
一次dns缓存引发的惨案 : https://www.cnblogs.com/ityouknow/p/6380603.html
问题dsn=5.0.0, stat=Service unavailable解决方法 : http://blog.51cto.com/nanchunle/1643840
浅析 DNS 反射放大攻击 : https://mp.weixin.qq.com/s/he-Vk-7pbF82VQxkVSraLA
https://mp.weixin.qq.com/s/skH1jxdWqCT0pfJQ9_ADvA
来源:oschina
链接:https://my.oschina.net/u/3803405/blog/1837290