Skip to content

OpenClash 设置方案

Aethersailor edited this page Dec 28, 2024 · 59 revisions

介绍

本项目创建于2024年4月,保证这是你见过的最详细的 OpenClash 图文设置方案

本方案所实现的效果

严格按照本方案的内容去设置你的 OpenClash 插件,无需套娃其他工具(如 Mosdns)即可实现以下功能:

  1. 闪电般的国内访问速度,国内域名和 IP 地址访问绕过 OpenClash 内核,对国内访问和下载的影响降低到几乎为零。
  2. 完美的 DNS 解析分流,大陆域名使用运行商 DNS 或者你设置的 DNS 进行解析,国外域名使用节点服务器的 DNS 进行解析,取得理论上的最佳最快解析结果;
  3. DNS 无污染,无泄漏
  4. 丰富的分流规则,具备大陆和国外分流功能,流媒体/ChatGPT 等服务均可以选择特定地区节点分流或者特定节点分流,可以搭配 OpenClash 的流媒体解锁探测功能使用;
  5. 节点自动测速优选
  6. 在 OpenWrt 拥有 IPv6 以及节点支持 IPv6 出站的情况下,实现 OpenClash 和 IPv6 的完美兼容和分流
  7. 每日自动更新一次上游规则,一次设置,长期无人值守,不用折腾。即使 OpenClash 出现问题未能启动,也不影响正常上网。
  • 关于旁路由

不建议部署旁路由,强烈建议使用 OpenWrt 作为唯一主路由。
我个人始终坚持认为如果一个主路由可以满足使用需求的情况下,用旁路由纯粹就是脱裤子放屁。
在宽带已经白菜价的今天,流控和多拨从来就不是家庭环境和类家庭环境下的刚需,99%的使用需求都可以用一个 OpenWrt 主路由来解决,增加旁路由纯粹就是给自己找麻烦。
软路由≠旁路由,我很反感网上那些一提软路由上来就是旁路由的教程,完全就是坑小白,如无必要,勿增实体
但是很多人还是热衷于部署旁路由。
所以下文的设置内容虽然都是根据主路由环境而设置的,但是亦在旁路由涉及的设置差异方面进行了对应的说明,请旁路由用户根据自身理解自行修改对应的设置。未说明的部分无需改变。

本项目 issue 和 TG 群组内出现的问题,90%都是和旁路由有关,更加印证了我的观点。

  • 关于 IPv6

在确保你的节点支持 IPv6 出站的情况下,搭配本项目另一个方案实现 OpenClash 和 IPv6 的完美兼容
https://github.com/Aethersailor/Custom_OpenClash_Rules/wiki/OpenWrt-IPv6-设置方案
不清楚自己的节点是否支持 IPv6 的话,可以向机场客服发工单来确定,或者按照方案内容进行设置后测试节点如果不具备 IPv6 出站能力再关闭 OpenClash 的 IPv6 功能

  • 关于 DNS

强烈建议使用运营商通告的 DNS 进行国内域名的解析,不论是解析速度还是结果的科学性,都不是第三方 DNS 可以比拟的

三大运营商的 DNS 都不存在对国内域名的污染,而且绝对是你的线路的最优解析结果,根本不需要用第三方 DNS 替代,更不需要用 SmartDNS 或 Mosdns 之类的工具选优
根据本人长期测试,三大运营商 DNS 提供的国内域名解析服务永远是最优最近的 CDN,和 DNS 插件优选的解析结果一致。 以本人所在的城市为例,电信和联通线路的 DNS 延迟都非常低,及时是高峰时段,延迟也只有1-2毫秒,白天的话可以稳定只有 1 毫秒的延迟,这时候还去用 DNS 插件很有可能是负优化

当然了,我这里和运营商 DNS 在同一个城市,所以延迟表现比较优秀。如果你和运营商 DNS 不是同城的话,延迟可能就没那么优秀了,但一般也会优于第三方 DNS。

