Gogs hai 1 semana
achega
26dfeb8b08
Modificáronse 1 ficheiros con 204 adicións e 0 borrados
  1. 204 0
      README.md

+ 204 - 0
README.md

@@ -0,0 +1,204 @@
+# mynetspeeder
+
+`mynetspeeder` 现在支持 **透明接管当前服务器的 `direct` TCP 出站**。
+
+目标场景:
+
+- 你本机继续通过 `sing-box` 的 `hy2 19887/19888` 入站使用外网
+- `sing-box` 出站仍然保持 `direct`
+- `mynetspeeder` 在系统层透明接管这些 `direct` TCP 流量
+- 当前主 VPS 直接出站可立即工作
+- 配置的子节点 VPS 会自动连接并参与竞速
+- 子节点不在线时,不影响当前主 VPS 直接使用
+
+## 当前能力
+
+- `relay`:子节点 VPS 中继
+- `edge`:主 VPS 透明接管 `direct` TCP 出站
+- `probe`:查看节点探测与在线状态
+- 主 VPS 本地直连始终可用
+- 子节点可选,多节点在线时自动参与冗余竞速
+- 一键启停脚本:透明接管 `OUTPUT` 链中的 TCP 连接
+
+## 重要说明
+
+- 当前透明模式先实现的是 **TCP**
+- UDP 冗余框架保留在协议设计里,但这版未做透明 UDP 接管
+- 这是为了先让你现有视频、网页、下载这类 TCP 场景可直接用起来
+
+## 配置文件
+
+示例 `/home/mynetspeeder/config.json`:
+
+```json
+{
+  "strategy": "top2",
+  "redundancy": 2,
+  "tcp_warmup_bytes": 65536,
+  "probe_interval": 15,
+  "relays": [
+    {"name": "hk1", "host": "1.2.3.4", "port": 9009, "token": "demo", "weight": 100},
+    {"name": "jp1", "host": "5.6.7.8", "port": 9009, "token": "demo", "weight": 95}
+  ]
+}
+```
+
+说明:
+
+- `relays` 可以为空,空时只走当前主 VPS 直接出站
+- 子节点启动后会自动连上并参与竞速
+- 子节点没启动时不会影响使用
+
+## 子节点一键安装
+
+把项目目录复制到子节点后,直接执行:
+
+```bash
+sudo /home/mynetspeeder/scripts/install.sh /opt/mynetspeeder
+```
+
+安装完成后可直接使用全局命令:
+
+```bash
+mynetspeeder --help
+```
+
+子节点启动 relay:
+
+```bash
+sudo /opt/mynetspeeder/scripts/start-relay.sh 你的token
+```
+
+子节点停止 relay:
+
+```bash
+sudo /opt/mynetspeeder/scripts/stop-relay.sh
+```
+
+## 启动方式
+
+### 1. 子节点 VPS
+
+```bash
+python3 -m mynetspeeder relay --listen-port 9009 --token demo
+```
+
+### 2. 当前主 VPS
+
+准备配置:
+
+```bash
+cp /home/mynetspeeder/demo-config.json /home/mynetspeeder/config.json
+```
+
+启动透明接管:
+
+```bash
+sudo /home/mynetspeeder/scripts/start-transparent.sh --capture-uid <sing-box运行UID> /home/mynetspeeder/config.json
+```
+
+停止透明接管:
+
+```bash
+sudo /home/mynetspeeder/scripts/stop-transparent.sh
+```
+
+查看节点状态:
+
+```bash
+python3 -m mynetspeeder probe --config /home/mynetspeeder/config.json --once
+```
+
+## 工作方式
+
+透明模式启动后:
+
+- 不需要改 `sing-box` 的 `direct` 出站配置
+- `iptables` 会把系统的 TCP 出站重定向到 `mynetspeeder edge`
+- `edge` 会同时尝试:
+  - 当前主 VPS 直接连目标
+  - 若干在线子节点 relay 代为连接目标
+- 前 `tcp_warmup_bytes` 的上行数据会并发发给所有候选路径
+- 谁先回下行数据,谁成为胜出路径
+- 其它路径会关闭
+
+## 一键脚本说明
+
+`start-transparent.sh` 会自动:
+
+- 只接管指定 UID 的 TCP 出站,避免影响整机连接
+
+- 创建运行用户 `mynetspeeder`
+- 以该用户启动 `edge`
+- 自动排除:
+  - `127.0.0.0/8`
+  - 所有 relay IP
+  - `mynetspeeder` 自己发起的连接
+- 接管全局 `OUTPUT` 的 TCP 出站流量
+
+## 现有限制
+
+- 透明接管当前只支持 IPv4 TCP
+- 当前未实现透明 UDP
+- `iptables` 规则是全局级别,除 `mynetspeeder` 自己和 relay IP 外,其他本机 TCP 流量也会被接管
+
+
+## 当前服务器用法
+
+当前服务器已将 `sing-box` 改为 `singbox` 用户运行,因此透明接管请直接使用:
+
+```bash
+sudo /home/mynetspeeder/scripts/start-transparent.sh --capture-uid $(id -u singbox) /home/mynetspeeder/config.json
+```
+
+停止:
+
+```bash
+sudo /home/mynetspeeder/scripts/stop-transparent.sh
+```
+
+
+## IPv6 与 UDP
+
+当前版本新增:
+
+- IPv6 透明 TCP 接管
+- UDP 透明接管基础版
+- `iptables` + `ip6tables` 的 TCP/UDP REDIRECT 规则
+
+说明:
+
+- UDP 透明接管已支持基础转发,但实际效果仍依赖目标协议和内核行为
+- 如遇特定 UDP/QUIC 场景异常,优先先验证 TCP 是否正常
+
+
+## 当前状态
+
+当前版本已支持:
+
+- `singbox` 用户的透明 TCP 接管
+- IPv4 / IPv6 TCP 透明监听
+- IPv4 / IPv6 UDP 透明监听基础版
+- 无 relay 时自动只走当前主机 `direct`
+
+推荐启动命令:
+
+```bash
+sudo /home/mynetspeeder/scripts/start-transparent.sh --capture-uid 996 /home/mynetspeeder/config.json
+```
+
+
+## UDP 说明
+
+当前已发现 UDP 透明接管在部分环境下会产生自环(例如日志里目标变成 `127.0.0.1:19080`)。
+
+因此当前默认:
+
+- 只启用 TCP 透明接管
+- UDP 透明接管默认关闭
+
+如果你要实验 UDP,再显式加:
+
+```bash
+sudo /home/mynetspeeder/scripts/start-transparent.sh --enable-udp --capture-uid 996 /home/mynetspeeder/config.json
+```