测试

​ windows配置好dns后进行测试。

1. 基础功能测试

  • 正向解析
    • 测试公司内网域名(如 app.internal.local)是否能正确解析到内网 IP。
    • 使用 dignslookup 验证返回的记录是否符合预期。
1
nslookup tech.dev.local

image-20250918094726252

  • 反向解析
    • 配置了 PTR 记录的话,检查内网 IP 能否正确反查到域名。
1
nslookup 192.168.99.37

image-20250918094745371

  • 缓存机制
    • 验证 DNS 缓存是否生效,TTL 是否符合配置。
    • 避免 TTL 设置过长导致更新不及时,或过短导致负载过大。
1
Resolve-DnsName tech.dev.local

image-20250918094800167


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二级域名服务器地址。说明递归没有问题

image-20250918163654833

  • 如果使用转发模式,确认外部请求会正确转发到上游(如运营商 DNS / 公共 DNS)。

配置一个转发器114.114.114.114可以发现第一时间转发到了114dns。转发成功。

image-20250918164056540

  • EDNS 与大包支持
    • 测试是否支持 EDNS(0),否则部分新型解析(如 DNSSEC、大型 TXT 记录)会失败。
    • 检查 UDP 包是否支持超过 512 字节,否则需要回退 TCP。
  • DNSSEC(如果公司要求高安全)
    • 确认支持 DNSSEC 验证,测试是否能正确解析签名域名(如 dnssec-failed.org 应该失败,verisignlabs.com 应该成功)。

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

      ![image-20250918095119711](../images/Linux/运维/dns/image-20250918095119711.png)

      - **开放递归测试**

      - 使用外网主机尝试递归查询,看是否能解析(应当拒绝)。

      - **抗攻击能力**

      - 模拟高并发查询,观察 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15

![image-20250918094924746](../images/Linux/运维/dns/image-20250918094924746.png)

- 测试是否能防御基本的缓存投毒攻击(比如 `dig +dnssec` 验证返回的 AD 标志)。



------

## 4. 性能与高可用测试

- **延迟与吞吐**
- 测试解析延迟(平均 <20ms 较合理)。
- 使用 `dnsperf` / `queryperf` 模拟大量请求,检查 QPS 能力。

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]#


![image-20250918094911639](../images/Linux/运维/dns/image-20250918094911639.png)

- **负载均衡与冗余**
    - 多台 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`