网上某些帖子教小白用 AdGuardHome 一顿折腾,添加一堆没用的第三方 DNS,然后弄出来个 5ms 甚至更高的解析延迟完全就是负优化。别说什么乐观缓存,路由器上什么缓存都没有浏览器自身的 DNS 缓存作用大。

按照本项目的方案设置后,运行商 DNS 只用于解析中国大陆域名,不存在污染问题,也不用担心运营商 DNS 没有 DoT/DoH 加密。海外域名全部远端解析取得离机场最近的 CDN,更没有污染
除非你是使用的长城宽带之类的存在流量穿透的宽带线路,DNS 延迟很高或无法正确解析到离你地理位置最近的 CDN,否则根本就没有必要用 DNS 优化插件
如果你非要认为 1ms 的解析时间差距会明显影响上网体验,那我无话可说,一定要使用第三方 DNS 或者 DNS 优化插件的话,方案中对应步骤会提及如何进行设置

  • 关于广告过滤

按照本项目方案,只使用 OpenClash 一个插件,且中国大陆域名均绕过了 OpenClash 内核,因此无法依靠 OpenClash 的规则来完成广告过滤
所以本方案使用了 Dnsmasq 来实现广告过滤功能,借助 OpenClash 的“开发者选项”,实现 OpenClash 每次启动时,为 Dnsmasq 拉取最新的广告过滤规则。同时由于 OpenClash 每次启动会重启 Dnsmasq,可以使广告过滤规则即时生效。
具体本项目Wiki中的方案:
广告拦截设置方法

  • 为何不提供 uci 一键设置脚本

uci 一键设置脚本可以实现一键应用本方案的设置内容至 OpenClash 中,从技术上来说毫无难度。
但是项目维护者坚持认为,授人以鱼不如授人以渔,希望看到本方案的小白可以按图索骥,亲手完成设置,并由此延伸至了解 OpenClash 的各项设置的功能。
因此,暂时不提供一键设置脚本,也许以后会吧……
(主要还是我懒,给自己找个理由)

OpenClash 图文设置方案

严格按照文字和图片中的内容进行设置,其他选项不清楚如何设置的,照抄即可。
一定要认真阅读,一定要认真阅读,一定要认真阅读,不要跳着看,不要抄图片不看文字!否则可能会错过关键设置!
OpenWrt 做主路由和旁路由时的设置差异,相关的步骤中会提及,按照你的情况选择就行
不懂的情况下不要自己乱改设置!必须使用本项目的订阅模板!否则不保证效果正常。
个别需要你自己根据实际情况进行选择的步骤,会讲明原理,只要智商正常都能看懂,仔细阅读即可。
先按照本方案配置好,确保正常工作了,再自由发挥去修改设置,不要自己瞎设置出了问题再来问我,这是浪费时间
如果你有个性化需求,先通过本方案搞明白设置,后续 fork 本项目自己修改模板即可。

准备工作

查看运行商通告的 DNS

旁路由跳过此步骤
首选确保你的 WAN 口设置中勾选了“自动获取 DNS 服务器”,这样才能获取到运营商下发的 DNS

然后在 OpenWrt 的首页查看是否取得了运营商下发的 DNS,如果你打算使用其他的国内第三方 DNS,可以跳过此步骤。

如果你使用的是旁路由,自行到主路由中查看运营商 DNS。

关闭 Dnsmasq 自带的 DNS 重定向功能

该功能位于 网络 > DHCP/DNS 页面中,务必关闭

若不关闭,有可能会引起 DNS 解析问题,并会导致本方案的广告拦截设置无法拦截国外域名

确保 OpenWrt 可以正常访问 Github

OpenClash 的各项数据库以及插件和内核的更新,全部需要连接 GitHub 完成
如果你的 OpenWrt 一直可以正常访问 Github 可以跳过此步骤

如果你的网络不能正常访问 Github ,提前在 OpenClash 中启用 Github 地址修改功能
进入OpenClash > 覆写设置 > 常规设置,在 Github 地址修改功能的下拉菜单中选择一个 CDN 节点,推荐选择 testingcf,建议根据自己的实际网络情况多做尝试,点击页面下方的“应用配置”即可生效。

