OpenWrt插件OpenClash推荐配置
本文推荐设置为Redir-Host兼容模式,默认开启ipv6,规避BT、PT流量走代理,以及dns防泄漏,去广告(可选)。
如需Fake-IP增强模式的设置,可参考
https://github.com/Aethersailor/Custom_OpenClash_Rules/wiki/OpenClash-%E8%AE%BE%E7%BD%AE%E6%96%B9%E6%A1%88
这里进行设置,话不多说我们开始吧~
本文大部分配置参考的上述链接文章的配置,只是针对Redir-Host兼容模式做了些许修改,并建议搭配smartdns做到无需机场节点支持ipv6,同样可以解析ipv6和防泄漏的效果。
一、准备工作
1.1 关闭 DNS 重定向功能
位于 网络 > DHCP/DNS 页面中,务必关闭。
1.2 设置IPv6
这里提一下比较重要的几个点——
(1)关闭 Dnsmasq 的“过滤 IPv6 AAAA 记录”功能
(2)WAN 口设置 IPv6 地址(推荐自动创建)
① 不需要新建 WAN6,已有的 WAN6 接口要删除
② 在 WAN 口的高级设置中,开启 IPv6 的选项,并勾选使用运行商通告的 DNS
③ 禁用IPv6 分配长度
④ 启用委托 IPv6 前缀
(启用的话 lan 是没有 IPv6 地址的)
⑤ IPv6 首选项
不要填,填了会获取不到地址的
⑥ 按图设置


⑦ 在 WAN 接口
的 DHCP
中检查设置,确保 DHCP > IPv6 设置
已经关闭


⑧ 保存并应用设置后,你的接口界面中应该会出现一个虚拟的 wan_6接口。注意此接口是无法编辑设置的。确认红框中的 IPv6-PD
地址,获取到了这个地址才能进行下一步操作


(3)LAN 口设置下发 IPv6 地址
① “委托 IPv6 前缀”
允许下级设备再划分子网,按需勾选


② 参考
https://github.com/immortalwrt/user-FAQ/blob/main/immortalwrt%20%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E6%8C%87%E5%8C%97.md#5-%E5%A6%82%E4%BD%95%E4%BC%98%E9%9B%85%E7%9A%84%E4%BD%BF%E7%94%A8ipv60
的配置,设置 LAN 口的 IPv6 网络地址分配服务,让局域网设备可以取得 IPv6 地址
在 LAN > 高级设置 > IPv6 后缀
中填入 eui64


③ 禁止 OpenWrt 通告 IPv6 地址的 DNS




说个题外话,IPV6如何正确配置端口转发,可以参考这里的配置,在 网络 – 防火墙 – 通信规则 里,高级设置里 地址族限制 设置仅ipv6。
目标地址的格式为——
::42:c0ff:fea8:202/::ffff:ffff:ffff:ffff
前四位为你转发目标地址 公网和LAN口下发的ipv6地址相同 的后四位,/后面的内容是固定的。




1.3 设置 SmartDNS 服务器
自动设置 Dnsmasq 取消勾选,分别设置两组dns,如CN和GW,上游服务器这里,CN组设置国内的任意服务器,GW设置国外的,并在高级设置中勾选“从默认组中排除”和“使用代理”。图中的dns如下(打码的是运营商dns)——
https://doh.pub/dns-query #doh
https://dns.alidns.com/dns-query #doh
8.8.8.8 #tls
1.1.1.1 #tls
https://1.1.1.1/dns-query #doh
https://dns.google/dns-query #doh


高级设置部分如下,勾选IPV6 服务器、绑定到设备、双栈 IP 优选、域名预加载、缓存过期服务、缓存大小(建议设置20000以上)、持久化缓存、解析本地主机名、停用 HTTPS 记录解析、域名 TTL 最小值(设置为5)。


第二 DNS 服务器设置如下,设置好服务器组为GW,勾选跳过测速、跳过 Cache即可。


代理服务器设置格式,如socks5://Clash:[email protected]:7891,用户和密码在openclash的覆写设置的最下面的“设置 SOCKS5/HTTP(S) 认证信息”中,ip填本地地址127.0.0.1即可,端口是openclash的覆写设置常规设置中的“SOCKS5 代理端口”。


