OpenClash另类用法:域名白名单:放行指定网站+拦截所有网站访问
在企业办公、校园网络或专用设备场景中,常常需要限制内网设备仅能访问指定业务网站,禁止访问无关网页(如百度、抖音、淘宝等),同时保证业务网站登录正常、无报错,且配置重启不丢失。
本文将详细讲解如何通过 OpenClash 插件,在 iStoreOS 软路由上实现这一需求,全程可复制操作,新手也能轻松上手。同时也让 OpenClash 变成一个【内网侠客】
一、方案核心优势
✅ 精准拦截:仅放行指定网站,其他任何外网网页、链接全部禁止访问
✅ 登录无报错:自动放行业务网站依赖的 CDN、统计、接口等资源,避免页面空白、登录失败
✅ 重启不丢失:所有配置永久保存,软路由重启后自动生效
✅ 豁免管理IP:指定管理IP可不受限制,随时登录软路由后台、修改配置
✅ 操作简单:OpenClash 可视化配置,无需复杂命令,复制粘贴即可完成
二、适用环境
- 软路由系统:iStoreOS(任意版本,本文适配最新版)
- 核心插件:OpenClash(需要安装mate内核,这个过程不表,自行解决)
- 需求场景:内网网段(示例:192.168.10.0/24)仅允许访问指定3个业务网站,其他全拦截;管理IP(示例:192.168.10.169)不受限制。
三、前期准备
1. 安装 OpenClash
自行安装OpenClash(需要安装mate内核,这个过程不表,自行解决)
2. 准备替换信息(重点!)
本文所有 示例网站、IP、网段 均为虚拟内容,实际使用时需替换为自己的业务信息,替换清单如下(标注「需替换」的必须修改):
内网业务IP+端口(示例:192.168.88.119:8080/XXX/)→ 需替换为自己的内网业务地址
放行域名1(示例:demo1-business.com)→ 需替换为第一个业务网站域名
放行域名2(示例:demo2-business.com)→ 需替换为第二个业务网站域名
业务依赖域名(示例:demo-cdn.com、demo-stat.com)→ 需替换为业务网站依赖的CDN、统计域名
内网网段(示例:192.168.10.0/24)→ 需替换为自己要限制的内网网段
管理豁免IP(示例:192.168.10.169)→ 需替换为自己的软路由管理IP
提醒:务必替换所有示例信息,否则配置无法适配你的实际环境,导致业务网站无法访问或限制失效!
四、完整配置步骤(核心)
步骤1:配置 OpenClash 核心文件(config.yaml)
1. 进入 OpenClash 插件后台 → 点击「配置管理」→ 选择「配置文件编辑」→ 粘贴下方完整配置到左框(已替换为示例信息,需自行修改)。
2. 粘贴完成后,点击「保存配置」。
mixed-port: 7890
allow-lan: true
mode: rule
log-level: info
dns:
enable: true
listen: 0.0.0.0:53
default-nameserver:
- 223.5.5.5 # 国内DNS,无需修改
- 119.29.29.29
nameserver:
- 223.5.5.5
- 119.29.29.29
rules:
# 1. 放行内网业务系统(需替换为自己的内网IP)
- IP-CIDR,192.168.88.119/32,DIRECT # 示例内网IP:192.168.88.119,替换为自己的业务IP
# 2. 放行核心业务网站(需替换为自己的业务域名)
- DOMAIN-SUFFIX,demo1-business.com,DIRECT # 示例业务域名1,替换为实际域名
- DOMAIN-SUFFIX,demo2-business.com,DIRECT # 示例业务域名2,替换为实际域名
# 3. 放行业务依赖资源(需替换为自己的依赖域名,如CDN、统计)
- DOMAIN-SUFFIX,demo-cdn.com,DIRECT # 示例CDN域名,替换为业务依赖的CDN
- DOMAIN-SUFFIX,demo-stat.com,DIRECT # 示例统计域名,替换为业务依赖的统计域名
# 4. 放行内网所有地址(无需修改,适配大多数内网网段)
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
# 5. 最终规则:所有未在白名单内的请求,全部拒绝(禁止修改)
- MATCH,REJECT步骤2:OpenClash 关键设置(确保生效)
1. 进入 OpenClash → 「运行模式」→ 选择「规则模式」(必须选择,否则白名单不生效)。
2. 进入「覆写设置」→ 确认「设置自定义上游 DNS 服务器」的nameserver和default-nameserver, 223.5.5.5 和 119.29.29.29已勾选,其他去掉勾选。
3. 进入「插件设置」→「流量控制」→ 勾选「绕过服务器地址」把「绕过指定区域 IP」设置为【禁用】 ;确保局域网所有设备自动使用软路由的 DNS,避免绕过白名单限制。
4. 进入「运行状态」页,在「配置文件」框选择配置好的config.yaml文件。启动 OpenClash 插件,等待 1-2 分钟,让配置生效。
步骤3:防火墙配合(双重保险,确保限制生效)
登录软路由 SSH(工具:Xshell、Putty 等),复制以下命令,一次性粘贴执行,清空干扰规则,让 OpenClash 全权控制网络:
# 放行管理 IP(192.168.100.169)不受限制
uci set firewall.allow_admin=rule
uci set firewall.allow_admin.name='ALLOW-ADMIN'
uci set firewall.allow_admin.src='lan'
uci set firewall.allow_admin.dest='wan'
uci set firewall.allow_admin.src_ip='192.168.10.169'
uci set firewall.allow_admin.target='ACCEPT'
# 放行 OpenClash 相关端口
uci set firewall.allow_clash=rule
uci set firewall.allow_clash.name='ALLOW-CLASH'
uci set firewall.allow_clash.src='lan'
uci set firewall.allow_clash.dest='wan'
uci set firewall.allow_clash.src_ip='192.168.100.0/24'
uci set firewall.allow_clash.dest_port='7893 7890 7891 53'
uci set firewall.allow_clash.target='ACCEPT'
# 保存并重启
uci commit firewall
/etc/init.d/firewall restart五、效果验证(必做)
配置完成后,分别用「限制网段设备」和「管理IP设备」测试,确保符合以下效果:
1. 限制网段设备(示例:192.168.10.XXX,非管理IP)
✅ 可正常访问:内网业务IP(192.168.88.119:8080/XXX/)、demo1-business.com、demo2-business.com
✅ 可正常登录业务网站,页面、图片、按钮无空白、无报错
❌ 无法访问:百度、抖音、淘宝、京东等所有非白名单网站
2. 管理IP设备(示例:192.168.10.169)
✅ 可正常访问任何网站,无任何限制
✅ 可正常登录 iStoreOS 后台、OpenClash 后台,修改配置
✅ 可正常使用 SSH 连接软路由
3. 重启验证
重启软路由,等待启动完成后,再次测试上述效果,确认配置不丢失、限制正常生效。
六、常见问题排查
问题1:业务网站登录报错、页面空白 → 检查是否遗漏了业务依赖的CDN、统计域名,在 OpenClash 规则中添加对应的 DOMAIN-SUFFIX 规则。
问题2:其他网站仍能访问 → 确认 OpenClash 运行模式为「规则模式」,DNS 劫持已开启,防火墙命令已执行。
问题3:重启后配置丢失 → 确认 OpenClash 配置已保存,防火墙规则已执行(命令中的 uci commit 已生效)。
问题4:管理IP仍被限制 → 检查防火墙规则中的管理IP是否替换正确,执行命令后是否重启了防火墙。
七、注意事项(重点提醒)
所有示例信息(IP、域名、网段)必须替换为自己的实际信息,否则配置无效!
OpenClash 插件需保持运行状态,若意外停止,需手动重启,否则限制失效。
若业务网站新增依赖域名(如新增CDN、接口域名),需在 OpenClash 规则中添加对应的放行规则。
不要随意修改 OpenClash 配置中的核心参数(如 mixed-port、dns 配置),避免出现网络异常。
八、总结
本方案通过 OpenClash 插件实现严格的域名白名单,相比传统的 ipset+防火墙方案,更精准、更稳定,能自动适配业务网站的依赖资源,彻底解决登录报错、页面空白的问题,同时保证管理IP的灵活性。
整个配置过程无需复杂的技术操作,复制粘贴即可完成,适合新手和企业用户使用,配置完成后一次生效,重启不丢失,真正实现「仅放行指定网站,其他全拦截」的核心需求。