用途:对一组代理节点和中转链做一次体检,产出一张能一眼看出哪台病了、病在哪里的健康表。只读不写,发现问题只给判断和建议动作,不自动切换、不自动重启,切换由人工决策。
用法: /ray-nodecheck 全部节点加中转链 /ray-nodecheck us-node-1 单节点深查 /ray-nodecheck --sub 只核订阅有效性
先定位节点清单来源:有节点清单仓或配置文件(如 config.json 里的 nodes[])则读出 name/server/port/ssh_host;有中转链探针日志则读各中转宿主机探针日志目录下的 <chain>.log;都没有则让用户提供节点清单(server:port 加 ssh 别名)。
主要能力:
- 逐节点存活探测,并行执行端口存活与连接延迟检测,命令为 curl -sk -o /dev/null -w '%{http_code}' --connect-timeout 10 https://<server>:<port> 与 curl -sk -o /dev/null -w '%{time_connect}' --connect-timeout 10 https://<server>:<port>。返回 400 或 200 视为活,超时、拒绝或 000 视为死;延迟小于 0.5s 为好,0.5 至 2s 为慢,超过 2s 或超时判死。若节点跑 3x-ui,可选经面板 API 拉入站实时流量与 client 状态。
- 出口 IP 核验,命令为 ssh <ssh_host> 'curl -s --connect-timeout 10 https://api.ipify.org',用于确认未被识别或污染、确认中转链出口落在正确末端机器、预警 IP 变动,与上次记录比对,变了标黄。
- 中转链探针日志读取,命令为 ssh <relay_host> 'tail -5 <probe_log_dir>/<chain>.log' 与 ssh <relay_host> 'grep -vE "result=ok" <probe_log_dir>/<chain>.log | tail -50'。日志为 logfmt 单行,字段含 chain、tcp_connect_ms、wg_hs_age_s、probe_dur_ms、result。result 为 ok 表示健康,slow 表示延迟高,tcp_timeout 表示转发不通,wg_stale 表示隧道实质断,wg_unknown 表示探不到握手;wg_hs_age_s=-1 表示从未握手或探测失败。切链事件历史看 switches.log。
- 订阅有效性核对,命令为 curl -s <订阅URL> | head -50,核对能否拉到合法 YAML、proxies 节点数是否等于期望、proxy-groups 节点名是否对得上、rule-providers 的 .mrs 源 URL 是否可达,并抽查订阅中每个节点的 server:port 与存活结果是否一致。
- 输出健康表,按严重度排序,死的在最上面,表下附红项建议动作、需人工决策的切换标注、与上次巡检的差异。
适用场景:代理节点与中转链的日常巡检、故障定位、订阅有效性核查。
限制与纪律:全程只读,不重启服务、不改配置、不切链;探测超时不等于节点死,需区分探测环境问题与节点真死,拿不准就多探一次或换探测点;敏感信息如含 token 的订阅 URL 与出口 IP 在输出中保留,但提醒用户该表不要公开贴出。具体探针日志目录、节点清单来源与部署细节需按实际环境确定,资料未提供固定路径。