准备工作完成,开始设置 OpenClash

设置 OpenClash 常规设置

以下列出了 OpenClash 的设置内容,每个需要设置的页面均有图文说明,按照方案逐页进行设置即可 所有未提及的页面,均不需要设置

模式设置

注意:本方案是适用 Fake-IP 模式的,如果你不愿意使用 Fake-IP 模式,可以关闭页面了

首先设置运行模式,在页面下方点击切换到 Fake-IP 模式,然后上方的运行模式选择 Fake-IP(增强) ,勾选使用 Meta 内核,然后点击页面下方的“保存配置” 如果你的页面上没有“使用 Meta 内核”的选项,是正常的,因为后来 OpenClash 只有 Meta 一个内核可选。
Fake-IP(增强)模式可以提供最佳的性能,如果出现了 NAT 问题,可以尝试切换为 Fake-IP(混合)模式。记得要勾选 UDP 转发,如果你的固件包含了 Docker 功能,直接选择 Fake-IP(TUN)模式即可
目前 OpenClash 默认使用 Meta 内核,如果你的页面上有“使用 Meta 内核”这个选项,说明你的 OpenClash 版本太老旧,先更新插件。

流量控制

按照图中设置进行勾选设置,务必勾选绕过大陆功能来提升访问和下载性能。

如果你平时要使用 Google Play,请在 流量控制 > 绕过指定区域 IPv4 黑名单中添加如下四条域名:
services.googleapis.cn
googleapis.cn
xn--ngstr-lra8j.com
clientservices.googleapis.com

DNS 设置

设置使用 Dnsmasq 进行转发,顺手点一下“Fake-IP 持久化缓存清理”按钮,不用管是否提示出错,然后点击页面下方的“保存配置”
注意务必勾选下方的“禁止 Dnsmasq 缓存 DNS”选项

“启用第二 DNS 服务器“功能,可以指定一些域名强制使用你指定的 DNS 进行解析,并返回真实 IP。 与 Fake-IP Filter 功能不同的是,第二 DNS 服务器解析的结果不受 OpenClash 的分流策略影响,而是跳过 OpenClash 直接交给指定的 DNS 服务器解析 所以此处建议填入国内 DNS 服务器,域名填写可能会被误识别为国外域名并且需要返回真实 IP 的域名,比如你的本机的 DDNS 域名
(图片懒得更新了)

流媒体增强(可选)

此处设置主要用于使 OpenClash 可在流媒体分流时在众多节点中自动选择解锁对应区域的流媒体服务的节点,此功能主要用于在一些流媒体解锁不稳定且混乱的杂牌机场中自动寻找对应的节点。
如果你所使用的机场的流媒体解锁服务相对比较稳定,或者已经知晓你所使用的机场哪些节点可以解锁你所需要的区域的流媒体服务,则可以跳过此页面的设置,设置完成后在 Clash 的控制面板中自行选择即可。 如果你要使用自动选择节点的功能,首先勾选你要使用的流媒体服务,比如 Netflix,然后按照本方案的策略组名称在“策略组筛选”中进行填写,本方案中流媒体相关的策略组包括 Netflix、YouTube、Disney+等等
解锁区域填写你要解锁的流媒体服务区域,比如你要解锁新加坡区就填写SG。解锁节点筛选填写需要测试的节点名称的关键词,比如填写“香港|新加坡”就会在包含以上关键词的节点中进行筛选
例如设置了 Netflix 和 SG,如此设置后,OpenClash 启动后就会在你订阅的节点的清单中自动寻找解锁新加坡(SG)区域的 Netflix 服务的节点作为分流策略组“Netflix”的指定节点
设置后记得点击页面下方的“保存配置”,再次提醒此页是可选功能,非必要不使用。
以图中内容为例,此处设置的为包含关键词为“Netflix”或“奈飞”的策略组探测能够解锁新加坡(SG)区域内容的节点,节点关键词为Singapore。

在 OpenClash 启动后,会在日志中输出解锁结果

