
在日常使用中,很多人会遇到这样的场景:家里宽带 + 手机热点同时可用,或者笔记本同时连着有线和 Wi-Fi,但系统默认只会走一条链路,另一条完全闲置。对于 Steam 游戏更新、IDM 多线程下载、浏览器多标签页、种子下载、云盘同步这类高并发多连接场景,如果能把多条独立网络的带宽加起来用,体验会明显提升。
有没有办法把 Wi-Fi、以太网(有线网)、手机 USB 共享网络等多种连接同时聚合起来,实现带宽叠加呢?
最近在 GitHub 趋势榜上大火的开源项目 net-merge 正是为了解决这一痛点而生的。
net-merge:https://github.com/rohit267/net-merge
net-merge 是一个轻量级、跨平台的开源网络流量分发与聚合工具。它的核心功能是:让你的设备同时使用所有的网络适配器。
通过创建虚拟网卡(如 Windows 上的 Wintun、Linux/macOS 上的 TUN),并精准控制系统层面的 TCP/P2P 路由,net-merge 能够将不同的网络连接(Wi-Fi、有线网、手机热点等)按比例或按速度权重进行分流和负载均衡。
net-merge 的核心功能:
- 真正的系统级接管:无需为每个应用单独配置代理。创建虚拟网卡后,系统默认路由会被巧妙覆盖(使用 /1 路由),几乎所有应用的新连接都会被接管。
- 智能权重分配:根据各链路实测吞吐动态分配连接,快的链路拿更多连接;无网络的链路会被自动跳过,恢复后重新加入。
- 安全与容错:如果 net-merge 崩溃或退出,虚拟网卡和相关路由会一起消失,原有网络立即恢复,不会把机器搞断网。
- 资源占用低:实测约 0.18 个 CPU 核心 / 100 Mbit/s。
- 支持多种接入方式:Wi-Fi、以太网、iPhone 个人热点(USB)、Android USB 共享(macOS 需配合 TetherKit)、手机热点等。
- 可选 SOCKS5 模式:net-merge socks 启动本地代理(127.0.0.1:1080),适合只想对部分应用生效的场景。
- 系统托盘 + CLI:托盘实时显示各网卡速度与连接数,支持暂停/启动;提供 status、list、autostart 等命令。
- 不需要单独的聚合服务器:像 Speedify 这样的 Internet Bonding 服务需要一个位于互联网另一端的聚合服务器,net-merge 无需远程服务器。
net-merge 的技术核心思路是:
- 创建一个虚拟 TUN 网卡(Windows 为 Wintun)。
- 添加优先级更高的 /1 路由,把流量导向该虚拟网卡,但不修改原有默认路由。
- 进入虚拟网卡的流量在用户态 TCP/IP 栈(基于 tun2socks + gVisor)中被终止,再根据策略选择一个真实物理网卡重新拨号。
- 通过源地址绑定 + IP_UNICAST_IF(Windows)、SO_BINDTOIFINDEX(Linux)或 IP_BOUND_IF(macOS)把 socket 钉死在选定网卡上,避免回环。
这样实现了“每个新连接走一条链路”,多连接场景下带宽就能叠加。
net-merge 采用的是按连接进行负载均衡(Per-Connection Load Balancing),而不是把同一条 TCP 连接拆成几部分,同时通过多条 ISP链路 传输,因此单连接大文件下载不会变快。
net-merge 适合场景:
- Steam / Epic / 游戏平台更新
- IDM、aria2、浏览器多线程下载
- 种子客户端
- 云盘同步、系统更新
- 同时打开多个网页或应用
net-merge 不适合场景:
- 单连接测速或单文件下载(速度仍受单链路限制)
- 需要真正链路聚合、单一公网 IP 的场景(如某些企业专线)
一些注意事项:
- 必须是独立互联网路径才有效(例如家里宽带 + 手机流量)。同一路由器下的 Wi-Fi + 有线通常无效。
- macOS 连接 Android USB 共享需要安装 TetherKit。
- Windows 可能需要关闭“最小化同时连接”相关组策略。
- 项目未代码签名,首次运行可能被系统拦截,需手动允许。
类似的开源项目:
HypoMux:https://github.com/Hypostasis-Cat/HypoMux
dispatch:https://github.com/alexkirsz/dispatch
Speedy:https://github.com/RezaRafia/Speedy
multi-isp-proxy:https://github.com/YudaKusumaID/multi-isp-proxy
OpenMPTCProuter:https://www.openmptcprouter.com/
engarde:https://github.com/porech/engarde
InternetMerge:https://github.com/dikeckaan/internetmerge