使用luci app来快捷管理多wan登录

此前的博客中,我介绍了一种基于 mwan3 和 macvlan 的虚拟多 WAN 自动登录负载均衡校园网提速方案。
然而,复制登录源码、SSH 连接到软路由以及手动修改 shell 脚本对于大部分用户来说操作门槛较高,即使对于经验丰富的软路由使用者而言,这种方式也缺乏优雅性和稳定性。
为此,我将控制脚本和登录脚本整合重构为 luci-app-multilogin,旨在提供更便捷、快速的登录控制解决方案。
下面是配置教程部分

安装

依赖项

luci-app-multilogin基于openwrt23.05与mwan3 2.10+

lede版本以及其衍生版本大概率是不可用的

1
2
opkg update
opkg install mwan3 curl bash luci-app-mwan3 kmod-macvlan

编译安装

  1. luci-app-multilogin 目录复制到 OpenWrt SDK 的 package/ 目录。
  2. 编译:
    1
    2
    3
    4
    5
    make download -j8 V=s
    ./scripts/feeds update -a
    ./scripts/feeds install -a
    make toolchain/install -j$(nproc) V=s
    make package/luci-app-multilogin/compile V=s
  3. bin/packages/... 目录中找到生成的 ipk 文件并安装。

使用预编译的二进制文件

  1. 下载 release
  2. 在 OpenWrt → 系统 → 软件包中执行更新列表,再点击上传软件包,选择下载好的 ipk 文件上传安装。

opkg

安装完成后刷新网页,即可找到服务/auto-login

配置过程

原理阐释

使用 macvlan 创建多个 DHCP 客户端接口,再使用 mwan3 负载均衡以叠加网速和实现故障转移。

此前的博客类似,我们使用 mwan3 interfaces 的结果来判断接口是否在线。如果掉线,那么从 luci app 预设的配置中匹配是否有账户配置,如果匹配成功,则尝试使用账户配置来调用登录脚本。如果未匹配到结果,则什么也不做。

使用 macvlan 创建多接口

使用 Web 页面创建虚拟网口

Macvlan-1

Macvlan-2

在网络 → 接口 → 设备 → 添加设备中创建虚拟网口

选择基础设备为你的 WAN 接口对应设备(例如,我这里是 eth0,创建了虚拟接口 eth00、eth01、eth0x)。
设备名随意,但最好创建一个自己能记得住、分得清的名称。
不建议启用 IPv6,MAC 地址随意/默认均可。
目前校园网支持同时登录三个设备,所以你可以创建两个虚拟网口,以最大化单个账户。

创建接口

  1. 进入 网络 → 接口 → 添加新接口
  2. 命名规则:我使用 wan、wanb、wanc…
  3. 协议选择 DHCP客户端
  4. 设备选择你创建的虚拟设备 eth01 等

点击创建接口。

add_plugin

接口参数

  1. 确保为每个接口配置不同网关跃点(metric)
  2. 防火墙区域指定为 wan
  3. 确保勾选忽略此接口(DHCP 服务)

add_plugin-1
add_plugin-2

mwan3 配置

  1. 进入 网络 → 负载均衡 → 接口
  2. 删除默认接口,新建对应虚拟接口
  3. 每个接口配置:
    • 启用状态:√
    • 追踪地址:223.5.5.5、223.6.6.6、114.114.114.114
    • 跟踪可靠性:建议 2
    • 检测间隔:建议 5 秒
    • 检测超时:建议 2 秒

其余设置参见下图:
multi-1
multi-2
multi-3

编辑接口成员(用于分配负载)

  1. 解释:跃点数代表接口优先级,权重则代表该接口在同跃点数中占的比重。
  2. 成员配置示例:
    • wan_m1_w3(跃点 1,权重 3)
    • wanb_m1_w2(跃点 1,权重 2)

注意:若使用不同的跃点数,如 wan_m1_w2、wanb_m2_w3,那么 wan 将占用 100% 的流量wanb 占比为 0%

完成修改后,请点击保存并应用

multi-mem

请根据需求添加成员。例如:两个同速率的接口,请使用相同的跃点和相同的权重:wan_m1_w2、wanb_m1_w2。

修改策略

  1. 选择策略页面
  2. 修改策略 balanced,删除原先自带的策略,把自己上面添加的成员写上去。

例:wan_m1_w2、wanA_m1_w2

multi-rule

确认规则

确认 default_rule_v4 使用新建的均衡策略。

当配置完成后,点击状态/multiwan管理器 → 状态,在这里能看到你的各个接口配置状态和预计分流情况。如果无误,即可进行下一步。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Interface status:
interface wan is online 01h:05m:24s, uptime 194h:03m:03s and tracking is active
interface wanb is online 01h:03m:59s, uptime 194h:03m:03s and tracking is active
interface wanc is online 01h:04m:57s, uptime 194h:03m:03s and tracking is active
interface wand is online 02h:29m:05s, uptime 194h:03m:03s and tracking is active
interface wane is online 02h:30m:33s, uptime 194h:03m:03s and tracking is active

Current ipv4 policies:
balanced:
wane (16%)
wand (16%)
wanc (22%)
wanb (22%)
wan (22%)
wan_only:
wan (100%)
wanb_only:
wanb (100%)

配置 auto-login

只需要勾选启用自动登录,然后在登录实例配置处输入正确的信息,选择保存并应用即可。此时在日志中即可看到 multilogin 服务已启动,正在检测 mwan3 创建的接口。

auto-login1
auto-login2

注意:第一次保存并应用时可能会提示必须启用一个账户,如果你确信勾选了至少一个账户,那么请再次点击保存并应用即可。

注意:该登录脚本是为虎溪校区设计的,其他校区需要在编辑脚本中手动编辑 URL、登录字段等信息。目前作者无力维护其他校区登录脚本。

配置完成

如果顺利的话,在日志中能看到如下信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
multilogin: MultiLogin service started
multilogin: MultiLogin service started
multi_login[4590]: [notice] Received termination signal, exiting
[info] Loaded instance #0: Interface=wan, Account=20200000, UA=mobile
[info] Loaded instance #1: Interface=wanb, Account=20200000, UA=pc
[info] Loaded instance #2: Interface=wanc, Account=20200000, UA=pc
[info] Loaded instance #3: Interface=wand, Account=20200000, UA=mobile
[info] Loaded instance #4: Interface=wane, Account=20200000, UA=pc
[info] Starting multi-WAN auto-login daemon (PID: 8994), loaded 5 instances.
[info] wanb detected as offline, preparing to login.
[info] wanb Attempting login... (Account: 20200000, UA: pc)
[wanb] [INFO] 当前未认证,继续登录流程...
[wanb] [INFO] 尝试登录 (pc UA),使用IP: 10.222.1.1, MAC: ff:ff:ff:ff:ff:ff
[wanb] [INFO] 登录成功!响应: {"result":1,"msg":"Portal协议认证成功!"} IP: 10.222.1.1

出现这样的信息,说明 auto-login 已经正常运行并开始检测接口状态了!


使用luci app来快捷管理多wan登录
https://blog.zesuy.top/2025/10/12/luciAppMultilogin/
作者
zesuy
发布于
2025年10月12日
许可协议