域名白名单的本质是“只放行名单里的域名,其余一律拒绝”,它的设置位置决定了具体操作方式:企业通常在防火墙、DNS、代理或WAF上配置,个人多在路由器的网址过滤或浏览器的策略项里完成,核心动作只有三步确定拦截层、录入域名清单、验证放行与拦截是否都生效。
域名白名单到底在过滤什么
很多人第一次听到这个词,会以为是在域名注册商后台填个名单,其实不是,域名白名单是一套访问控制规则:系统把用户请求里的域名(也就是 HTTP 的 Host 头、HTTPS 的 SNI 字段,或者 DNS 查询的域名)拿出来,和名单比对,命中就放行,没命中就丢弃或返回拦截页。
它和你熟悉的“只允许某个 IP 访问”逻辑一致,只是判断对象从 IP 换成了域名,这个差别带来一个关键后果:域名可以随时解析到新 IP,所以按域名放行比按 IP 放行更灵活,但也更难在底层网络设备上实现,业内专家指出,超过半数的配置失败案例,根源是把域名规则写进了只认 IP 的设备里。
域名白名单怎么设置?先分清它和IP白名单的区别
这是搜索量最高的一类疑问,两者经常被混用,实际适用场景差别很大。
三种访问控制方式的差异
| 控制方式 | 判断依据 | 典型设备/位置 | 适合场景 |
|---|---|---|---|
| IP 白名单 | 源或目的 IP 地址 | 防火墙、安全组、SSH 登录 | 固定出口 IP 的内部系统 |
| 域名白名单 | Host 头、SNI、DNS 查询名 | 代理、DNS、WAF、上网行为管理 | 限制员工访问哪些网站 |
| URL 白名单 | 完整路径或路径前缀 | 反向代理、API 网关 | 精确到接口的权限控制 |
看懂这张表,配置方向就清楚了:
- 你要限制“谁能连进来”,用 IP 白名单,在安全组或 firewalld 里加规则。
- 你要限制“能访问哪些网站”,用域名白名单,位置必须在能解析域名的层,DNS 服务器、正向代理、下一代防火墙的应用识别模块。
- 你要限制“能调用哪个接口”,用 URL 白名单,写在 Nginx 或网关配置里。
行业共识认为,在纯三层设备上做域名白名单是行不通的,因为三层只看到 IP 包,看不到域名,这一点必须先确认,否则后面全是无用功。
企业域名白名单怎么配置:四条常见落地路径
企业环境很少只有一个出口,域名白名单通常要分层部署,下面按从外到内的顺序拆。
出口防火墙与上网行为管理
多数企业级防火墙提供“应用控制”或“URL 过滤”模块,支持按域名匹配,操作路径大同小异:
- 登录设备管理后台,找到“对象”或“策略”菜单下的“域名对象/URL 分类”。
- 新建域名组,逐条录入允许访问的域名,支持精确域名和泛域名两种写法。
- 在安全策略中引用该域名组,动作设为允许,其余流量默认拒绝。
- 保存后查看会话表,确认命中的策略编号是否正确。
注意泛域名的写法差异:有的设备写 .example.com,有的要求 .example.com,写错就只匹配一级子域,漏掉多级子域。
DNS 层拦截:最省事的方案
如果目标只是“不让员工打开某些网站”,在内部 DNS 上做白名单往往性价比最高,用 AdGuard Home 或 dnsmasq 都能实现。
dnsmasq 的做法是在配置文件里加:
address=/#/0.0.0.0
server=/example.com/223.5.5.5
server=/api.example.com/223.5.5.5
第一行把未列出的域名全部解析到无效地址,后面逐条放行需要访问的域名,改完执行 systemctl restart dnsmasq,再用 nslookup 分别测试放行域名和未放行域名,确认一个能解析、一个返回 0.0.0.0。
反向代理与应用层
自建服务常用 Nginx 做域名级访问控制,虽然 allow/deny 指令只认 IP,但可以用 map 匹配 Host:
map $host $allowed {
default 0;
example.com 1;
api.example.com 1;
}
server {
if ($allowed = 0) { return 403; }
...
}
上线前用 nginx -t 校验语法,再 nginx -s reload 平滑生效,改完后用 curl -H "Host: 未授权域名" 请求一次,确认返回 403。
终端与浏览器策略
大企业常用组策略下发浏览器白名单,Chrome 通过 URLAllowlist 和 URLBlocklist 两个策略项控制,路径在注册表 HKLM\SOFTWARE\Policies\Google\Chrome 下,也可以做成 ADMX 模板批量推送,珠三角、长三角一些制造企业的 IT 部门就用这种方式,把车间终端限制在几个生产系统域名内,维护成本比逐台配置低得多。
需要提醒的是,Windows 防火墙本身不支持按域名放行出站流量,它只认 IP 和端口,想按域名控制,只能依靠 DNS 策略或者上层代理,别在防火墙界面里反复找那个不存在的选项。
个人用户:家用路由器和浏览器域名白名单设置方法
家里场景简单得多,两条路可选。
- 路由器上网控制:登录
168.1.1一类管理地址,找到“家长控制”“网址过滤”或“访问限制”,新建规则,把允许的域名填进白名单,选择生效的设备,部分型号只支持黑名单,功能名称里带“仅允许”字样的才支持白名单。 - 浏览器扩展或本地 DNS:装 AdGuard Home 做局域网 DNS,在“过滤器”里写自定义规则,放行语法是
@@||example.com^,或者在浏览器扩展里直接维护允许列表。
个人场景下建议先小范围测试:把规则应用到自己一台设备,确认常用网站都能打开,再推广到全家设备,避免一刀切之后连支付、视频通话都打不开。
域名白名单设置免费吗?成本和维护工作量
这个问题在中小企业里问得很多,结论是:软件层面基本免费,花钱的是设备和服务,以及后续维护的人力。
- DNS 层方案:AdGuard Home、dnsmasq 都是开源免费的,成本只有一台常开的机器或虚拟机。
- 防火墙方案:已有设备一般包含该功能,不额外收费;云上 WAF 按域名数和请求量计费,价格从每月几十元到数千元不等,看防护规格。
- 人力成本最容易被忽略:域名清单需要有人审核、有人更新,业务上线新域名时要同步加白,否则用户会立刻反馈“网站打不开”。
近年来的企业采购实践显示,域名白名单的隐性成本主要落在变更流程上,而不是软件授权上。
配置时最容易踩的五个坑
- 子域没覆盖,只写了
example.com,结果www.example.com、static.example.com全被拦,页面样式加载不出来。 - CDN 回源地址变化,按 IP 放行 CDN 节点,节点一换就失效,应改为按域名或源站校验。
- HTTPS 无法识别域名,设备没开 SSL 检测,就看不到 SNI 之后的路径,只能放行整个站点。
- 规则顺序颠倒,拒绝规则排在允许规则前面,白名单形同虚设,务必确认匹配优先级。
- 没有验证拦截方向,只测了能访问的域名,没测不该访问的,结果规则根本没生效。
域名白名单设置常见问题解答
域名白名单设置后网站打不开怎么排查
按顺序查三层:先 nslookup 域名 看 DNS 是否返回了错误地址;再 curl -I https://域名 看是连接被拒还是返回 403;最后查设备日志里的策略命中记录,多数情况下问题出在域名写法和泛域名覆盖范围上。
泛域名白名单能不能随便用
不建议。.example.com 会把该主域下所有子域全部放行,包括被第三方托管、可能被入侵的子域,较稳妥的做法是精确域名逐条列出,确有大量子域需求时,配合日志监控异常访问。
域名白名单需要定期维护吗
需要,业务域名会新增、下线、迁移,规则不清理就会越积越多,形成“宽松白名单”的安全隐患,常见做法是每季度核对一次清单,把近三个月无访问记录的条目归档,新增条目走变更审批,清单的准确性直接决定这套机制还有没有防护意义。