二、OpenClash插件设置
2.1 模式设置
设置模式为Redir-Host兼容模式后,不用做任何修改。


2.2 流量控制
*仅允许常用端口流量设置为默认常用端口,并开启绕过中国大陆。


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


2.4 流媒体增强(可选)
此页是可选功能,非必要不使用。建议跳过,或者参考
https://github.com/Aethersailor/Custom_OpenClash_Rules/wiki/OpenClash-%E8%AE%BE%E7%BD%AE%E6%96%B9%E6%A1%88#24-%E6%B5%81%E5%AA%92%E4%BD%93%E5%A2%9E%E5%BC%BA%E5%8F%AF%E9%80%89
进行设置。
2.5 黑白名单
如果开启了ipv6,建议使用“不走代理的局域网设备 Mac”来指定局域网设备直连或者代理。
如果只有ipv4,那么直接设置“不走代理的局域网设备 IP”就行了,如“192.168.2.5”。
2.6 IPv6 设置
只要你拥有本地公网ipv6地址,即使你的节点不支持 IPv6 出站,请同样开启“IPv6 流量代理”和“允许 IPv6 类型 DNS 解析”,并设置绕过中国大陆。


如果你启用了此处的 IPv6 功能,并且平时要使用 Google Play,请绕过指定区域 IPv6 黑名单中添加如下四条域名:
services.googleapis.cn
googleapis.cn
xn--ngstr-lra8j.com
clientservices.googleapis.com
2.7 GEO 数据库订阅
三个全部勾选定时更新,频率建议设置如——每周一3:00、4:00、5:00这样。
更新时间务必错开,几个数据库、白名单以及订阅更新不要选择同一更新时间。
设置完后点击页面下方的“保存设置”,然后顺手把三个“检查并更新”按钮都点一遍。
在 OpenClash 的“运行日志”页面可以查看更新结果。
2.8 大陆白名单订阅
同样的,勾选自动更新,如每周一6:00。
注意,每次白名单更新成功后 OpenClash 会自动重启,建议设置更新时间为不用网的时候,比如凌晨。
设置完后点击页面下方的“保存设置”
,然后顺手把“检查并更新”
按钮点一下。
在 OpenClash 的“运行日志”
页面可以查看更新结果。
2.9 开发者选项(去广告,可选)


