Windows防火墙无法按域名过滤DNS请求,但可通过组合策略实现近似效果:先创建出站规则阻断所有UDP/TCP 53端口请求,再新建高优先级允许规则放行白名单DNS服务器(如114.114.114.114),并手动配置网卡DNS为固定可信地址,禁用自动获取。
windows 自带防火墙无法直接“全局拦截所有未经授权的外部 dns 请求”,因为它的出站规则不支持按 dns 查询内容(如域名)过滤,仅能基于协议、端口、ip 或应用程序做控制。但你可以通过组合策略,有效限制非信任 dns 流量,达到近似效果。
用 Windows 防火墙阻止非指定 DNS 服务器的 UDP/TCP 53 端口出站请求
这是最贴近你需求的可行方案:只允许系统向你认可的 DNS 服务器(如 114.114.114.114、8.8.8.8 或内网 DNS)发起 DNS 查询,其余全部拦截。
- 打开“高级安全 Windows 防火墙” → 左侧点击“出站规则” → 右侧点击“新建规则”
- 选择“端口” → 下一步 → 选“UDP”,在“特定本地端口”留空,“特定远程端口”填 53 → 下一步
- 选择“阻止连接” → 下一步
- 默认全选域(域、专用、公用)→ 下一步
- 给规则命名,例如“阻断非白名单DNS_UDP” → 完成
- 重复上述步骤,再建一条针对 TCP 53 的相同规则(部分DNS查询、大响应或DNSSEC会走TCP)
配套设置:只允许访问白名单 DNS 服务器
上面的规则会一刀切阻断所有 DNS 出站,所以必须先放行你信任的目标服务器,否则本机将完全无法解析域名。
- 新建一条出站规则 → 类型选“自定义” → 协议类型选“UDP”,远程端口“53”,远程 IP 地址选“下列 IP 地址” → 添加你允许的 DNS 服务器(如 114.114.114.114、223.5.5.5)→ 动作选“允许连接”
- 同样再建一条 TCP 53 + 同样 IP 的允许规则
- 确保这两条“允许”规则的顺序在“阻断”规则之前(可在“出站规则”列表中右键调整顺序,越靠上优先级越高)
关键补充:禁用自动获取 DNS,强制使用白名单服务器
仅靠防火墙不够——如果网卡仍设为“自动获取 DNS”,系统可能从 DHCP 拿到不可控的 DNS 地址,而防火墙又没放行它,就会导致断网。必须手动锁定 DNS。
- 进入“网络和 Internet 设置” → “更改适配器选项” → 右键当前网络 → “属性” → 双击“Internet 协议版本 4 (TCP/IPv4)”
- 勾选“使用下面的 DNS 服务器地址”,输入你信任的首选和备用 DNS(如 114.114.114.114 和 114.114.115.115)
- 取消勾选“自动获得 DNS 服务器地址”,并清空备用 DNS 栏位(或填同一可信地址),避免 fallback 到未知 DNS
注意事项与局限
该策略对普通用户场景足够有效,但需注意:
- 某些应用(如 Chrome 内置的 DNS over HTTPS / DoH)会绕过系统 DNS 设置,直接发 HTTPS 请求到 443 端口。防火墙无法识别其 DNS 意图,需额外在浏览器或组策略中禁用 DoH
- 若使用企业代理或零信任客户端(如 ATrust),它们可能劫持网络栈并覆盖 DNS 配置,导致上述设置失效
- 该方案不阻止 DNS 域名本身,只限制通信目标;如需按域名拦截,应结合 hosts 文件或路由器 URL 过滤











