Omarchy 第一坑 Flclash 默认启动不了

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

Arch Linux 上 FlClash 节点超时,排查发现节点缺少 client-fingerprint 导致 Reality 握手失败,以及残留 IPv6 策略路由导致 TUN 启动失败。补上指纹并清理残留路由后,普通代理与 TUN 均恢复正常。

🔎

延伸解读

Reality 节点必须配置客户端指纹

文章指出,Reality 协议依赖 uTLS 模拟浏览器握手特征,因此节点配置中必须包含 client-fingerprint 字段。当前内核已移除全局 client-fingerprint 选项,需将指纹(如 chrome)写入具体的 vless 节点。缺少该字段会导致握手失败,表现为节点超时。排查时应检查节点配置,并确保日志级别至少为 warning,以免关键提示被过滤。

TUN 启动失败常源于残留路由规则

TUN 模式需要创建虚拟网卡并安装路由。文章发现,系统存在残留的 IPv6 策略路由规则(如 9000: from all unreachable),其优先级高于正常路由,导致流量被拒绝,TUN 网卡无法创建。类似地,IPv4 规则也可能引用已不存在的接口(标记为 detached)。这些残留规则通常因网卡异常消失而未清理,需手动或通过核心自清理机制移除。

分层排查网络问题:从代理到 TUN

文章建议将连接过程拆解为三步:服务器可达性、代理协议握手、系统流量接管。先确认 443 端口可连,再检查代理核心日志定位握手错误,最后验证 TUN 是否生效。普通代理可用不代表 TUN 正常,需分别测试。使用 curl 时,-x 指定代理测试普通代理,--noproxy '*' 忽略应用层代理但保留 TUN 路由,以验证透明代理。

❓

Q&A

FlClash 在 Arch Linux 上节点超时,日志提示 REALITY is based on uTLS, please set a client-fingerprint,该怎么解决?

需要在具体的代理节点配置中添加 client-fingerprint 字段。找到 type: vless 的节点,添加一行 client-fingerprint: chrome,缩进与 type、server、port 对齐。因为当前内核已移除全局 client-fingerprint 选项,必须写到节点里。修改后重新加载配置即可。

FlClash 的 TUN 模式启动失败,报错 configure tun interface: add route 1: no route to host,如何排查?

检查 IPv6 策略路由是否有残留规则。执行 ip -6 rule 查看,若发现类似 9000: from all unreachable 的规则,说明有异常规则阻止了路由。可临时用仅启用 IPv4 的 TUN 配置启动核心,再正常停止以触发路由清理,确认残留规则消失后恢复 IPv6 配置重启 FlClash。

如何验证 FlClash 的普通代理是否正常工作?

使用 curl 命令显式指定本地代理进行测试:curl --noproxy '' -x http://127.0.0.1:7890 --max-time 10 -sS -o /dev/null -w '%{http_code}\n' https://www.gstatic.com/generate_204。如果返回 204,表示代理请求成功。

FlClash 的 TUN 模式启动后,如何确认系统流量真的被接管了?

去掉显式代理,执行 curl --noproxy '*' --max-time 10 -sS -o /dev/null -w '%{http_code}\n' https://www.gstatic.com/generate_204。--noproxy '*' 让 curl 忽略应用层代理设置,但不会绕过系统 TUN 路由。如果返回 204,说明透明代理生效。

FlClash 日志中看不到握手失败的提示,可能是什么原因?

可能是日志级别设置过高。握手失败的日志级别是 warning,如果客户端日志级别设置为 error,关键提示会被过滤掉。排查时应将日志级别调到 warning 或 debug。

FlClash 在 Linux 上的配置文件通常保存在哪里?

通常保存在 ~/.local/share/com.follow.clash/profiles/ 目录下。

🏷️

标签

➡️

继续阅读