DNS 策略决定了 Gateway 应如何处理 DNS 请求。当用户发送 DNS 请求时,Gateway 会将请求与你的过滤器进行匹配,并允许查询解析、阻断查询或使用不同的 IP 响应查询。
你可以根据查询或响应参数(如域名、源 IP 或地理位置)过滤 DNS 流量。如果你使用 Cloudflare One Client 或 Cloudflare One Agent 将设备连接到 Gateway,也可以按用户身份进行过滤。
要创建新的 DNS 策略:
- 在 Cloudflare 仪表板 ↗ 中,转到 Zero Trust > Traffic policies(流量策略) > Firewall policies(防火墙策略)。
- 在 DNS 选项卡中,选择 Add a policy(添加策略)。
- 为策略命名。
- 在 Traffic(流量) 下,构建一个逻辑表达式,定义你要允许或阻断的流量。
- 选择符合逻辑表达式时采取的 Action(操作)。例如,我们建议添加一条策略来拦截所有安全类别 (security categories):
选择器 运算符 值 操作 安全类别 (Security Categories) in 所有安全风险 (All security risks) 阻止 (Block) - 选择 Create policy(创建策略)。
有关更多信息,请参阅 DNS 策略。
使用 cURL 创建新的 DNS 策略:
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "All-DNS-SecurityCategories-Blocklist",
"description": "Block known security risks based on Cloudflare'\''s threat intelligence",
"precedence": 0,
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(dns.security_category[*] in {68 178 80 83 176 175 117 131 134 151 153})",
"rule_settings": {
"block_page_enabled": true,
"block_reason": "This domain was blocked due to being classified as a security risk to your organization"
}
}'使用 Terraform 创建新的 DNS 策略:
resource "cloudflare_zero_trust_gateway_policy" "security_risks_dns_policy" {
account_id = var.cloudflare_account_id
name = "All-DNS-SecurityCategories-Blocklist"
description = "Block known security risks based on Cloudflare's threat intelligence"
precedence = 0
enabled = true
action = "block"
filters = ["dns"]
traffic = "any(dns.security_category[*] in {68 178 80 83 176 175 117 131 134 151 153})"
rule_settings {
block_page_enabled = true
block_page_reason = "This domain was blocked due to being classified as a security risk to your organization"
}
}