dns服务器测试
测试
windows配置好dns后进行测试。
1. 基础功能测试
- 正向解析
- 测试公司内网域名(如
app.internal.local
)是否能正确解析到内网 IP。 - 使用
dig
或nslookup
验证返回的记录是否符合预期。
- 测试公司内网域名(如
1 | nslookup tech.dev.local |
- 反向解析
- 配置了 PTR 记录的话,检查内网 IP 能否正确反查到域名。
1 | nslookup 192.168.99.37 |
- 缓存机制
- 验证 DNS 缓存是否生效,TTL 是否符合配置。
- 避免 TTL 设置过长导致更新不及时,或过短导致负载过大。
1 | Resolve-DnsName tech.dev.local |
2. 协议合规性测试
- 递归与转发
1.权威DNS:
权威DNS是经过上一级授权对域名进行解析的服务器,同时它可以把解析授权转授给其他人,如COM顶级服务器可以授权http://dns.com这个域名的的权威服务器为http://NS.ABC.COM,同时http://NS.ABC.COM还可以把授权转授给http://NS.DDD.COM,这样http://NS.DDD.COM就成了http://ABC.COM实际上的权威服务器了。平时我们解析域名的结果都源自权威DNS。比如http://dns.com的权威DNS服务器就是帝恩思的http://ns1.dns.com http://ns2.dns.com
2.递归DNS:
负责接受用户对任意域名查询,并返回结果给用户。递归DNS可以缓存结果以避免重复向上查询。我们平时使用最多的就是这类DNS,他对公众开放服务,一般由网络运营商提供,大家都自己可以架递归DNS提供服务。递归DNS一定要有可靠的互联网连接方可使用。比如谷歌的8.8.8.8和8.8.4.4以及114的114.114.114.114和114.114.115.115都属于这一类DNS。你本地电脑上设置的DNS就是这类DNS。
3.转发DNS:
负责接受用户查询,并返回结果给用户。但这个结果不是按标准的域名解析过程得到的,而是直接把递归DNS的结果转发给用户。它也具备缓存功能。他主要使用在没有直接的互联网连接,但可以连接到一个递归DNS那里,这时使用转发DNS就比较合适。其缺陷是:直接受递归DNS的影响,服务品质较差。比如我们用的路由器里面的DNS就是这一类,用路由器的朋友可以看下本地电脑的DNS一般都是192.168.1.1。
- 检查内网 DNS 递归服务。
配置好dns后,进行一次查询,在dns服务器上抓包。最先回复的根域名服务器是h.root-servers.net (198.97.190.53),返回13台.com顶级域名服务器的域名和地址,继续向这些.com顶级域名服务器请求查询stackexchange.com二级域名服务器地址。说明递归没有问题
- 如果使用转发模式,确认外部请求会正确转发到上游(如运营商 DNS / 公共 DNS)。
配置一个转发器114.114.114.114
可以发现第一时间转发到了114dns。转发成功。
- EDNS 与大包支持
- 测试是否支持 EDNS(0),否则部分新型解析(如 DNSSEC、大型 TXT 记录)会失败。
- 检查 UDP 包是否支持超过 512 字节,否则需要回退 TCP。
- DNSSEC(如果公司要求高安全)
- 确认支持 DNSSEC 验证,测试是否能正确解析签名域名(如
dnssec-failed.org
应该失败,verisignlabs.com
应该成功)。
- 确认支持 DNSSEC 验证,测试是否能正确解析签名域名(如
3. 安全性测试
域名泄露检查
确保内网域名(如
*.internal.local
)不会被递归到公网 DNS。可以用 Wireshark/tcpdump 抓包,确认请求是否都停留在内网。
udp.port == 53 || tcp.port == 53 Resolve-DnsName tech.dev.local
1
2
3
4
5
6
7
8
9
10
11

- **开放递归测试**
- 使用外网主机尝试递归查询,看是否能解析(应当拒绝)。
- **抗攻击能力**
- 模拟高并发查询,观察 DNS 服务器是否稳定。
dnsperf -s 192.168.99.254 -d domain.txt -l 30
1 |
Statistics:
Queries sent: 119152
Queries completed: 119068 (99.93%)
Queries lost: 0 (0.00%)
Queries interrupted: 84 (0.07%)
Response codes: NOERROR 119068 (100.00%)
Average packet size: request 32, response 48
Run time (s): 8.941996
Queries per second: 13315.595310
Average Latency (s): 0.003618 (min 0.000328, max 0.018649)
Latency StdDev (s): 0.001931
1 |
|
dnsperf -s 192.168.99.254 -d domains.txt -l 60
1 |
Statistics:
Queries sent: 750898
Queries completed: 750879 (100.00%)
Queries lost: 19 (0.00%)
Response codes: NOERROR 750879 (100.00%)
Average packet size: request 32, response 48
Run time (s): 60.002362
Queries per second: 12514.157359
Average Latency (s): 0.003380 (min 0.000318, max 0.036856)
Latency StdDev (s): 0.001927
[root@localhost dnstest]#

- **负载均衡与冗余**
- 多台 DNS 服务器是否能正常分担压力。
- 模拟宕机,检查客户端能否自动切换到备用 DNS。
# 命令总结
👌 我帮你把文档里的命令 **提炼、扩展并分类总结**,方便查阅和作为运维笔记。
------
# DNS 服务器测试命令总结
## 一、基础解析与调试
| 命令 | 作用 | 示例 |
| -------------------------- | ------------------------------------------- | -------------------------------- |
| `nslookup <domain>` | 查询域名对应的 IP(正向解析) | `nslookup tech.dev.local` |
| `nslookup <ip>` | 反查 IP 对应的域名(反向解析,需 PTR 记录) | `nslookup 192.168.99.37` |
| `dig <domain>` | 查询 DNS 记录详情(Linux 常用) | `dig app.internal.local` |
| `Resolve-DnsName <domain>` | Windows PowerShell 查询记录,带 TTL 等信息 | `Resolve-DnsName tech.dev.local` |
扩展:
- `dig +trace <domain>` → 跟踪解析过程,验证递归链路。
- `dig -x <ip>` → IP 反向解析。
- `dig <domain> ANY` → 查看所有类型记录。
------
## 二、递归与转发测试
| 命令 | 作用 | 示例 |
| ---------------------------- | -------------------------------------------- | ------------------------------------------- |
| `dig +trace <domain>` | 验证递归是否正常(应从根服务器开始逐级解析) | `dig +trace regenm.github.io` |
| `tcpdump -i any port 53` | 抓包 DNS 查询过程 | `tcpdump -i ens192 port 53 -nn` |
| `nslookup <domain> <server>` | 指定 DNS 服务器进行查询 | `nslookup stackexchange.com 192.168.99.205` |
扩展:
- 使用转发器(如 114.114.114.114),检查请求是否直接转发。
- `dig @114.114.114.114 baidu.com` → 指定外部 DNS 查询。
------
## 三、安全性测试
| 命令 | 作用 | 示例 |
| ------------------------------------- | -------------------------------------- | ------------------------------- |
| `tcpdump -i ens192 udp port 53` | 确认内网域名是否泄露到公网 | `tcpdump -i ens192 udp port 53` |
| `wireshark filter: udp.port==53` | 通过 Wireshark 分析 DNS 包 | `udp.port==53` |
| `dig +dnssec <domain>` | 检查 DNSSEC 是否支持,验证签名域名解析 | `dig +dnssec verisignlabs.com` |
| 外网机器 `nslookup <domain> <server>` | 检查是否开放递归(应拒绝外网请求) | `nslookup baidu.com <公网IP>` |
扩展:
- `rndc querylog on`(BIND 专用) → 打开查询日志排查异常请求。
- `unbound-host -C /etc/unbound/unbound.conf -v -d <domain>` → 验证安全配置。
------
## 四、性能与高可用测试
| 命令 | 作用 | 示例 |
| ---------------------------------------------- | ------------------------------------------------- | ------------------------------------------------ |
| `dnsperf -s <server> -d domains.txt -l <time>` | 压力测试,QPS 和延迟分析 | `dnsperf -s 192.168.99.254 -d domains.txt -l 60` |
| `queryperf -d domains.txt -s <server>` | 同类工具,测试 DNS 性能 | `queryperf -d domains.txt -s 192.168.99.254` |
| `ab -n 1000 -c 50 dig ...` | ApacheBench 模拟并发请求(可用于 dig 脚本化测试) | `ab -n 1000 -c 50 dig baidu.com` |
扩展:
- `watch -n1 "dig tech.dev.local @192.168.99.205"` → 实时观测 DNS 响应。
- 配合 `systemctl stop named` / `systemctl stop coredns` 模拟宕机,看客户端是否切换到备用 DNS。
------
## 五、命令分类汇总
- **查询与解析类**:`nslookup` / `dig` / `Resolve-DnsName`
- **递归与转发验证类**:`dig +trace` / `tcpdump` / `wireshark`
- **安全性检查类**:`dig +dnssec` / `tcpdump` / `nslookup`(外网测试)
- **性能与稳定性类**:`dnsperf` / `queryperf` / `ab`