本文分别选取“BIND 9”和“Linux dig命令”作为DNS服务器实现软件和DNS客户端实现软件:
- DNS服务器实现软件有:
- BIND 9:全功能支持,即支持——根DNS服务器、顶级域DNS服务器、权威DNS服务器、递归DNS服务器、转发DNS服务器
- PowerDNS:全功能支持,即支持——根DNS服务器、顶级域DNS服务器、权威DNS服务器、递归DNS服务器、转发DNS服务器
- CoreDNS:原生支持——根DNS服务器、顶级域DNS服务器、权威DNS服务器;结合插件支持——递归DNS服务器、转发DNS服务器
- 自实现
- …
- DNS客户端实现软件有:
- Linux dig命令
- Linux nslookup命令
- BIND 9
- PowerDNS
- 自实现
- …
一、搭建转发DNS服务器
1.1、实验环境
1、实验DNS服务器
实验DNS服务器IP地址192.168.31.181。
在实验DNS服务器的配置文件“/etc/bind/named.conf.options”中增加以下配置,此时其作为转发DNS服务器。
1 | forwarders { |
2、实验DNS客户端
实验DNS客户端IP地址192.168.31.143。
1.2、实验
1、实验DNS客户端
执行dig @192.168.31.181 baidu.com +short命令,得到以下结果,表明实验转发DNS服务器正常工作。
1 | 111.63.65.247 |
2、实验DNS服务器
请求报文(转发DNS服务器->阿里巴巴公共DNS服务器):
1 | Internet Protocol Version 4, Src: 192.168.31.181, Dst: 223.5.5.5 |
响应报文(阿里巴巴公共DNS服务器->转发DNS服务器):
1 | Internet Protocol Version 4, Src: 223.5.5.5, Dst: 192.168.31.181 |
二、搭建递归DNS服务器
2.1、实验环境
1、实验DNS服务器
实验DNS服务器IP地址192.168.31.181。
在实验DNS服务器的配置文件“/etc/bind/named.conf.options”中增加以下配置,此时其作为递归DNS服务器。
1 | recursion yes; // 允许递归查询。须注意:这是默认配置,这里为了实验进行显式配置 |
2、实验DNS客户端
实验DNS客户端IP地址192.168.31.143。
2.2、实验
1、实验DNS客户端
执行dig @192.168.31.181 baidu.com +short命令,得到以下结果,表明实验递归DNS服务器正常工作。
1 | 111.63.65.247 |
2、实验DNS服务器
请求报文(递归DNS服务器->根DNS服务器:192.58.128.30是根DNS服务器j.root-servers.net对应的IP):
1 | Internet Protocol Version 4, Src: 192.168.31.181, Dst: 192.58.128.30 |
响应报文(根DNS服务器->递归DNS服务器:获取顶级域DNS服务器域名和IP地址):
1 | Internet Protocol Version 4, Src: 192.58.128.30, Dst: 192.168.31.181 |
请求报文(递归DNS服务器->顶级域DNS服务器:192.41.162.30是顶级域DNS服务器l.gtld-servers.net对应的IP):
1 | Internet Protocol Version 4, Src: 192.168.31.181, Dst: 192.41.162.30 |
响应报文(顶级域DNS服务器->递归DNS服务器:获取权威DNS服务器域名和IP地址):
1 | Internet Protocol Version 4, Src: 192.41.162.30, Dst: 192.168.31.181 |
请求报文(递归DNS服务器->权威DNS服务器:153.3.238.93是权威DNS服务器ns3.baidu.com对应的IP):
1 | Internet Protocol Version 4, Src: 192.168.31.181, Dst: 153.3.238.93 |
响应报文(权威DNS服务器->递归DNS服务器:获取最终IP地址):
1 | Internet Protocol Version 4, Src: 153.3.238.93, Dst: 192.168.31.181 |
三、搭建4层DNS服务器(递归DNS服务器+支持一次A记录完整DNS迭代查询的3层DNS服务器)
3.1、实验环境
1、搭建支持一次A记录完整DNS迭代查询的3层DNS服务器
3个节点的情况如下:
- bind9-55:IP地址为
172.20.0.55,作为根DNS服务器 - bind9-57:IP地址为
172.20.0.57,作为顶级域DNS服务器 - bind9-59:IP地址为
172.20.0.59,作为权威DNS服务器
资源如下:
2、搭建1个递归DNS服务器
IP地址为172.20.0.1,节点配置如下。
新建“/etc/bind/root.hints.custom”,作为自定义根DNS服务器配置文件,具体内容如下
1 | ; 设置172.20.0.55作为根DNS服务器 |
更新“/etc/bind/named.conf.default-zones”,指向以上自定义的根DNS服务器配置文件。
具体是将
1 | zone "." { |
改成
1 | zone "." { |
“/etc/bind/named.conf.options”配置文件修改为如下:
1 | options { |
3、实验DNS客户端
实验DNS客户端IP地址为172.20.0.1。
3.2、实验
1、实验DNS客户端
执行dig @172.20.0.1 -p 54 www.example.com命令,得到以下结果,表明4层DNS服务器正常工作。
1 | 10.0.0.201 |
2、实验DNS服务器
请求报文(递归DNS服务器->根DNS服务器:根DNS服务器IP地址为172.20.0.55):
1 | Internet Protocol Version 4, Src: 172.20.0.1, Dst: 172.20.0.55 |
响应报文(根DNS服务器->递归DNS服务器):
1 | Internet Protocol Version 4, Src: 172.20.0.55, Dst: 172.20.0.1 |
请求报文(递归DNS服务器->顶级域DNS服务器:顶级域DNS服务器IP地址为172.20.0.57):
1 | Internet Protocol Version 4, Src: 172.20.0.1, Dst: 172.20.0.57 |
响应报文(顶级域DNS服务器->递归DNS服务器):
1 | Internet Protocol Version 4, Src: 172.20.0.57, Dst: 172.20.0.1 |
请求报文(递归DNS服务器->权威DNS服务器:权威DNS服务器IP地址为172.20.0.59):
1 | Internet Protocol Version 4, Src: 172.20.0.1, Dst: 172.20.0.59 |
响应报文(权威DNS服务器->递归DNS服务器):
1 | Internet Protocol Version 4, Src: 172.20.0.59, Dst: 172.20.0.1 |
四、搭建4层DNS服务器(递归DNS服务器+支持一次PTR记录完整DNS迭代查询的3层DNS服务器)
4.1、实验环境
1、搭建支持一次PTR记录完整DNS迭代查询的3层DNS服务器
3个节点的情况如下:
- bind9-55:IP地址为
172.20.0.55,作为根DNS服务器 - bind9-57:IP地址为
172.20.0.57,作为顶级域DNS服务器 - bind9-59:IP地址为
172.20.0.59,作为权威DNS服务器
资源如下:
2、搭建1个递归DNS服务器
IP地址为172.20.0.1,节点配置如下。
新建“/etc/bind/root.hints.custom”,作为自定义根DNS服务器配置文件,具体内容如下
1 | ; 设置172.20.0.55作为根DNS服务器 |
更新“/etc/bind/named.conf.default-zones”,指向以上自定义的根DNS服务器配置文件。
具体是将
1 | zone "." { |
改成
1 | zone "." { |
“/etc/bind/named.conf.options”配置文件修改为如下:
1 | options { |
3、实验DNS客户端
实验DNS客户端IP地址为172.20.0.1。
4.2、实验
1、实验DNS客户端
执行dig -x 1.2.3.4 PTR @172.20.0.1 -p 54 +short命令,得到以下结果,表明4层DNS服务器正常工作。
1 | host.example.com. |
2、实验DNS服务器
请求报文(递归DNS服务器->根DNS服务器:根DNS服务器IP地址为172.20.0.55):
1 | Internet Protocol Version 4, Src: 172.20.0.1, Dst: 172.20.0.55 |
响应报文(根DNS服务器->递归DNS服务器):
1 | Internet Protocol Version 4, Src: 172.20.0.55, Dst: 172.20.0.1 |
请求报文(递归DNS服务器->顶级域DNS服务器:顶级域DNS服务器IP地址为172.20.0.57):
1 | Internet Protocol Version 4, Src: 172.20.0.1, Dst: 172.20.0.57 |
响应报文(顶级域DNS服务器->递归DNS服务器):
1 | Internet Protocol Version 4, Src: 172.20.0.57, Dst: 172.20.0.1 |
请求报文(递归DNS服务器->权威DNS服务器:权威DNS服务器IP地址为172.20.0.59):
1 | Internet Protocol Version 4, Src: 172.20.0.1, Dst: 172.20.0.59 |
响应报文(权威DNS服务器->递归DNS服务器):
1 | Internet Protocol Version 4, Src: 172.20.0.59, Dst: 172.20.0.1 |