跳转到内容
搜索文档

测试 DNS 过滤

最后更新 查看 MarkdownAgent 设置

本节介绍如何验证您的 Gateway DNS 配置。在设置后测试您的策略有助于在生产环境中使用它们之前,确认查询是否按预期被过滤。

Prerequisites

在开始之前,请确保您的设备正在向 Gateway 发送 DNS 查询。您可以通过以下两种方式之一来完成此操作:

  • Cloudflare One Client —— 如果您的设备运行 Cloudflare One Client,DNS 查询将自动路由到 Gateway。
  • DNS 位置 —— 如果您使用的是仅限 DNS 的部署(不带 Cloudflare One Client),请验证您网络的 DNS 解析器是否指向了您的 Gateway DNS 位置 的 IP 地址。

测试 DNS 策略

在您创建了阻止域名的 DNS 策略后,您可以使用 dig(命令行 DNS 查找工具,可在 macOS 和 Linux 上使用)或 nslookup(在 Windows 上使用)来查看该策略是否按预期工作。

例如,如果您创建了阻止 example.com 的策略,您可以执行以下操作来查看 Gateway 是否成功阻止了 example.com

  1. 打开终端。

  2. 输入 dig example.com(如果您使用的是 Windows,则输入 nslookup example.com)并按 Enter(回车) 键。

  3. dig 输出中,检查标头行(以 ;; ->>HEADER<<- 开头的一行)中的 status: 字段。如果该策略关闭了阻止页面,您应该会看到 REFUSED —— 这是一个表示服务器拒绝回答该查询的 DNS 响应代码:

    dig example.com
    
    ; <<>> DiG 9.10.6 <<>> example.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 6503
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;example.com.                   IN      A
    
    ;; Query time: 46 msec
    ;; SERVER: 172.64.36.1#53(172.64.36.1)
    ;; WHEN: Tue Mar 10 20:22:18 CDT 2020
    ;; MSG SIZE  rcvd: 29

    If the block page is enabled for the policy, you should see NOERROR (meaning the query was resolved) in the header with 162.159.36.12 and 162.159.46.12 as the answers. These are Cloudflare's block page IP addresses:

    dig example.com
    
    ; <<>> DiG 9.10.6 <<>> example.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR id: 14531
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1452
    ;; QUESTION SECTION:
    ;example.com.                   IN      A
    
    ;;ANSWER SECTION:
    example.com.            60      IN      A                  162.159.36.12
    example.com.            60      IN      A                  162.159.46.12
    
    ;; Query time: 53 msec
    ;; SERVER: 172.64.36.1#53(172.64.36.1)
    ;; WHEN: Tue Mar 10 20:19:52 CDT 2020
    ;; MSG SIZE  rcvd: 83

测试安全或内容类别

如果您阻止了安全类别内容类别,您可以使用与每个类别关联的测试域名来测试该策略是否正常工作。

配置 Gateway 策略以阻止该类别后,当您尝试在浏览器中访问测试域名时,该域名将显示阻止页面;或者当您使用命令行界面执行 dig 时,将返回 REFUSED

测试域名格式

  • 单单词类别 —— 对于名称为单个单词的类别(例如 Malware),测试域名使用以下格式:

    <NAME_OF_CATEGORY>.testcategory.com
  • 多单词类别 —— 对于名称包含多个单词的类别(例如 Parked & For Sale Domains),测试域名使用以下格式:

    • 移除单词之间的所有空格
    • & 替换为 and
    • 将所有字母转为小写

常用测试域名

类别 测试域名
Anonymizer anonymizer.testcategory.com
Command and Control & Botnet commandandcontrolandbotnet.testcategory.com
compromised Domain compromiseddomain.testcategory.com
Cryptomining cryptomining.testcategory.com
Malware malware.testcategory.com
New Domains newdomains.testcategory.com
Parked & For Sale Domains parkedandforsaledomains.testcategory.com
Phishing phishing.testcategory.com
Potentially Unwanted Software potentiallyunwantedsoftware.testcategory.com
Private IP Address privateipaddress.testcategory.com
Spam spam.testcategory.com
Spyware spyware.testcategory.com
Unreachable unreachable.testcategory.com

测试 EDNS 配置

EDNS 客户端子网 (ECS) 是一种 DNS 扩展,它将用户 IP 地址的一部分发送给权威 DNS 名称服务器,从而使它们能够返回地理位置最佳的解答。Cloudflare 发送用户 IP 地址的前 /24 位,以便在保护隐私的同时提供位置信息。如果您为您的 DNS 位置启用了 EDNS 客户端子网,则可以按如下方式进行验证:

  1. 获取您的 DNS 位置的 DoH (DNS over HTTPS) 子域名:

    1. Cloudflare 仪表板中,转到 Zero Trust > Networks(网络) > Resolvers & Proxies(解析器和代理) > DNS locations(DNS 位置)
    2. 选择您要测试的 DNS 位置。
    3. 记录 DNS over HTTPS 的值。
  2. 打开终端并运行以下命令:

    curl 'https://<DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query?type=TXT&name=o-o.myaddr.google.com' -H 'Accept: application/dns-json' | json_pp

    输出中应包含您的 EDNS 客户端子网:

    {
    	"AD": false,
    	"Answer": [
    		{
    			"TTL": 60,
    			"data": "\"108.162.218.211\"",
    			"name": "o-o.myaddr.google.com",
    			"type": 16
    		},
    		{
    			"TTL": 60,
    			"data": "\"edns0-client-subnet 136.62.0.0/24\"",
    			"name": "o-o.myaddr.google.com",
    			"type": 16
    		}
    	],
    	"CD": false,
    	"Question": [
    		{
    			"name": "o-o.myaddr.google.com",
    			"type": 16
    		}
    	],
    	"RA": true,
    	"RD": true,
    	"Status": 0,
    	"TC": false
    }
  3. 要验证您的 EDNS 客户端子网,请获取您的源 IP 地址:

    curl ifconfig.me
    136.62.12.156%

    源 IP 地址应落在您的 EDNS 客户端子网所指定的 /24 范围内。

清除 DNS 缓存

现代网页浏览器和操作系统设计为将 DNS 记录缓存一段设定的时间。当发起对 DNS 记录的请求时,浏览器缓存是检查所请求记录的首个位置。如果响应已被缓存, DNS 策略可能看起来不起作用。

要清除您的 DNS 缓存:

ChromeOS

  1. 转到 chrome://net-internals/#dns
  2. 选择 Clear host cache(清除主机缓存)

Windows

  1. 打开管理员命令提示符或 PowerShell。
  2. 运行以下命令:
ipconfig /flushdns

macOS

  1. 打开 Terminal。
  2. 运行以下命令:
sudo killall -HUP mDNSResponder
sudo killall mDNSResponderHelper
sudo dscacheutil -flushcache

这篇文档对您有帮助吗?