前言

最近买了新华三NX30Pro路由器(下文简称”华三”),我的需求就是千兆、能刷OpenWrt进行二次开发,WIFI6这些。而华三满足这些,且价格合适,所以就入手了。这里记录一下路由器的一些配置和使用。

哆点Drcom校园网认证系统为广州热点软件科技股份有限公司研发,若你的校园网登录界面有本计费系统由广州热点软件科技股份有限公司提供字样,那么你可以参考这篇文章。

目前已知使用此系统大学:

  • 中国矿业大学

准备工作

需要:

  • 硬件:

    • 新华三NX30Pro路由器、两条网线、可插网线的电脑

    • 旧路由器(可选)

      1. 如果旧路由器工作正常。网线 1 一端连接 旧路由器 的 LAN 口,对端连接 华三 的 WAN 口;网线 2 一端连接 华三 的 LAN 口,对端连接电脑的网口
      2. 如果旧路由器无法工作。网线 1 一端连接 华三 的 WAN 口,对端连接宽带;网线 2 一端连接 华三 的 LAN 口,对端连接电脑的网口
  • 软件:

    • PuTTY(用于SSH连接)、浏览器(推荐使用Firefox、Chrome、Edge)、TFTP工具(用于刷写固件)

    • 启用电脑的 Telnet 服务:
      在Windows上启用Telnet服务,你可以按照以下步骤操作:

        1. 打开“控制面板”。
        1. 点击“程序”。
        1. 在“程序和功能”部分点击“打开或关闭Windows功能”。
        1. 在弹出的窗口中,找到并勾选“Telnet客户端”。
        1. 点击“确定”按钮。
      • PS:启用Telnet服务后,你可以使用Windows的Telnet客户端连接到路由器。但是,请注意,Telnet协议不安全,所有的内容都是明文传输,包括你的密码。因此,建议只在安全的内部网络中使用Telnet,或者使用更安全的替代品,如SSH。

  • 待刷写镜像及工具的下载:

文件名 描述 下载
openwrt-*-preloader.bin BL2 页面
OpenWrt-*-bl31-uboot.fip FIP 同上
OpenWrt-*-initramfs-recovery.itb initramfs 镜像 同上
OpenWrt-*-squashfs-sysupgrade.itb Sysupgrade 镜像 同上
Tftpd64-4.64-setup.exe TFTP 工具安装包 链接
PuTTY SSH 客户端 链接

⚠️ 为了避免无线局域网的干扰,可以暂时将电脑的无线网络断开。

刷OpenWrt

到手之后简单看了一下原厂固件。发现并不能满足我校园网自动登录的需求,所以就决定刷OpenWrt。

按照Eric的文章一步一步来,最终成功刷入。

PS:刷入的时候还是需要网络的,可以留着之前的路由器,然后分出一个lan口插入华三的wan口,这样既可以配置也可以联网。还有就是我没有刷入主题,这部分应该是无关紧要,各位自行判断。

配置校园网自动登录

我们的校园网是需要登录的,而OpenWrt默认并没有这个功能。所以需要自己写一个脚本来实现。

1. 抓取curl登录请求

