请注意,本文编写于 648 天前,最后修改于 18 天前,其中某些信息可能已经过时。
快速上手
建议还原openclash的默认配置后再按本文操作,访问地址 http://openwrtIP地址/cgi-bin/luci/admin/services/openclash/restore 来还原默认配置。
首先需要让openwrt能够正常连上网络,主路由配置好拨号上网,旁路由则需要设置好网关和DNS。
如果内核下载失败,可以点击下载到本地,然后上传到对应的目录。
然后前往
openclash
- 全局设置
- 版本更新
点击检查并更新内核。建议DEV/TUN两个内核都下载,如果不使用TUN模式/混合模式可以不下载TUN内核。
openclash依赖clash内核运行,如果没有clash内核是无法启用的!
之后到配置文件订阅
添加机场的订阅地址并保存配置后,再点击更新配置即可。
如果只是需要能够科学上网,不搞那些花里胡哨的,那么到这里就已经可以正常进行科学上网了。
进阶使用
OpenClash配合MosDNS
建议先按这篇文章,安装好MosDNS。
需要注意的是请使用下面的config.yaml
,而不是上面那篇文章中的config.yaml
log:
level: error
file: "/etc/mosdns/mosdns.log"
data_providers:
- tag: geosite
file: ./geosite.dat
auto_reload: true
- tag: geoip
file: ./geoip-only-cn-private.dat
auto_reload: true
plugins:
# 缓存
- tag: cache
type: cache
args:
size: 4096
lazy_cache_ttl: 172800
# 转发至本地服务器的插件
- tag: forward_local
type: fast_forward
args:
upstream:
- addr: tls://120.53.53.53:853
enable_pipeline: true
- addr: tls://223.6.6.6:853
idle_timeout: 8
trusted: true
# 转发至远程服务器的插件
- tag: forward_remote
type: fast_forward
args:
upstream:
- addr: tls://208.67.220.220:853
socks5: 127.0.0.1:7891
enable_pipeline: true
- addr: tls://1.0.0.1:853
socks5: 127.0.0.1:7891
enable_pipeline: true
trusted: true
# 匹配本地域名的插件
- tag: query_is_local_domain
type: query_matcher
args:
domain:
- 'provider:geosite:apple-cn'
- 'provider:geosite:google-cn'
- 'provider:geosite:[email protected]'
- 'provider:geosite:alibaba'
- 'provider:geosite:jd'
- 'provider:geosite:cn'
- 'provider:geosite:private'
# 匹配非本地域名的插件
- tag: query_is_non_local_domain
type: query_matcher
args:
domain:
- 'provider:geosite:geolocation-!cn'
# 匹配广告域名的插件
- tag: query_is_ad_domain
type: query_matcher
args:
domain:
- 'provider:geosite:category-ads-all'
# 匹配本地 IP 的插件
- tag: response_has_local_ip
type: response_matcher
args:
ip:
- 'provider:geoip:cn'
- 'provider:geoip:private'
# 主要的运行逻辑插件
# sequence 插件中调用的插件 tag 必须在 sequence 前定义,
# 否则 sequence 找不到对应插件。
- tag: main_sequence
type: sequence
args:
exec:
# 删除ECS
- _no_ecs
# 缓存
- cache
# 屏蔽广告域名
- if: query_is_ad_domain
exec:
- _new_nxdomain_response
- _return
# 已知的本地域名用本地服务器解析
- if: query_is_local_domain
exec:
- forward_local
- _return
# 已知的非本地域名用远程服务器解析
- if: query_is_non_local_domain
exec:
- forward_remote
- _return
# 剩下的未知域名用 IP 分流。
# 这里借助了 `fallback` 工作机制。分流原理请参考 `fallback`
# 的工作流程。
# primary 从本地服务器获取应答,丢弃非本地 IP 的结果。
- primary:
- forward_local
- if: "(! response_has_local_ip) && [_response_valid_answer]"
exec:
- _drop_response
# secondary 从远程服务器获取应答。
secondary:
- _prefer_ipv4
- forward_remote
# 这里建议设置成 local 服务器正常延时的 2~5 倍。
# 这个延时保证了 local 延时偶尔变高时,其结果不会被 remote 抢答。
# 如果 local 超过这个延时还没响应,可以假设 local 出现了问题。
# 这时用就采用 remote 的应答。单位: 毫秒。
fast_fallback: 200
servers:
- exec: main_sequence
listeners:
- protocol: udp
addr: 0.0.0.0:5335
- protocol: tcp
addr: 0.0.0.0:5335
然后需要先在 DHCP/DNS中的DNS转发
填写一个国内公共DNS,例如 223.5.5.5
。
这样可以让OpenClash启用的时候,可以正常更新订阅,之后启用OpenClash的时候,它会自动修改这里的DNS转发
。
在OpenClash的DNS设置中勾选本地DNS劫持
、自定义上游DNS服务器
和禁止Dnsmasq缓存DNS
。
自定义上游DNS服务器中的Nameserver
和Fallback
都得是MosDNS的!
之后前往配置文件订阅
中添加订阅再点击更新配置即可,这样OpenClash就配置完了。
33 条评论
这样搭配使用的话,openclash可以使用fakeip模式吗?
没必要。。。
大佬 按照你的教程DNS 转发自动修改成 127.0.0.1#7874,把OpenClash的DNS设置 中本地DNS劫持取消勾选后,DNS 转发自动修改成 127.0.0.1#5335,这是为啥,怎么弄才是正确的?
是你启用的其他的dns插件给劫持了
这是因为openclash常规设置里面,dns监听端口是7874
如果加上AdGuardHome做广告拦截呢
我现在是adg是dnsmasq的上游,openclash是adg的上游,MosDNS是openclash的上游
套这么多的吗。。。
我最后还是恢复成了你推荐的配置,adg 我暂时去掉了,不过还是希望看到你推荐下如何使用openclash和这两者搭配或者openclash 和adg的组合。
这个不好说,我现在已经没在用这套方案翻墙了
但是好像设置的有问题,暂时把adg关了,和博主上面设置一样
你好,配置好微信图片加载慢如何解决
我已经没在用这种方式翻墙了,我也不是很清楚
求更新 新教程
这周应该会更新进阶教程,是OpenClash搭配MosDNS
怎么样设置可以steam下载走国区,商店走代理呀!
要你自己修改clash的规则
修改了 还是不好使我看steam下载没走代理 但是很慢!
有设置好吗? 求个规则ヾ(≧∇≦*)ゝ
那是你规则没设置好吧。。。

