BASELINE:openwrt_bypass 稳定层
只放不常变的内容:环境事实、机制陷阱、命令速查、文档地图。
当前状态与待办见 docs/HANDOFF.md;变更过程见 docs/SOP*.md。
1. 环境事实
| 项 |
值 |
| 宿主 |
dell-R620(Ubuntu,管理地址 192.168.31.249,eno2 = .250 独立兜底入口) |
| 旁路由 |
OpenWrt 24.10 KVM 虚拟机,192.168.31.2,网关 192.168.31.1,不提供 DHCP |
| 登录 |
ssh root@192.168.31.2(仅密钥,密码认证已关闭) |
| 代理 |
OpenClash 0.47.156 + Mihomo v1.19.31(compatible 版,适配 Sandy Bridge 无 AVX2) |
| 端口 |
mixed 7893、HTTP 7890、socks 7891、API 9090(面板 /ui) |
| API 密钥 |
uci -q get openclash.config.dashboard_password(不入文档) |
| 代理认证 |
运行时 yaml 的 authentication(当前形如 <用户>:<口令>) |
| 在跑配置 |
机场 fsc,uci get openclash.config.config_path = /etc/openclash/config/fsc.yaml;运行时 /etc/openclash/fsc.yaml |
| 订阅更新 |
每天 04:00(cron openclash.sh),GeoIP 每周一 05:00,chnroute 每周一 00:00 |
| 选优定时 |
每 5 分钟 speed_select.rb(#speed_select),日志 /root/speed_select.log |
| 工具 |
ruby 3.3.10、curl 有;无 python3 / jq;ruby 的 json、net/http 被拆包不可用 |
2. 机制性陷阱
| 陷阱 |
说明 |
mihomo url-test 不含带宽 |
只测首包延迟,不读 body —— 对 10MB 端点 delay 也仅 0.65 s。带宽必须自建实测 |
url-test 组无法动态增删成员 |
成员只能来自配置;要"排除某节点"须走覆写脚本 + 完整重启 |
| TProxy 不劫持 22 端口 |
本 Clash 只接管 80/443 等端口;Harbor 到香港跳板的 ssh 隧道(22)直连,不经 Clash —— 排障时别看错方向 |
url-test 会挑到低带宽节点 |
它按延迟选优,而延迟最低 ≠ 带宽最好(实测日本-HY2-47 延迟 161ms 但仅 714 KB/s)。主链路必须固定到具体节点,不能指向 url-test 组 |
| select 组的选中项被持久化 |
存在 cache 里,改成员顺序不会改选中项,须用 API PUT /proxies/<组> 显式设置一次 |
| 透明代理路径走本机即直连 |
订阅自带 SRC-IP-CIDR,192.168.31.2/32,DIRECT(防回环);用显式端口(源 127.0.0.1)或从其它设备测才走代理 |
| OpenClash「快速启动」跳过重建 |
改 custom/ 配置后不 touch /etc/config/openclash,改动静默不生效 |
openclash stop 会置 enable=0 |
之后 restart 会被拒(OpenClash Now Disabled, Need Start From Luci Page) |
| JSON 可用 YAML 解析 |
JSON 是 YAML 子集,OpenWrt 上 YAML.load(json_str) 可替代缺失的 json 库 |
auto_smart_switch 不可用 |
会改成 type: smart,标准内核 fatal |
| 广告/信息占位节点 |
机场在订阅里塞 server: 0.0.0.0 或"剩余流量/套餐到期"类节点,被 url-test 选中会全断;由 clean_nodes.rb 每次启动剔除 |
3. 命令速查
# --- 服务 ---
/etc/init.d/openclash status
touch /etc/config/openclash && /etc/init.d/openclash stop && sleep 3 && \
uci set openclash.config.enable=1 && uci commit openclash && /etc/init.d/openclash start
# --- 组与节点(在 OpenWrt 上执行)---
S=$(uci -q get openclash.config.dashboard_password)
curl -s -H "Authorization: Bearer $S" http://127.0.0.1:9090/proxies | \
ruby -ryaml -e 'd=YAML.load(STDIN.read)["proxies"]; %w[便宜机场 优选 测速 自动选择].each{|k| v=d[k]; puts "#{k}: #{v["type"]} now=#{v["now"]} (#{v["all"].size})"}'
# --- 出口与带宽(在宿主执行)---
curl -s -m 20 -x "http://<认证>@192.168.31.2:7893" https://chatgpt.com/cdn-cgi/trace | grep -E '^(ip|loc|colo)='
curl -s -m 45 -x "http://<认证>@192.168.31.2:7893" -o /dev/null -w 'speed=%{speed_download}\n' \
'https://speed.cloudflare.com/__down?bytes=5242880'
# --- 选优脚本 ---
ruby /etc/openclash/custom/speed_select.rb --dry-run # 预览,不切主组
ruby /etc/openclash/custom/speed_select.rb --force # 强制完整测速并切换
tail -20 /root/speed_select.log
# --- 订阅更新 ---
crontab -l | grep openclash
4. 文档地图
| 文档 |
用途 |
docs/HANDOFF.md |
当前状态与待办(SessionStart 注入) |
docs/BASELINE.md |
本文件:稳定环境事实与速查 |
docs/SOP.md |
旁路由底座改造(宿主网络 + OpenWrt VM) |
docs/SOP-openclash.md |
OpenClash 订阅与选优配置历次变更(第 13 章 = 2026-10-01 带宽门槛选优) |
recovery-plan.md |
断线恢复预案 |
frp_openvpn_tunnel/ |
独立的 FRP/OpenVPN 隧道工程(另有自己的 docs/SOP.md) |
来源:/home/rain/Documents/kvm/openwrt_bypass/docs/BASELINE.md | 最后更新:2026-10-01 13:17(由 build/sync.py 同步,请勿在站点侧修改)