(这一步我已经帮你干完了,不感兴趣的话可以直接往下划到编写登陆脚本

首先抓取登录页面的form表单,然后用curl发送post请求,最后检查是否登录成功。

以Firefox为例

    1. 打开Firefox,打开校园网登录界面,按F12打开开发者工具,切换到网络选项卡,然后输入账号密码登陆校园网。
    1. 网络选项卡中找到login请求
      1. 通过 响应找到含有认证成功的内容,回到消息头,右键点击,选择复制,然后选择复制为cURL(bash)
      1. 筛选消息头,找到含有你的账号密码的内容,并复制。

2. 编写登录脚本

首先,我们需要在路由器上安装curl,这个工具是用来发送请求的。
用PuTTY连接到路由器,然后输入以下命令安装curl

1
2
opkg update
opkg install curl

我们需要写一个自动登录的脚本。
创建一个文件夹

1
2
3
mkdir /root/auto_login
cd /root/auto_login
vi login.sh

然后输入以下内容,注意修改账号密码,请按照实际情况自行测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/sh

# 用户账户和密码。
# 运营商:学号后面加@unicom为中国联通,@cmcc为中国移动,@telecom为中国电信。
# 校园网登录只填学号,不填运营商。
USER_ACCOUNT="11230909@cucc"
USER_PASSWORD="xxxxxx"

# 发送登录请求
curl "http://10.2.5.251:801/eportal/?" \
-G \
--data-urlencode "c=Portal" \
--data-urlencode "a=login" \
--data-urlencode "login_method=1" \
--data-urlencode "user_account=${USER_ACCOUNT}" \
--data-urlencode "user_password=${USER_PASSWORD}" \

接下来给脚本运行权限:

1
chmod +x login.sh

然后我们可以先注销,再手动运行一下脚本,看看是否能够成功登录:

1
./login.sh

若是出现认证成功及其类似字样,则说明登录成功。

至此,一个自动登录的脚本就成功了。

3. 开机自启以及断网重联

我们可以将脚本设置为开机自启,以及断网重连。
开机自启可以通过/etc/rc.local实现,断网重连可以通过crontab实现。

1 开机自启

编辑/etc/rc.local文件:

1
vi /etc/rc.local

在文件中添加以下内容:

1
/root/auto_login/login.sh

:wq,保存退出。

2 断网重连

    1. 我们可以通过ping命令来检测网络是否正常,如果网络不正常,我们就执行auto_login.sh脚本。

    可以直接在登录文件夹下创建一个ping.sh文件:

    1
    2
    cd /root/auto_login
    vi ping.sh

    然后输入以下内容:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #!/bin/sh
    # ping 的总次数
    PING_SUM=3
    # ping 的间隔时间,单位秒
    SLEEP_SEC=10
    # 时间= (SLEEP_SEC * PING_SUM + 20) * REBOOT_CNT
    REBOOT_CNT=3
    cnt=0
    reboot_cnt=1

    while :
    do
    ping -c 1 -W 1 www.baidu.com > /dev/null
    ret=$?

    ping -c 1 -W 1 www.bilibili.com > /dev/null
    ret2=$?

    if [[ $ret -eq 0 || $ret2 -eq 0 ]]
    then
    echo -e 'network is ok\r'
    exit
    else
    cnt=`expr $cnt + 1`
    printf '-> [%d/%d] Network maybe disconnected, checking again after %d seconds!\r\n' $cnt $PING_SUM $SLEEP_SEC

    if [ $cnt == $PING_SUM ]
    then
    echo 'try to re curl'
    echo 'ifup wan!!!'
    sleep 5
    sh /root/auto_login/login.sh
    fi
    fi
    sleep $SLEEP_SEC
    done



    :wq,保存退出。

    给脚本运行权限:

    1
    chmod +x ping.sh

    然后我们可以先注销,再手动运行一下脚本,看看是否能够成功登录:

    1
    ./ping.sh

    1. 接下来使用crontab,它是一个用于执行定时任务的工具,我们可以通过它来实现重连。
      编辑/etc/crontabs/root文件:
      1
      vi /etc/crontabs/root
      在文件中添加以下内容:
      1
      */1 * * * * /root/auto_login/ping.sh
      这里的*/1 * * * *表示每1分钟执行一次ping.sh脚本,如有需要可以修改。

    注意:我们需要查看crontab是否已经启动,如果没有启动,我们需要手动启动:

    1
    /etc/init.d/cron status

    如果没有启动,我们可以通过以下命令启动:

    1
    /etc/init.d/cron start

    同时,我们可以把它添加到开机自启:

    1
    /etc/init.d/cron enable

    这样就可以实现断网重连了。

至此,我们就实现了校园网自动登录以及断网重连。🍾🍾🍾

若有问题,欢迎和我邮件联系hezi930@foxmail.com,我会尽量回复。

参考链接: