《双宽带链路聚合:利用手机USB 共享实现双 WAN 负载均衡》
引言:
这不算是一个完美的教程,更像是自己的日记,大家对付看看吧。
事情是这样的,平时忙于工作,对于家庭宽带来说,一直都是能用就行,要求不高
我之前一直都是500M的 169元电信融合套餐,说实话价格也不低了,就在今年3月份,突然一个电信的人说要来家里拍照,怀疑我家宽商用。我???
我天天牛马活都做不完,哪有闲心搞这些。
结果就是上行被限制,我是如何发现的?拼夕夕买了个剃须刀,结果一个礼拜就不工作了。联系客服说要我录个视频,结果视频我传了7次,全是失败,最后开热点才得以完成上传。一气之下,注销所有电信业务

一、环境介绍:
1、注销了电信业务,家里也不能没有网,刚好移动搞活动,原套餐加10元/月,可以得到50G流量,500M宽带。有便宜谁不占,直接安装!!

2、平时手里一直用的中兴MU5120 随身Wifi,网速嘎嘎快,对就是贼贵的那一款


平时玩玩游戏,杭州的移动宽带一不支持桥接,二不支持固定时间点换IP,问了客服告诉我随时会断网(换IP),作为IT民工的我,忍不了一点,自己动手,丰衣足食!

二、安装过程:
这次共耗时2天半,尝试了多种方案,过程不赘述,直接说结果
1、物理机安装Esxi,机器是Mini tiny ,i5-8500 64G 521G SSD
版本选择了ESXI8.0U2,下载地址网上一堆,我就不提供了
有个要注意的地方,esxi需要将USB控制器直通给虚拟机,因为手机USB共享网络,需要开启开发者模式,没有直通的情况下容易出问题,也不方便后面代码自动开启手机的网络共享
先在Bios开启VT-D,cpu虚拟化也打开
2、因为中国移动光猫是ONU,不给桥接,所以在esxi虚拟一个Openwrt,用手机USB共享网络作为第一条宽带,处理双Wan负载均衡,以及内部DHCP,当然,还有科学,你们懂的


这块就要着重说了。两天半的时间,最起码一天半时间都在搞这个系统,换了四十几个,不是缺这个就是少那个,最终我测试稳定OK的版本是lsymOS。我也是受益这些大佬,就不附下载链接了,需要的朋友自取:25/5月2号imm-op官方3版编译iStoreOS主题.应用商店 好评高的网卡驱动-软路由,x86系统,openwrt(x86),Router OS 等-恩山无线论坛
3、手机插入流量卡,启用开发者模式,然后选择热点,共享USB网络
4、此时,openwrt系统里,就会出现一个usb0的接口,也可能是其他名字,大家自己区别下
openwrt的设置,我就不拿出来说了,教程网上多的是,最终实现的效果就是:
wan = 中国移动宽带
wanb = 手机USB网络
5、中国移动宽带随时断网,所以要想稳定,就要靠USB的热点。但是Openwrt我是设置每周二重启的,重启后USB共享网络会自动断开,常规做法就是需要人去操作手机,再点开共享
显然我干不了这样的事,所以写了代码:
逻辑是通过代码,检测usb0接口是否存在,有没有IP地址。有就说明连接中,没问题。
如果接口不存在或没有IP,说明USB共享是关闭状态, 代码就调用adb去操作手机,在无需解锁的情况下开启USB网络共享,完整代码如下
#!/usr/bin/env bash
全局变量
USB_IFACE="usb0" WAIT_SECONDS=5 # 等待网络稳定时间
函数:检查 usb0 是否有 IPv4 地址
check_usb0_ip() { local ip_info=$(ip -o -4 addr show "$USB_IFACE" | grep 'inet ') if [ -n "$ip_info" ]; then echo "接口 $USB_IFACE 的 IPv4 地址: $ip_info" return 0 else echo "接口 $USB_IFACE 未分配 IPv4 地址" return 1 fi }
主流程
echo "===== 检查 USB 网络共享状态 ====="
步骤 1: 检查当前状态
if check_usb0_ip; then echo "✅ USB 网络共享已启用,接口 $USB_IFACE 已分配 IP 地址。脚本结束。" exit 0 else echo "❌ USB 网络共享未启用,接口 $USB_IFACE 未分配 IP 地址。尝试启用..." fi
步骤 2: 尝试通过 ADB 启用 USB 网络共享
echo "正在尝试通过 ADB 启用 USB 网络共享..." adb shell svc usb setFunctions rndis 2>/dev/null adb shell svc tethering enable usb 2>/dev/null
步骤 3: 等待网络配置生效
echo "等待 $WAIT_SECONDS 秒,等待网络配置生效..." sleep "$WAIT_SECONDS"
步骤 4: 最终检查
if check_usb0_ip; then echo "✅ USB 网络共享已成功启用,接口 $USB_IFACE 已分配 IP 地址。" exit 0 else echo "❌ USB 网络共享启用失败,接口 $USB_IFACE 仍无 IP 地址。请手动检查。" exit 1 fi

下面放一些图片功大家参考:




经过测试,我直接把移动宽带的光猫拔电,也不影响网络的持续输出(一个丢包都没有),通过设置的宽带优先级,移动恢复后,又会主动变成移动宽带上网。平时的流量根据规则执行,这个自由度很高了,反正我流量用不完,我平时都50%这么跑
计划任务执行代码,每2分钟检测手机USB共享状态, 不在线就用adb开启共享
手机扔那也不用管了,反正usb插着一直有电
shell脚本非常简单了,一般的AI都可以搞定,这里就是给大家提供个思路,好了就这样吧~~玩游戏去了
作者提示含AI生成内容。作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

大码垃圾佬
校验提示文案
YeSee
校验提示文案
请叫我英雄o_O
2.觉得麻烦的可以考虑下 5g cpe 这东西
校验提示文案
arain868
校验提示文案
wintsa123
校验提示文案
MDJCOM
校验提示文案
YeSee
校验提示文案
MDJCOM
校验提示文案
wintsa123
校验提示文案
大码垃圾佬
校验提示文案
arain868
校验提示文案
请叫我英雄o_O
2.觉得麻烦的可以考虑下 5g cpe 这东西
校验提示文案