连接排障 · Clash 技术博客

OpenClash Telegram 不走代理怎么修?

OpenClash 网页正常、Telegram 却连不上且仪表盘没有记录时,可检查空的“来源流量访问控制”,删除该条目并重启服务,再按连接记录与 WAN 出站验证。

  • OpenClash
  • Telegram
  • 来源流量访问控制
  • nftables
  • 流量绕过
本文目录

确认 Telegram 根本没有进入 OpenClash

本文处理的是一种很具体的绕过:同一台设备上的网页可以通过 OpenClash,Telegram 却无法连接;刷新 Telegram 时,Dashboard 完全没有对应连接,WAN 侧却能看到它直接出站。

官方 issue #5283 在 ImmortalWrt 25.12.1、fw4/nftables 环境记录了该现象。报告中的空 lan_ac_traffic 条目生成了提前 RETURN 的规则,让大部分 TCP 和 UDP 在进入 Mihomo 前就返回。

如果 Dashboard 能看到 Telegram,并显示规则、策略组和出站节点,流量已经进入内核。此时应转查节点、规则、UDP 或 DNS,不能继续删除来源访问控制。

先按连接记录分流

观察结果更可能的阶段下一步
网页正常,Telegram 无记录,WAN 直接出站透明代理前被 RETURN检查空的来源流量访问控制
Telegram 有记录,但命中 DIRECT规则选择检查该连接命中的规则与策略组
Telegram 有记录,节点报错代理出站固定节点后检查协议、UDP 与网络
所有应用都没有记录OpenClash 接管未生效检查运行状态、模式与防火墙加载

保存设置并保留路由器管理入口

修改防火墙相关选项前,先导出 OpenClash 设置和当前配置,记录运行模式、插件版本、内核版本及来源流量访问控制页面。远程维护时还要确认有独立的 LAN 管理入口。

本次排查只处理一个空条目,不同时更新订阅、切换内核、改 DNS 或重写规则。一次只改一项,才能用重启前后的 Dashboard 和 WAN 路径判断结果。

准备一条可回退路径

  1. 导出当前设置

    把插件设置与当前配置保存到路由器之外,避免误删有效访问控制后无法还原。

  2. 截图空条目页面

    记录条目名称、启用状态、协议、地址族、动作以及所有匹配条件。

  3. 确认本地管理入口

    在 LAN 内打开路由器后台;只有远程入口时,不要直接重启防火墙和 OpenClash。

  4. 固定测试设备

    先只用一台原本复现问题的设备测试 Telegram,其他终端暂时不改设置。

检查空的来源流量访问控制条目

进入 OpenClash 的来源流量访问控制页面,寻找仍为启用状态、动作是返回或不代理,但没有来源地址、目标地址、端口、接口等匹配条件的条目。只有这种空条目才符合本文。

如果条目明确限定了某台设备、某个网段或端口,它可能承担真实的直连需求。不要因为名称相同就删除;先把条件和预期用途记录下来,再判断是否应保留。

只读列出当前 lan_ac_traffic 配置
uci show openclash | grep lan_ac_traffic
官方 issue 中的空条目形态,仅用于对照
openclash.@lan_ac_traffic[0]=lan_ac_traffic
openclash.@lan_ac_traffic[0].enabled='1'
openclash.@lan_ac_traffic[0].proto='both'
openclash.@lan_ac_traffic[0].family='both'
openclash.@lan_ac_traffic[0].target='return'

空条目的判定条件

  • section 类型是 lan_ac_traffic,并且当前 enabled 为 1
  • 动作是 return,协议与地址族可能覆盖 TCP、UDP、IPv4 和 IPv6
  • 没有来源 IP、目标 IP、端口、接口或其他实际匹配条件
  • 该条目不是你为某台设备保留的明确直连策略

用运行时规则确认是不是全量 RETURN

配置里有空条目,还要确认它真的生成了运行时规则。官方报告中的规则匹配 0 到 65535 源端口,并排除 Fake-IP 地址段;它位于 redirect 或 TPROXY 之前,所以连接提前返回。

只读查看 fw4 的 OpenClash 链,寻找带 lan_ac_traffic 注释、条件又近似覆盖全部 TCP 或 UDP 的 RETURN。规则 handle 每次生成都可能改变,不能复制 issue 里的 803、805 直接删除。

只读查看 OpenClash 相关 nftables 链
nft -a list chain inet fw4 openclash
nft -a list chain inet fw4 openclash_mangle