IPv6 设置

如果你打算启用 IPv6 功能,并且你的节点支持 IPv6 出站,则按照本项目的方案中的 IPv6 设置方案完成 OpenWrt 的 IPv6 设置后,再设置此页面即可。
https://github.com/Aethersailor/Custom_OpenClash_Rules/wiki/OpenWrt-IPv6-设置方案
保证设置后 OpenClash 和 IPv6 功能完美兼容。
旁路由建议放弃 IPv6 功能,或者自己折腾寻找出路
如果你的节点不支持 IPv6 出站,或者你的 OpenWrt 没有开启 IPv6 功能,则禁用“IPv6 流量代理”和“允许 IPv6 类型 DNS 解析”

如果你启用了此处的 IPv6 功能,并且平时要使用 Google Play,请绕过指定区域 IPv6 黑名单中添加如下四条域名:
services.googleapis.cn
googleapis.cn
xn--ngstr-lra8j.com
clientservices.googleapis.com

GEO 数据库订阅

OpenClash 一些兜底的分流数据库,保持最新没有坏处。按照图中设置即可,具体用途不多做解释,可以自行查找相关资料。
注意,每次数据库更新成功后 OpenClash 会自动重启,建议设置更新时间为不用网的时候,比如凌晨。
设置完后点击页面下方的“保存设置”,然后顺手把三个“检查并更新”按钮都点一遍。在 OpenClash 的“运行日志”页面可以查看更新结果,此操作可以顺带验证你的 OpenWrt 是否能顺利访问Github 或者你在之前设置的 CDN 比如 testingcf

大陆白名单订阅

OpenClash 一些兜底的分流名单,保持最新没坏处。按照图中设置即可,具体用途不多做解释,可以自行查找相关资料。
注意,每次白名单更新成功后 OpenClash 会自动重启,建议设置更新时间为不用网的时候,比如凌晨。
设置完后点击页面下方的“保存设置”,然后顺手把“检查并更新”按钮点一下。在 OpenClash 的“运行日志”页面可以查看更新结果,此操作可以顺带验证你的 OpenWrt 是否能顺利访问Github 或者你在之前设置的 CDN 比如 testingcf

版本更新

此页面用于更新 OpenClash 的内核以及 OpenClash 自身
建议选择 dev 版本,然后点击下方的一键更新。在 OpenClash 的“运行日志”页面可以查看更新结果,此操作可以顺带验证你的 OpenWrt 是否能顺利访问 Github 或者你在之前设置的 CDN 比如 testingcf
如果使用过程中遇到错误,可以选择 master 版本,再点击一键更新即可切换回稳定版,目前来看一些新特性必须 dev 版本的 OpenClash 和 Meta 才能支持,所以非特殊情况强烈建议使用 dev 版本
2024年12月18日:目前 master 版本和 dev 版本没有太大区别,自行选择即可
如果你使用 dev 版本,下图中的界面将只显示 Meta 更新选项,这是正常的,因为另外两个内核早已停止更新(删库跑路)

PS:本项目维护者日常使用的也是 dev 版本的 OpenClash 和 Meta 内核

至此,OpenClash 中的常规设置设置完成

设置 OpenClash 覆写设置

DNS 设置

OpenWrt 是主路由的情况下,此处勾选按照图中进行勾选。使用运营商通告的 DNS,勾选“追加上游 DNS”。
旁路由以及坚持使用其他 DNS 的用户,则不要勾选“追加上游 DNS”。
如果你有 DDNS 服务的域名,填写进下方的 Filter 中。

