|
|
преди 2 седмици | |
|---|---|---|
| .codex | преди 2 седмици | |
| scripts | преди 2 седмици | |
| .gitignore | преди 2 седмици | |
| README.md | преди 2 седмици | |
| __init__.py | преди 3 седмици | |
| __main__.py | преди 3 седмици | |
| cli.py | преди 2 седмици | |
| config.json | преди 2 седмици | |
| config.jsonbak | преди 3 седмици | |
| config.py | преди 2 седмици | |
| demo-config copy.json | преди 3 седмици | |
| protocol.py | преди 3 седмици | |
| relay_client.py | преди 2 седмици | |
| relay_server.py | преди 2 седмици | |
| scheduler.py | преди 2 седмици | |
| socks_edge.py | преди 2 седмици | |
| transparent_edge.py | преди 2 седмици |
mynetspeeder 用于给当前主机上的 direct 出站做透明加速,并支持可选的 UDP 并行竞速。
TCP 走透明接管,UDP 走显式 SOCKS5 UDP ASSOCIATEconfig.json 里 socks_port > 0,start-transparent.sh 就会启动 socks 入口--enable-udp,脚本也会关闭 UDP 透明接管,改为仅保留 TCP 透明接管socks_port > 0 和“UDP 透明”描述,那是文档/配置语义混杂,不是当前实际生效路径对应脚本行为可直接概括为:
TCP:继续通过 iptables/ip6tables nat OUTPUT -> REDIRECT -> edgeUDP:若 socks_port > 0,优先走 socks 显式入口;不再做透明 UDP 重定向UDP:只有在 socks_port == 0 且显式加 --enable-udp 时,才走透明 UDPrelay:子节点 VPS 中继edge:主 VPS 透明接管 direct 出站socks:显式 UDP 入口,给需要手动交付 UDP/QUIC 的应用使用probe:查看子节点探测与在线状态summary:汇总日志里的 TCP / UDP 胜率sing-box 的 hy2 19887/19888 入站使用外网sing-box 的 direct 出站不需要改动mynetspeeder 在系统层接管这些 direct 流量flowchart LR
A[应用 / sing-box] -->|TCP 出站| B[系统 nat OUTPUT REDIRECT]
B --> C[Transparent Edge :19080]
C --> D1[Direct TCP 副本 1..N]
C --> D2[Relay TCP 路径 1..N]
D1 --> E[TCP winner]
D2 --> E
E --> F[目标站点]
A -->|UDP / QUIC| G[SOCKS5 UDP ASSOCIATE :19180]
G --> H1[Direct UDP 副本 1..N]
G --> H2[Relay UDP 路径 1..N]
H1 --> I[UDP winner]
H2 --> I
I --> F
flowchart LR
A[应用 / sing-box] -->|TCP 出站| B[系统 nat OUTPUT REDIRECT]
A -->|UDP 出站| B
B --> C[Transparent Edge :19080]
C --> D1[Direct TCP 副本 1..N]
C --> D2[Relay TCP 路径 1..N]
C --> D3[Direct UDP 副本 1..N]
C --> D4[Relay UDP 路径 1..N]
D1 --> E1[TCP winner]
D2 --> E1
D3 --> E2[UDP winner]
D4 --> E2
E1 --> F[目标站点]
E2 --> F
示例 /home/mynetspeeder/config.json:
{
"strategy": "top3",
"redundancy": 3,
"direct_redundancy": 2,
"direct_max_redundancy": 3,
"direct_redundancy_v6": 3,
"tcp_warmup_initial_bytes": 131072,
"tcp_warmup_bytes": 1048576,
"tcp_loser_grace_ms": 1500,
"probe_interval": 15,
"udp_redundancy": 1,
"udp_direct_redundancy": 2,
"udp_disable_direct": false,
"udp_always_broadcast": true,
"udp_copy_interval_ms": 8,
"socks_host": "127.0.0.1",
"socks_port": 19180,
"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}
]
}
tcp_warmup_initial_bytes:启动时的较小起步值tcp_warmup_bytes:稳定后允许抬升到的上限值透明 TCP 会对每条连接同时拉起:
direct_redundancy / direct_max_redundancy 控制)行为规则:
tcp_warmup_initial_bytes 到 tcp_warmup_bytes 之间,上行数据会更积极地发给所有候选路径tcp_loser_grace_ms 毫秒后关闭透明 UDP 采用并行竞速架构,需要通过 --enable-udp 显式开启。
但要注意一个优先级规则:
config.json 中 socks_port > 0,start-transparent.sh 会输出 udp transparent capture disabled: socks5 is enabled, UDP will use socks only--enable-udp 在这种情况下不会真正打开 UDP 透明接管当前实现方式:
edge 的 UDP listener(source, target) 流会同时建立本机 direct UDP 路径和在线 relay UDP 路径udp_redundancy 控制同一包的额外重复次数udp_direct_redundancy / _v4 / _v6 控制 direct UDP 并发副本数udp_always_broadcast=true 时,即使已有 winner,后续包仍持续并发发送适合场景:
socks 命令用于显式交付 UDP/QUIC,不是普通 TCP CONNECT 代理。
当前行为:
UDP ASSOCIATETCP CONNECT 目前是禁用的mynetspeeder如果 config.json 里设置了 socks_port > 0,start-transparent.sh 会自动把它一起拉起来;此时若同时开启 --enable-udp,脚本会优先让 UDP 走 SOCKS 显式入口,并关闭 UDP 透明重定向。
结论先说:
TCP 透明接管 + UDP SOCKS 显式入口TCP 透明接管 + UDP 透明接管原因如下:
TCP 天然适合透明接管:系统层无感接入,不需要改应用配置,且本项目的 TCP warmup、direct 冗余、relay 竞速都已经围绕透明模式做了完整优化UDP/QUIC 更适合显式 SOCKS:应用主动把目标地址和 UDP 数据交给 socks,路径更直接,状态更清晰,避免透明重定向场景里对 SO_ORIGINAL_DST、conntrack、自环规避、NAT 回包等额外依赖UDP 对时延抖动和状态保持更敏感,显式入口通常比透明重定向更稳定,尤其在 QUIC、游戏、实时音视频这类长流场景socks UDP 并不是“单路径代理”,它内部同样会做 direct UDP + relay UDP 并行竞速,所以不会损失 UDP 加速能力config.json 中设置 "udp_disable_direct": true;此时 socks 汇总日志会显示 direct_paths=0,candidates 中只保留 relay 节点建议按场景选择:
sing-box 能明确把 UDP/QUIC 指到 127.0.0.1:19180:优先选 TCP 透明 + UDP SOCKSTCP 透明 + UDP 透明UDP SOCKSpython3 -m mynetspeeder relay --listen-port 9009 --token demo
准备配置:
cp /home/mynetspeeder/demo-config.json /home/mynetspeeder/config.json
启动透明接管:
sudo /home/mynetspeeder/scripts/start-transparent.sh --kernel auto --capture-uid <sing-box运行UID> /home/mynetspeeder/config.json
如果要同时开启透明 UDP:
sudo /home/mynetspeeder/scripts/start-transparent.sh --enable-udp --capture-uid <sing-box运行UID> /home/mynetspeeder/config.json
注意:如果 socks_port 已开启,脚本会把 UDP 优先交给 SOCKS 显式入口,而不是再做透明 UDP 重定向;此时实际生效的是 TCP 透明 + UDP SOCKS。
不指定 --capture-uid 时,会接管所有用户发起的流量:
sudo /home/mynetspeeder/scripts/start-transparent.sh /home/mynetspeeder/config.json
停止透明接管:
sudo /home/mynetspeeder/scripts/stop-transparent.sh
查看节点状态:
python3 -m mynetspeeder probe --config /home/mynetspeeder/config.json --once
汇总日志胜率:
python3 -m mynetspeeder summary --log-file /var/log/mynetspeeder-edge.log --socks-log-file /var/log/mynetspeeder-socks.log
把项目目录复制到子节点后:
sudo /home/mynetspeeder/scripts/install.sh /opt/mynetspeeder
安装完成后可直接用:
mynetspeeder --help
启动 relay:
sudo /opt/mynetspeeder/scripts/start-relay.sh 你的token
停止 relay:
sudo /opt/mynetspeeder/scripts/stop-relay.sh
--kernel auto|20|24 会影响透明模式下的建连策略:
auto:自动判断20:更保守24:更积极,通常会更短的 direct / relay 建连超时,并启用更激进的 happy eyeballs 参数手动指定示例:
sudo /home/mynetspeeder/scripts/start-transparent.sh --kernel 24 --capture-uid $(id -u singbox) /home/mynetspeeder/config.json
start-transparent.sh 会自动:
mynetspeederedge127.0.0.0/8169.254.0.0/16mynetspeeder 自己发起的连接--enable-udp 时额外启用 UDP 透明接管,并放行 ESTABLISHED,RELATED 回包socks 模式目前只做 UDP 显式入口,不提供 TCP CONNECT推荐使用下面这类思路:
socks_port: 19180TCP 交给 start-transparent.shSOCKS5 UDP 入口socks_port”的配置再理解成“UDP 透明也同时生效”如果你要强制使用透明 UDP:
socks_port 设为 0--enable-udp 启动TCP 透明 + UDP 透明当前版本已支持:
singbox 用户的透明 TCP 接管direct