1整体设计:三条解析路径
我们建议企业把 DNS 解析分成三个层级:
- 核心域(corp.example.com): 全部走内网权威, 走 Unbound + Bind 组合;
- 外部业务(需认证 SaaS): 走内网递归 + EDNS Client Subnet 精准调度;
- 互联网通用解析: 走快连净化池, 既快又干净, 同时记录日志供审计。
三层之间的 fallback 顺序是 核心域 → 外部业务 → 净化池, 任意一层失败自动向下走。
2递归解析器:Unbound 落地
Unbound 是个轻量、高性能、内存安全的递归解析器, 支持 DoH/DoT、RPZ、ECS, 几乎是为企业场景量身定做。
# /etc/unbound/unbound.conf 关键片段
server:
interface: 0.0.0.0@53
interface: ::0@53
do-tcp: yes
do-udp: yes
tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt"
# 启用 EDNS Client Subnet
module-config: "validator iterator"
send-client-subnet: 192.168.0.0/16
# 配置快连净化池为上游
forward-zone:
name: "."
forward-tls-upstream: yes
forward-addr: 10.10.0.53@853#kls.kapolians.com.cn
# 启动 & 验证
systemctl enable --now unbound
dig @127.0.0.1 example.com +short
性能调优:unbound.conf 里把
num-threads 设为 CPU 物理核数, msg-cache-size 给到 256m, 单机即可支撑 5 万 QPS。3终端 DoH 推送:GPO / MDM 模板
内网解析器再好, 终端用户如果手动改了 DNS 就形同虚设。下面是企业最常用的两种强制方式:
3.1 Windows GPO 推送 DoH
1
打开组策略管理
在域控上运行 gpmc.msc, 编辑一条针对目标 OU 的 GPO。
2
启用 DoH 模板
计算机配置 → 管理模板 → 网络 → DNS 客户端 → 关闭智能多宿主名称解析 = 已禁用。
再启用 配置 DNS over HTTP 并填入 https://kls.kapolians.com.cn/dns-query{?dns}。
3
推送到客户端
gpupdate /force 立即生效, 重启后 netsh dns show state 应显示 DoH 已启用。
3.2 macOS / iOS MDM 描述文件
用 Apple Configurator 2 或 Mosyle / Jamf 推送一份 DNSProxy 描述文件, payload 内容:
<key>DNSSettings</key>
<dict>
<key>DNSProtocol</key>
<string>HTTPS</string>
<key>ServerURL</key>
<string>https://kls.kapolians.com.cn/dns-query</string>
</dict>
4日志接入 SIEM
净化池每天产出 30~50 亿条 NXDOMAIN 与 A 记录命中, 这些都是绝佳的威胁情报。接入 SIEM 的方法:
- 在快连企业控制台开 日志推送 开关, 选择 Splunk / ELK / QRadar;
- 指定 syslog 服务器地址与端口(默认 UDP 514);
- SIEM 侧按字段拆分: 时间、源 IP、域名、响应类型、命中规则;
- 把"同一源 IP 1 分钟内 NXDOMAIN > 200"标记为 DGA 疑似行为,触发告警。
告警优化经验:NXDOMAIN 单独告警意义不大, 关键是把"非常规顶级域 + 高频次"做组合, 准确率能从 30% 提升到 92%。
5季度演练剧本
我们建议每季度做一次"防劫持应急演练", 剧本大致如下:
- 情景设定: 模拟某重要业务域名被劫持, 客户端访问异常;
- 第一步:运维在 SIEM 看到 NXDOMAIN 告警, 5 分钟内确认劫持范围;
- 第二步:登录快连企业控制台, 在"应急策略"里把该域名临时升为"L1 强制净化";
- 第三步:Unbound 端通过 RPZ 阻断污染源 IP, 推送刷新;
- 第四步:终端重新解析验证, 业务恢复;
- 第五步:事后复盘, 把攻击特征写进净化池的灰名单规则。
完成 5 步闭环通常 30 分钟以内,远低于纯靠人工切换 DNS 的 2 小时。