出现近似全量的 lan_ac_traffic RETURN

保留输出并回到界面删除对应空条目,不直接依赖临时 handle。

只有带明确来源或目标条件的 RETURN

它不是空条目生成的全量规则,先核对该策略的真实用途。

没有 lan_ac_traffic 规则

停止本文操作,转查 OpenClash 接管、规则命中、节点或 DNS。

设备没有 nft 命令或链名不同

不要猜测链名和删除规则,保存版本与防火墙信息后按该固件文档排查。

空来源流量访问控制造成的绕过路径
  1. Telegram 发起连接终端请求原本应进入 OpenClash 透明代理
  2. 空 lan_ac_traffic 条目没有来源、目标、端口或接口条件
  3. 全量 RETURN 规则在 redirect 或 TPROXY 之前提前返回
  4. WAN 直接出站流量绕过 Mihomo,Dashboard 没有记录

删除空条目并重启 OpenClash 后,新的防火墙规则不应再包含这条全量 RETURN;Telegram 连接应进入 Mihomo 并出现在 Dashboard。

删除空条目并重启 OpenClash

OpenClash 维护者对该 issue 的处理意见是删除来源流量访问控制。普通用户应优先在 LuCI 页面删除已经确认为空的条目,保存并应用,再重启 OpenClash 让 nftables 规则重新生成。

若界面暂时无法删除,报告者验证过停用该 section 也能恢复。下面的索引只适用于 uci show 明确显示空条目正是第 0 项的设备;索引不同就必须改成实际值。

按最小范围处理

  1. 再次确认条目为空

    核对没有任何来源、目标、端口或接口条件,也没有业务需要依赖它直连。

  2. 优先从 LuCI 删除

    删除该空条目,保存并应用,不改其他访问控制和分流选项。

  3. 重启 OpenClash

    等待配置检查、内核和防火墙规则全部重新加载,不只刷新 Dashboard。

  4. 重新读取 nftables

    确认原来的全量 lan_ac_traffic RETURN 已消失,再开始 Telegram 测试。

仅当空条目确认为第 0 项时使用,索引不同不要照抄
uci set openclash.@lan_ac_traffic[0].enabled='0'
uci commit openclash
/etc/init.d/openclash restart

验证 Telegram 已进入 Mihomo

在同一台测试设备上重新打开 Telegram,同时观察 OpenClash Dashboard。连接应开始出现在列表中,并显示命中的规则、策略组和实际出站;只看到应用恢复还不足以证明不再直连。

再检查 WAN 路径与普通网页。目标是 Telegram 不再绕过、原有网页仍能访问,而且没有误删其他设备需要的明确直连策略。若只有重启后的短暂恢复,应重新检查空条目是否被配置同步写回。

修复完成标准

  • 重启后不再出现无条件的 lan_ac_traffic RETURN
  • Telegram 桌面端或移动端能够完成一次真实连接
  • Dashboard 能看到对应连接、规则、策略组和出站
  • WAN 侧不再显示该流量绕过 Mihomo 直接出站
  • 普通网页、DNS 与其他终端仍按原计划工作

验证失败时看哪里

失败表现说明处理方向
Telegram 仍无 Dashboard 记录接管前仍被绕过检查其他 RETURN、设备访问控制与透明代理入口
已出现记录但连接失败接管已经恢复检查节点、规则、UDP 与目标网络
条目重启后重新出现配置来源仍在写入检查备份恢复、同步脚本或界面残留
其他设备原有直连失效删到了有效策略恢复备份并重建带明确条件的条目

不匹配时回退并更换诊断方向

删除后若影响了原有直连设备,立即恢复设置备份,重启 OpenClash,并把需要直连的来源、目标或端口写成明确条件。不要用一个无条件 return 条目替代多条可解释的访问控制。

没有空条目、没有全量 RETURN,或者 Telegram 本来就出现在 Dashboard 时,本文根因已经排除。此后应根据连接记录转向规则、节点、UDP、DNS 或应用自身网络,不再继续改 nftables。

该 issue 截至本文发布时仍为开放状态,官方也没有给出已收录修复的稳定版边界。因此本文采用删除空配置的维护者建议,不宣称升级某个版本即可自动修复。

回退后重新确认

  • 路由器 LAN 管理入口和普通网络已经恢复
  • 有效的来源访问控制已按明确条件重建
  • OpenClash 重启后配置检查与防火墙加载成功
  • 新的排查方向由 Dashboard 和日志证据决定

参考资料