推荐使用“原版 adblockfilters 去广告规则 + Github 520 加速规则”
# ==============以下是广告过滤规则拉取脚本=================
(
VERSION="1.4"
MAX_WAIT_TIME=30
WAIT_INTERVAL=2
elapsed_time=0
if /etc/init.d/openclash status | grep -q "Syntax:"; then
LOG_OUT "[广告过滤规则拉取脚本] 当前版本 $VERSION,正在检测 OpenClash 运行状态..."
LOG_OUT "[广告过滤规则拉取脚本] 等待 10 秒以确保 OpenClash 已启动..."
sleep 10
else
LOG_OUT "[广告过滤规则拉取脚本] 当前版本 $VERSION,正在检测 OpenClash 运行状态..."
while ! /etc/init.d/openclash status | grep -q "running"; do
if [ $elapsed_time -ge $MAX_WAIT_TIME ]; then
LOG_OUT "[广告过滤规则拉取脚本] 未能在 30 秒内检测到 OpenClash 运行状态,脚本已停止运行..."
exit 1
fi
sleep $WAIT_INTERVAL
elapsed_time=$((elapsed_time + WAIT_INTERVAL))
done
LOG_OUT "[广告过滤规则拉取脚本] 检测到 OpenClash 正在运行,10 秒后开始拉取规则..."
sleep 10
fi
LOG_OUT "[广告过滤规则拉取脚本] 开始检测 dnsmasq 规则目录..."
UCI_OUTPUT=$(uci show dhcp.@dnsmasq[0] 2>/dev/null)
if echo "$UCI_OUTPUT" | grep -qE 'cfg[0-9a-f]{6}'; then
HASH_ID=$(echo "$UCI_OUTPUT" | grep -oE 'cfg[0-9a-f]{6}' | head -1)
TARGET_DIR="/tmp/dnsmasq.${HASH_ID}.d"
LOG_OUT "[广告过滤规则拉取脚本] 当前 dnsmasq 规则目录: $TARGET_DIR"
elif echo "$UCI_OUTPUT" | grep -qE '@dnsmasq\[[0-9]+\]'; then
TARGET_DIR="/tmp/dnsmasq.d"
LOG_OUT "[广告过滤规则拉取脚本] 当前dnsmasq 规则目录: $TARGET_DIR"
else
TARGET_DIR=$(find /tmp -maxdepth 1 -type d -name "dnsmasq.*.d" | head -n 1)
if [ -z "$TARGET_DIR" ]; then
LOG_OUT "[广告过滤规则拉取脚本] 错误:未找到有效的 dnsmasq 规则目录,脚本已停止!"
exit 1
fi
LOG_OUT "[广告过滤规则拉取脚本] 检测失败,使用已存在的 dnsmasq 规则目录: $TARGET_DIR"
fi
if [ ! -d "$TARGET_DIR" ]; then
mkdir -p "$TARGET_DIR"
fi
LOG_OUT "[广告过滤规则拉取脚本] 清除已有规则…"
rm -f "$TARGET_DIR"/*ad*.conf
sed -i '/# AWAvenue-Ads-Rule Start/,/# AWAvenue-Ads-Rule End/d' /etc/hosts
sed -i '/# GitHub520 Host Start/,/# GitHub520 Host End/d' /etc/hosts
LOG_OUT "[广告过滤规则拉取脚本] 拉取最新的 adblockfilters 广告过滤规则,规则体积较大,请耐心等候…"
curl -sS -L -4 --retry 5 --retry-delay 1 "https://gh-proxy.com/https://raw.githubusercontent.com/217heidai/adblockfilters/main/rules/adblockdnsmasq.txt" -o "$TARGET_DIR/adblockfilters-for-dnsmasq.conf" >/dev/null 2>/tmp/adblockfilters-curl.log
CURL_EXIT=$?
if [ $CURL_EXIT -eq 0 ]; then
LOG_OUT "[广告过滤规则拉取脚本] adblockfilters 规则拉取成功!保存路径:${TARGET_DIR}/adblockfilters-for-dnsmasq.conf"
else
LOG_OUT "[广告过滤规则拉取脚本] adblockfilters 规则拉取失败 (错误码:$CURL_EXIT),查看 /tmp/adblockfilters-curl.log 获取详细信息。"
echo "CURL Exit Code: $CURL_EXIT" >> /tmp/adblockfilters-curl.log
fi
LOG_OUT "[广告过滤规则拉取脚本] 拉取最新的 GitHub520 加速规则…"
curl -sS -L -4 --retry 5 --retry-delay 1 "https://raw.hellogithub.com/hosts" >> /etc/hosts >/dev/null 2>/tmp/github520-curl.log
CURL_EXIT_GH=$?
if [ $CURL_EXIT_GH -eq 0 ]; then
LOG_OUT "[广告过滤规则拉取脚本] GitHub520 加速规则拉取成功!已追加到 /etc/hosts 文件中。"
else
LOG_OUT "[广告过滤规则拉取脚本] GitHub520 加速规则拉取失败 (错误码:$CURL_EXIT_GH),查看 /tmp/github520-curl.log 获取详细信息。"
echo "CURL Exit Code: $CURL_EXIT_GH" >> /tmp/github520-curl.log
fi
sed -i '/^$/d' /etc/hosts
sed -i '/!/d' /etc/hosts
LOG_OUT "[广告过滤规则拉取脚本] 重新加载 dnsmasq 服务以应用规则…"
/etc/init.d/dnsmasq stop
/etc/init.d/dnsmasq start
LOG_OUT "[广告过滤规则拉取脚本] 脚本运行完毕!"
) &
# ==============广告过滤规则拉取脚本结束==============
三、OpenClash覆写设置
3.1 DNS 设置
启用“自定义上游 DNS 服务器”
,并禁用下方的 Fallback
和 Default-NameServer
下的所有服务器。
PS:fallback就是造成域名偶尔解析失败和dns泄露的原因,迟早会被淘汰掉。
Nameserver-Policy设置如下(指向smartdns中的第一 DNS 服务器)——
"geosite:cn,private,apple":
- 127.0.0.1:6053
Nameserver只保留smartdns中的“第二 DNS 服务器”的地址,如我这里是smartdns里的6553,设置如下图所示——


3.2 Meta 设置
建议启用 GeoIP Dat 版数据库
选项,Geodata 数据加载方式建议禁用,*启用流量(域名)探测和探测(嗅探)纯 IP 连接为必选项,其他设置可以参考图片。


3.3 规则设置
分上下两个
上面(优先匹配)——在订阅的yaml默认规则之前执行
下面(候补匹配) ——在订阅的yaml默认规则之后执行
格式参考如下,请务必带Emoji和空格一起填写,建议直接在yacd复制即可。(我这里是Emoji和wordpress代码编辑器冲突了,无法保存,故删除)
rules:
- DOMAIN-SUFFIX,daydream.dmhy.best,DIRECT
- DOMAIN-SUFFIX,probe.skyey2.com,DIRECT
- DOMAIN-SUFFIX,jpopsuki.eu,DIRECT
- DOMAIN-SUFFIX,hdfans.org,手动选择
- DOMAIN-SUFFIX,pt.btschool.club,DIRECT
- DOMAIN-SUFFIX,t.audiences.me,手动选择
- DOMAIN-SUFFIX,tracker.cinefiles.info,手动选择
- DOMAIN-SUFFIX,tracker.m-team.cc,DIRECT
- DOMAIN-SUFFIX,ipv6-tracker.m-team.cc,DIRECT
- DOMAIN-SUFFIX,tracker.52dic.vip,DIRECT
- DOMAIN-SUFFIX,acg.rip,手动选择


四、OpenClash配置订阅
具体参考
https://github.com/Aethersailor/Custom_OpenClash_Rules/wiki/OpenClash-%E8%AE%BE%E7%BD%AE%E6%96%B9%E6%A1%88#4-%E4%B8%BA-openclash-%E9%85%8D%E7%BD%AE%E8%AE%A2%E9%98%85%E4%BF%A1%E6%81%AF
的方案,不过我是设置的每周一7:00更新,摘录如下——
在页面中设置一个更新时间,因为本方案中使用的订阅模板使用了大量的第三方规则,而这些规则中的大部分是每天更新的,因此建议同样设置订阅更新时间为每天更新。
OpenClash 在更新订阅的过程中会短暂重启,所以建议设置在不用网的时间段内更新,比如凌晨。
注意:开启“绕过中国大陆”后,OpenClash 重启不会影响国内连接。
设置好后点击“保存配置”,然后点击“添加”按钮,添加一个订阅。




我这里就无脑选Custom_Clash.ini了——
本项目的标准订阅转换模板,适配所有需求,推荐使用。
无DNS泄露,可通过泄露检测网站的测试。
使用本项目推荐机场建议直接使用该模板,复刻维护者的使用体验。
https://raw.githubusercontent.com/Aethersailor/Custom_OpenClash_Rules/main/cfg/Custom_Clash.ini
另外,如果的节点不包括 vless/hy2 等较新的节点类型,直接使用默认服务进行转化即可。
如果使用了 vless/hy2 节点,可以在“订阅转换服务地址”
中填入下方地址即可。(PS:2025.05实测不是很稳定,容易连接失败)
https://api.asailor.org/sub
五、检验结果
5.1 检查 DNS 是否存在泄漏
https://ipleak.net
正常情况下,页面上方应当出现你的机场节点的 IPv4 和 IPv6 地址(我这里机场节点没有,所以为空),页面下方无中国大陆 DNS 出现即为 DNS 无泄漏情况。


https://browserleaks.com/dns
同样的,看DNS Leak Test是否出现中国大陆 DNS,没有则为 DNS 无泄漏。
5.2 检查 IPv6
- 国内 IPv6 测试
国内站点:https://testipv6.cn/


- 国外 IPv6 测试


如果节点不支持ipv6,显示如下也是正常的,不影响国内网站的ipv6访问和解析。


恭喜你,折腾完毕,至此,就可以愉快冲浪了~
