对话笔记直发:openclash配置与WSL代理迁移总结。分类:网络基建。
tags: [OpenClash, WSL, SSH, 路由器, 代理迁移, 免密登录, dropbear]
整理日期:2026-08-14 设备:兆能 ZN M2(OpenWrt,ipq60xx,aarch64_cortex-a53),局域网 IP
局域网IP(已脱敏)本机环境:Windows + WSL2(Ubuntu-24.04),WSL 路径/mnt/vps,本机即\\wsl.localhost\Ubuntu-24.04\mnt\vps
一、最终目标
把代理从「Windows 本机 V2Ray(端口 10808)」整体迁移到「路由器 OpenClash 透明代理」,实现:
- Windows 电脑、WSL、Docker 默认都走路由器,关闭 Windows V2Ray 也不影响上网。
- 保留一条手动回退方案:哪天手动关掉路由器 OpenClash,可在 Windows 重新开 V2Ray 接管。
- 两个 vless 节点自动切换 + 手动切换都可用。
- 指定网站走直连(DIRECT)。
二、路由器 OpenClash 配置
1. 基本信息
- OpenClash 版本:
0.45.129-beta,内核 mihomo / clash_meta - 订阅源配置:
/etc/openclash/config/1元.yaml - 运行时配置:
/etc/openclash/1元.yaml(由 OpenClash 从订阅源生成) - 本地主配置(推送源,唯一真相):
/mnt/vps/op/vless_config.yaml - 启用开关:
uci set openclash.config.enable=1(注意是enable不是enabled)
2. 两个 vless 节点
| 名称 | 地址 | 类型 |
|---|---|---|
Reality-aws | “你的服务器IP(已脱敏):1443 | vless + reality |
vless9443-CF-Tunnel-443 | douy.indevs.in:443 | vless + ws + tls |
3. 代理组(核心)
proxy-groups:
- name: "AUTO" # 自动切换组
type: fallback
url: https://www.baidu.com
interval: 120
proxies:
- "Reality-aws"
- "vless9443-CF-Tunnel-443"
- DIRECT # 两个都挂 → 直连
- name: "PROXY" # 手动切换组(给用户用)
type: select
proxies:
- "AUTO"
- "Reality-aws"
- "vless9443-CF-Tunnel-443"
- DIRECT- 自动切换逻辑:
AUTO是 fallback 类型,每 120 秒测速,谁通走谁;两个都挂自动降级到DIRECT。 - 手动切换逻辑:用户切
PROXY组,可选AUTO(自动)/ 指定节点 / 直连。
4. 规则(关键片段)
GEOIP,CN,DIRECT:国内 IP 直连。- 来自
z.md的 15 个域名 →DOMAIN-SUFFIX,...,DIRECT(需直连的网站)。 MATCH,PROXY:其余走代理。
5. DNS
- 模式:
redir-host(OpenClash 把我们写的 fake-ip 改写了) nameserver:223.5.5.5/119.29.29.29fallback:8.8.8.8/1.1.1.1/ 阿里 DNS
6. 外部控制面板(yacd)
- 面板地址:
http://局域网IP(已脱敏):9090/ui/yacd/ external-controller:0.0.0.0:9090secret:123456(弱口令,建议改强)
三、IPv6 冲突修复
问题:OpenWrt 装 Clash 常见 IPv6 冲突——WSL/设备拿到公网 IPv6 后,流量绕过路由器代理直接出去,导致部分网站不走代理或网络异常。
排查:检查 br-lan 是否还带公网 IPv6 地址。
修复:
- 关闭
wan6接口。 - 关闭 LAN 口的
ra(路由通告)和dhcpv6。 - 验证:
br-lan不再持有公网 IPv6 地址,IPv6 流量也回到路由器透明代理管控下。
四、yacd 面板访问问题(排错记录)
| 现象 | 根因 | 解决 |
|---|---|---|
面板打开报 Oops, something went wrong! | 用户误删了 yacd 里保存的后端,面板默认连 localhost:9090(连的是用户电脑,没有 clash) | 重新在 yacd 右下角【切换后端】填入 http://局域网IP(已脱敏):9090 + 密钥 123456 |
填短链 shturl.cc/... 返回 Not Found | 把短链当 API 地址了;404 说明服务器在,但路径不是 clash API | 正确地址是 http://局域网IP(已脱敏):9090 |
打开 http://局域网IP(已脱敏):9090/ 报 {"message":"Unauthorized"} | 浏览器没带 Bearer Token,clash 正常拒绝(401 类) | 这是正常现象,让 yacd 带密钥访问即可,API 本身健康 |
切到 AUTO 报 Selector update error: proxy not exist | 原 PROXY 是 fallback 类型,成员里没有 AUTO | 重构为:AUTO 独立 fallback 组,PROXY 改为 select 且首成员为 AUTO |
验证:手动切到 Reality-aws 后,出口 IP 变为 你的服务器IP(已脱敏),生效。
五、旧订阅残留清理
清理了迁移前的历史残留(避免干扰):
- 路由器上:
.bak、.bak2、vless.yaml等旧配置。 - 本机上:
sub_1yuan*、clean_sub.py等清理脚本与备份。
六、WSL / Windows 代理迁移(核心改造)
1. 问题
Windows 上的 V2Ray 监听 127.0.0.1:10808,WSL 通过 localhost:10808 转发走代理。一旦在 Windows 关掉 V2Ray,WSL 立刻没网。我们要让默认走路由器,V2Ray 只作为手动备用。
2. 改造动作
/etc/systemd/system/pi-web.service:删掉写死的HTTP_PROXY/HTTPS_PROXY=http://127.0.0.1:10808,只保留NO_PROXY=192.168.*,172.16.*,10.*,127.*,localhost。/etc/systemd/system/docker.service.d/proxy.conf:同样删掉 10808 的HTTP_PROXY/HTTPS_PROXY,只保留NO_PROXY。- 新建
/root/proxy.sh(手动回退脚本):#!/usr/bin/env bash V2RAY="http://127.0.0.1:10808" NOPROXY="192.168.*,172.16.*,10.*,127.*,localhost,<local>" case "$1" in v2ray) export http_proxy="$V2RAY" https_proxy="$V2RAY" HTTP_PROXY="$V2RAY" HTTPS_PROXY="$V2RAY" export no_proxy="$NOPROXY" NO_PROXY="$NOPROXY"; echo "[proxy] -> Windows V2Ray ($V2RAY)";; off|router) unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY no_proxy NO_PROXY echo "[proxy] -> 关闭(走路由器 OpenClash 透明代理)";; status) echo "http_proxy=$http_proxy"; echo "https_proxy=$https_proxy";; *) echo "用法: source ~/proxy.sh v2ray | off | status";; esac - Windows 桌面一键切换脚本(已建在
C:\Users\fengx\Desktop\):switch_auto.bat/switch_reality.bat/switch_vless9443.bat- 原理:用 curl
PUT http://局域网IP(已脱敏):9090/proxies/PROXY,带Authorization: Bearer 123456,一键切节点。
3. 默认行为
- 新开的终端 / 服务:无代理变量 → 直连 → 由路由器 OpenClash 透明代理接管。
- 手动回退:在终端
source ~/proxy.sh v2ray切回 Windows V2Ray;source ~/proxy.sh off切回路由器。
七、今日重点排错:死代理 10808 卡住运行中的进程
现象
改完 systemd 配置、重启 daemon 后,Open Code CLI(opencode)还是没网,codex 也报同样问题。
根因(关键认知)
改的是「配置文件」,但已经在跑的进程手里那份环境变量清不掉。进程不死,死代理就一直跟着它。
Windows V2Ray 关掉后,127.0.0.1:10808 成了死代理,所有继承了它的运行进程全部断网。而且这些 CLI 是用户早先在 10808 还活着时独立开的终端,不归 pi-web.service 管——所以单纯重启 pi-web 救不了它们。
排查发现
| 进程 | 角色 | 状态 |
|---|---|---|
9364 | pi-web.service(旧) | 攥着 10808(配置已改,但进程没重启) |
51276 | 旧 codebuddy CLI | 攥着 10808(独立 WSL 终端) |
194370 | opencode --yolo | 攥着 10808(就是用户说的”Open Code CLI”) |
106956 / 51253 | 上述 CLI 的父 bash 终端 | 攥着 10808 |
10517 | dockerd | 攥着 10808(只改了配置没重启,docker pull 会挂) |
280849 | codex | 环境已干净,无 10808(23:08 新起,落在干净 shell) |
处置动作
systemctl restart pi-web.service→ 新进程(281183)环境干净。kill掉卡死的opencode(194370)及其终端106956、孤儿51253(先 SIGTERM 后 SIGKILL)。systemctl restart docker.service→ 新 dockerd(281702)丢掉 10808。- 全局核查:确认全系统已无任何进程持有
127.0.0.1:10808。
codex 专项说明
- codex 配置指向局域网网关
http://局域网IP(已脱敏):8317/v1(本地 “muyuan” 服务),不是直连外网。 - 当前 codex 进程环境零代理变量,网关在线可达,干净环境直连 google=200。
- 结论:codex 已被这次系统级清理顺带修好;若仍看到旧窗口没网,关掉重开即可。
验收
- 新干净 shell:
google=200,出口 IP你的服务器IP(已脱敏)(走Reality-aws节点),证明路由器透明代理生效。
八、给用户的最终操作清单
日常(默认)
- Windows 关掉 V2