故障排除
本指南覆盖 RelayCore 使用中的常见问题,按场景分组提供诊断步骤和解决方案。
证书与 TLS
浏览器显示证书不安全
- 原因:RelayCore 生成自签名 CA,未被系统信任
- 解决:生成并安装 CA
relay-core-cli ca generate relay-core-cli ca install # macOS # 或手动(示例) sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.relay-core/ca_cert.pem
curl 报 SSL 错误
- 临时跳过:
curl --cacert ~/.relay-core/ca_cert.pem https://example.com - 环境变量:
export CURL_CA_BUNDLE=~/.relay-core/ca_cert.pem
"Failed to initialize ScriptInterceptor"
- 原因:Deno/V8 运行时初始化失败(通常是内存不足)
- 解决:释放系统内存后重试;若持续失败可不启用脚本功能
连接问题
代理无法启动(端口被占用)
- 检查端口占用:
lsof -i :8080或netstat -an | grep 8080 - 更换监听端口:
relay-core-cli run --listen 127.0.0.1:9090
客户端连接后无响应
- 确认代理地址和端口正确
- 检查系统代理设置(macOS: 系统偏好设置 → 网络 → 高级 → 代理)
- 检查是否有安全软件阻止连接
- 查看代理日志:
RELAY_LOG=info relay-core-cli run
上游请求超时
- 增大超时:
--request-timeout-ms 30000 - 检查上游可达性:
curl -v http://upstream-host/path - 查看 Flow 详情中的错误字段
规则引擎
规则不生效
- 检查
"active": true - 确认
stage匹配流量阶段(例如 ResponseBody filter 不能用于 RequestHeaders 阶段) - 确认 filter 模式正确——
Contains区分大小写 - 确认没有被更高 priority 的规则以
Stop终止 - 通过脚本查看命中的规则:
console.log(flow.matched_rules)
RateLimit 未按预期工作
- 确认
window_ms足够大(最小 1000ms) - 确认 key 中的 Mustache 变量正确(
{{ip}}而非{{clientip}}) - RateLimit 不自动拒绝请求——需配合脚本或后续规则处理
WebSocket
WebSocket 连接立即断开
- 检查
onConnecthook 是否返回了{drop: true} - 检查是否有规则在 Connect 阶段执行了 Drop
WebSocket 消息未显示
- 确认 TUI 或前端处于正确的 WS 标签页
- 检查
DropWebSocketMessage动作是否误删了消息
透明代理
透明代理不拦截流量(macOS)
- 确认 PF 规则已加载:
sudo pfctl -s nat - 确认 RelayCore 以 root 权限运行
- macOS PF UDP 透明代理目前标记为实验性
透明代理不拦截流量(Linux)
- 确认 iptables TPROXY 规则正确
- 确认
SO_ORIGINAL_DST可用(内核 > 2.6) - 检查
/proc/sys/net/ipv4/conf/*/route_localnet设置
性能
代理后请求变慢
- 检查规则数量——每条规则在每个匹配的 flow 上都会执行
- 检查 ResponseBody filter——会缓存完整响应体
- 检查脚本执行时间——
script_hook_duration_us指标 - 关闭不必要的日志:
RUST_LOG=warn relay-core-cli run
内存持续增长
- 检查 Flow 内存上限配置(默认 10000 条)
- 检查脚本 sharedState 是否及时清理(> 10k key 触发 warning)
- 检查 WebSocket 消息缓冲上限(默认 2000 条)
日志与调试
# 完整日志
RUST_LOG=debug relay-core-cli run
# 只看脚本
RUST_LOG=relay_core_script=debug relay-core-cli run
# 只看代理
RUST_LOG=relay_core_lib=debug relay-core-cli run
# 查看实时流事件
curl -N http://127.0.0.1:8082/api/v1/events
# 查看指标
curl http://127.0.0.1:8082/api/v1/metrics
curl http://127.0.0.1:8082/api/v1/metrics/prometheus 获取帮助
- 运行
relay-core-cli --help查看所有命令 - 运行
relay-core-cli run --help查看启动参数 - 查看版本:
relay-core-cli --version - GitHub Issues:github.com/relaycraft/relay-core/issues