页面下方有 NameServer、Fallback 和 Default-NameServer 三个服务器分组,在本方案中应当取消全部的服务器勾选。 如果你坚持不愿意使用运营商提供的 DNS,则不要勾选“追加上游 DNS”,并且在 NameServer 中保留第一个勾选,填入你要使用的国内第三方 DNS 的地址,例如 223.5.5.5。
如果你使用 DNS 优化插件(如 SmartDNS 等),则不要勾选“追加上游 DNS”,并且在 NameServer 中保留第一个勾选,填入 127.0.0.1:[Smart DNS 端口号]。
如果你的 OpenWrt 是旁路由, 则不要勾选“追加上游 DNS”,并且在 NameServer 中保留第一个勾选,填入运营商 DNS 或者你要使用的其他国内第三方 DNS。
注意在本方案中,NameServer 只用做 OpenClash 的规则判断以及所有的直连域名解析,且本方案中 OpenClash 配置了绕过大陆功能,所以此处填入多个服务器并没有任何意义,更不要自作聪明的填写国外 DNS 服务器。
再一次强烈建议此处全部取消勾选,配合上面一页设置的“追加上游 DNS”来使用运营商 DNS 从而提高解析速度!(仅限 OpenWrt 是主路由的情况下)
为什么要取消 Fallback 服务器?在取消 Fallback 服务器勾选的情况下,OpenClash 会把域名发送到远端的机场服务器上进行解析,只有这样才会根据不同区域的节点取得理论上的最佳解析结果
设置完成后,点击页面下方的“保存配置”按钮

Meta 设置

所有设置按照图中进行即可

规则设置

按照图中勾选,该功能有一定的副作用,具体见 vernesong/OpenClash#3942
个人建议:有 BT、PT、P2P 下载的较强需求的开启,没有的则关闭
如果开启后仍然有相关流量走了代理,可以尝试将漏网之鱼策略组指定为直连,但是漏网之鱼策略组指定为直连会导致 DNS 泄露问题(仅仅是不能通过测试网站的测试,并非真正泄露),建议自行取舍。
开启后,日志中可能出现少量 MATCH 报错,无需担心,不影响日常使用。

开发者选项

此项设置来自恩山论坛相关教程贴
按照图中内容,找到 Hash Demo 下的对应代码,取消注释并修改 true 为 false
ruby_edit "$CONFIG_FILE" "['experimental']" "{'sniff-tls-sni'=>false}"
新版本中似乎没有这一行选项,忽略本条即可。

配置订阅

在页面中设置一个更新时间,因为本方案中使用的订阅模板使用了大量的第三方规则,而这些规则中的大部分是每天更新的,因此建议同样设置订阅更新时间为每天更新。
OpenClash 在更新订阅的过程中会短暂中断,所以建议设置在不用网的时间段内更新,比如凌晨
设置好后点击“保存配置”,然后点击“添加”按钮,添加一个订阅

按照图中内容填入订阅信息即可,如果你使用的是 Vless 节点,建议使用品云的订阅后端
配置文件名随意填写。注意订阅转换模板选择“自定义模板”然后在下方填入本项目的自定义模板地址:
https://raw.githubusercontent.com/Aethersailor/Custom_OpenClash_Rules/main/cfg/Custom_Clash.ini
注意!必须使用本项目的订阅转换模板才能实现免套娃无 DNS 泄露!
当然了你也可以自写模板或者用其他的无泄漏模板
**注意,某些机场的订阅链接会出现订阅转换后的所有节点均无法使用,或者提示“校验失败”的情况,请启用此处的“跳过证书验证”功能再重新更新订阅 **

最后点击下方的“保存配置”返回到配置订阅页面,此时整个设置工作已完成

更新配置并启动

点击配置订阅页面中的“更新配置”按钮,OpenClash 即可开始更新配置并启动

运行日志

在上一步操作中点击“更新配置”后,切换到运行日志页面观察 OpenClash 的启动情况
出现“OpenClash 启动成功,请等待服务器上线!”后,即表示 OpenClash 已经启动成功

Dashboard 控制面板

在 OpenClash 的运行状态页面中,点击 Dashboard 控制面板按钮启动控制面板

在控制面版中可以按照个人喜好以及机场节点的情况更改对应分流策略的节点
本项目的订阅转换模板中包括的策略已经足以应对大部分的分流需求
**注意!考虑到流媒体用户大多需要简体中文资源,因此流媒体服务大多设置了默认为新加坡节点,如果你没有新加坡节点,记得自己手动切换为其他地区。 ** 如果你是使用单一自建节点的用户,请在dashboard里将所有的策略组选择为你自建的节点!

至此,OpenClash 已经完美设置完毕!日常使用中几乎不需要打理,相关规则会根据你的设置每日自动更新上游规则,理论上只要不遇到bug,永远不用去人为操作。

检验结果

下面检查以下你按照本方案实现的效果吧!
注意,Clash 面板中,“漏网之鱼”策略组不要选择直连!

检查 DNS 是否存在泄漏

访问 IPLEAK.NET 检查 DNS 是否存在泄漏
https://ipleak.net/
正常情况下,页面上方应当出现你的机场节点的 IPv4 和 IPv6 地址,页面下方无中国大陆 DNS 出现即为 DNS 无泄漏情况

注意:泄露检测以 https://ipleak.net/https://browserleaks.com/dns 的检测结果为准
某些 DNS 泄漏检测网站(例如 https://www.browserscan.net/zh/dns-leak)的检测服务器使用了某些 DDNS 机构的域名,为了确保 DDNS 服务不受影响,DDNS 类域名在本项目的规则中是强制直连的也就是使用国内服务器进行解析,因此无法通过此类检测网站的测试,属于正常现象,忽略即可。

检查 IPv6 分流情况(仅限使用了支持 IPv6 出站的节点)

访问 IPv6 test:https://ipv6-test.com/
网页中的“Address”项目应当显示当前节点的 IPv4 和 IPv6 地址,证明节点的 IPv4 和 IPv6 出站均正常工作

分别访问 IPv6 测试网站 test-ipv6 的国内镜像站点和国外镜像站点
国内站点:https://testipv6.cn/
访问国内镜像站点时,检测页面上应当出现你的宽带的 IPv4 和 IPv6 地址以及国内运营商名称(比如 CHINA UNICOM 即为中国联通),并且以10/10的评分通过测试
注意:近期发现 testipv6 的国内镜像站点改用海外 API 获取 IP,因此下图中国内站点有可能会显示海外 IP 地址,如果显示了海外 IP ,请忽略 IP 地址内容,仅关注是否通过测试即可!
国外站点:http://test-ipv6.com/
访问国外镜像站点时,检测页面上应当出现你的机场节点的 IPv4 和 IPv6 地址以及节点服务器的网络运营商名称(比如 Akari Networks 之类的境外网络运营商),并且以10/10的评分通过测试
注意,由于上游分流规则的变化,国外镜像站点有可能检测到的仍然是国内的 IPv6 地址,忽略这种情况即可,以“IPv6 test”网站的检测结果为准

如果以上两个网站测试均通过,即为 IPv6 已经完美分流

至此,你的 OpenWrt 上已经拥有了绝对完美、秒杀全网一切方案贴的 OpenClash 完美设置,且所有的细节设置都已经尽力为性能、安全和效率而优化,尽情享受吧!

声明

本方案编写于2024年4月,由 Wiki 的编辑历史可以检索到 Wiki 第一个版本是2024年5月6日编写,前后修订几十个版本进行了完善。
Wiki 编辑历史
项目维护者允许转载本方案内容和以本方案内容进行二次创作,比如以本项目内容制作视频等,但不得从事非法活动。
Youtube 已经有上不止一个 UP 主搬运了本方案内容,当然肯定会有人说“OpenClash 设置就摆在那里都是巧合雷同罢了”
内容相同我无所谓,但是连原理解释和示例操作也雷同,甚至重点强调部分都相同,开发者选项也照抄,就差照着读了。
虽然如此,但是这些形式我都不反对,毕竟任何搬运行为都是有利于小白的,制作视频盈利我也不反对,毕竟这也是要花时间的,也是付出时间的劳动。
你可以以任何形式,利用本项目的内容,但是请注明本项目的地址,请对项目维护者和 LICENSE 抱有最基本的尊重态度。
请注明本项目的地址,请注明本项目的地址,请注明本项目的地址!
感谢合作!