最近想使用ikuai对校园网进行多拨,但是认证碰到了麻烦事。

网上很多教程都是基于PPPOE的,刚刚好学校的网络又不支持PPPOE,只能使用web进行登录。

解决方案概述

大概思路是,在虚拟机中添加几个用于登录的IP地址(例如192.168.7.11),然后在iKuai路由中设置源IP为192.168.7.11走vmwan1通道。接下来,在虚拟环境中用该IP发起登录请求,完成接口认证。

graph TD;
    subgraph "虚拟机"
        Device1["192.168.7.11"] ---|br-lan| ikuai
        Device2["192.168.7.12"] ---|br-lan| ikuai
        Device3["192.168.7.13"] ---|br-lan| ikuai
    end

    subgraph "多拨"
    	ikuai["iKuai路由"]
        ikuai ---|vwan1| Vwan1["Vwan1"]
        ikuai ---|vwan2| Vwan2["Vwan2"]
        ikuai ---|vwan3| Vwan3["Vwan3"]
    end

实现方式

内外网设置

外网选择基于物理网卡的混合模式

image-20250317032329858

内网新增一个192.168.7.0/24的网段(为了避免与现有网段的ip冲突)

image-20250317032405087

添加端口分流

流控分流 -> 分流设置 -> 端口分流中,将192.168.7.11-15分流到不同的端口上。

image-20250317032625011

同时需要开启线路绑定,防止分流到其他接口,无法对对应的接口完成认证。

image-20250317032735559

Docker / 虚拟机添加ip

这里存在一个误区,很多人认为一个网口只能绑定一个ip,但实际上,一个网口可以绑定非常多的ip。所以并不需要在Docker / 虚拟机中为每一个ip添加一个网卡。

OP中:

image-20250317032953121

若使用Docker或其他虚拟机环境,可以通过命令行添加:

1
ip addr add 192.168.7.11/24 dev br-lan

使用curl进行认证

curl 可以通过--interface选项指定发起请求的ip。

比如我认证需要请求https://baidu.com,对vwan1进行认证的命令就是:

1
curl --interface 192.168.7.11 https://baidu.com

这样就可以完成认证了。

需要注意,如果是OP系统,不要把lan区域的IP 动态伪装打开,如果打开会进行nat,这样无论如何出口都是以第一个添加7网段的ip发起请求,无法完成认证。

image-20250317033447461