📌 项目:https://github.com/rohit267/net-merge | 星数:1440 | 语言:Go | 协议:MIT | 更新:2026-10-18
NetMerge是rohit267开源的多网卡负载合并工具,1440颗星,Go编写,MIT协议。现代设备经常同时接入多个网络——笔记本插着有线以太网又连Wi-Fi、台式机两张网卡分别接电信和联通、手机连Wi-Fi还插USB网络共享。但操作系统默认只用一张网卡(按跃点数选主),其他网卡闲置,带宽无法合并。NetMerge解决的就是这个问题:它在用户态做按连接(per-connection)的负载分配,把不同TCP连接分流到不同网卡,实现带宽叠加——看4K直播走网卡A、大文件下载走网卡B、远程办公走网卡C,三张网卡的带宽都能用上。Go编写带来单二进制无依赖部署,Windows/Linux/macOS全平台支持。相比操作系统底层的链路聚合(LACP/teaming需要交换机支持),NetMerge在主机侧做分流,不依赖网络基础设施,家庭和小办公室即插即用。
跨平台系统工具值得关注,纯Rust GIS方向可参考RustGIS纯Rust GIS指南;Cloudflare AI代理可看Talorys Cloudflare AI代理指南,数据本体方向可参考Helix Foundry数据本体指南。
按连接负载智能分流:NetMerge的核心是一个用户态的连接调度器。它不修改数据包(不是NAT),而是在应用建立TCP连接时介入,决定这条连接走哪张网卡。调度策略支持轮询(round-robin每条连接轮流分给不同网卡)、加权(按网卡带宽比例分配,千兆网卡分多百兆网卡分少)、粘性(同一目标IP固定走同一网卡,避免连接切换)、最低延迟(ping各网卡选延迟低的)。分流对应用透明——浏览器、下载器、直播软件都不用改,NetMerge在底层做路由决策。UDP和TCP都支持,ICMP不干预交给系统。
跨平台网卡管理与健康检查:Go编写让NetMerge编译成单二进制,Windows(用WinDivert做包拦截)、Linux(用iptables或nftables规则)、macOS(用pf规则)三平台同一套核心逻辑不同底层适配。网卡健康检查每秒ping各网卡网关,如果某张网卡断网(网线拔了/Wi-Fi掉线)自动从调度池移除,已有连接平滑迁移到其他网卡不断流。带宽监控实时显示每张网卡的速率、累计流量、连接数、丢包率,方便判断是否在正常工作。支持热插拔网卡——USB网卡插上自动加入调度池,无需重启。
规则配置与远程管理:NetMerge支持细粒度分流规则——按目标域名/IP段/端口指定走某张网卡(如内网走有线、外网走Wi-Fi、特定服务走VPN)。规则用YAML配置,支持正则匹配域名。更实用的是基于进程的分流(Windows支持)——Chrome走网卡A、Steam下载走网卡B、Zoom走网卡C,按应用而非连接分流,更符合用户直觉。NetMerge还内置一个Web管理面板(默认localhost:8787),实时查看分流状态、调整策略、查看历史流量图表,支持远程访问加密码保护。配置变更热重载不重启服务。
| ✅ 优势 | ❌ 劣势 |
|---|---|
| 多网卡带宽真正叠加 | 按连接分流单连接仍限单网卡 |
| 跨平台单二进制部署 | 各平台底层适配机制不同 |
| 网卡健康检查自动故障转移 | 需要管理员权限运行 |
| 域名与进程细粒度分流 | 部分应用绕过系统路由 |
| Web面板可视化管理 | 企业级功能如QoS限速较弱 |
不能。NetMerge是按TCP连接分流,单一下载是单条连接,只能走一张网卡,无法把一个连接拆到多网卡叠加。要叠加单一下载速度,需要下载工具支持多连接(如aria2的16连接),NetMerge把16条连接分到多网卡间接实现叠加。看4K直播通常是多连接(DASH或HLS分片),能受益于分流。
不需要。操作系统底层的LACP或teaming需要交换机支持聚合组,家用交换机通常不支持。NetMerge在主机侧用户态做分流,交换机看到的是多张独立网卡分别收发,不依赖交换机特性,即插即用。这也是它能跨任意网络环境的原因。
可能冲突。如果VPN创建虚拟网卡接管所有路由,NetMerge的分流可能被VPN绕过。建议把VPN虚拟网卡也加入NetMerge的调度池,让NetMerge决定哪些连接走VPN。代理软件(Clash/V2Ray)的TUN模式类似处理。配置上需要把虚拟网卡和物理网卡都纳入管理,复杂场景建议先测试。