设置完规则后,你用steam要自己去看steam里下载是走哪儿的CDN
大神,我安装您的说明配置了openclash,但是现在浏览器老是出现DNS_PROBE_FINISHED_NXDOMAI问题,需要等一会,浏览器会自动刷新,然后正常网页出现。请问大神,我这是哪里出了问题
进群说吧,给的信息太少判断不出来。

而且这篇文章有点过时了,过段时间会重写。
你好 请教一下 使用Redir-Host(Tun-混合模式)还需要勾选自定义上游DNS服务器吗?还有我看你文中写到fallback组里面HTTPS端口是433,但是openclash默认端口是空着的,我需要自己把443填上去吗?
如果你是要使用opencalsh里配置的DNS就需要勾选,不勾选就是默认使用配置文件里的。
需要注意的是openclash使用的Fallback组DNS是直连的而非代理,所以需要使用没有污染或者阻断的DOT/DOH。
我在文中用的不是HTTPS。。。是TLS,所以端口是853。
如果是使用HTTPS端口不填也可以。
你好请问有办法让openclash获取dns通过代理吗。因为如果是用直连的方式速度上会很慢,而且可能会遇到阻断而用不了好的国外dns。
clash内核本身的DNS部分就不支持通过代理去查询。。。clash.meta内核支持,你可以去看看,不过需要自己修改配置
大佬你好,我这想请教下,我的openclash只要单独选择自定义上游dns就无法联网了,或者是无法上外网了,请问这是什么原因啊,哪怕是对默认的上游dns随便修改都会导致无法上外网,还有就是按您的设置我连自定义dns都无法做到!那adg该如何具体设置呢?
旁路由请自行检查网段和网关设置是否正常。。。

防火墙规则有没有加。。。
我已经碰到过不少自己不认真看完教程,完全按图照抄的,然后把自己玩断网的了。。。
为什么用了openclash甜糖跑不起来了
一开始就写了呀,别用fakeip模式,用兼容的混合模式,TUN转发UDP的那个
大佬,我旁路由,wan,lan 的自定义dns留空的话,是不是在自定义上游DNS服务器添加我的主路由地址就行了
看你怎么玩,openclash里自定义上游DNS服务器,nameserver一般填写公共DNS和运营商DNS