又是很久没有更新了,其实这个已经完成了很多时候了,但是事情太多一直没来的及写。

因为学校使用的Ethernet是通过802.1x认证的(好像WIFI也是),对于智能家居等不方便更改网络的设备非常不方便,遂有了添加路由器的想法。

顺便说一句,校园网的速度还是非常爽的,最重要的是包含在房租里了,不用另外付费。

这个测速确认是外网速度,校园内没有测速节点。(可惜是NAT3,不然可以开机子了🤣)

硬件配置

主路由使用的是R2S,对于我一个人来说性能足够了(毕竟不需要科学上网了)。

整体速度能跑满上下千兆,内网还带了一个nas做pt下载用,性能足够。

本人使用骷髅头固件,注意自编译固件会有大负载下重启的问题,此固件无此类问题。传送门

另外我还买了一个小米AX1800,就是国内的小米AX5作为AP使用,刷入极客固件,无线网的速度能跑到700Mbps左右。

其实这个成绩还是挺差的,没有达到我的心理预期,WIFI6性价比路由器还没有WIFI5强,其实没有升级的必要

配置802.1x认证

最重要的就是配置802.1x认证了,不然都是瞎扯。

1. 安装完整WPAD

现在OpenWRT上默认使用的是wpad-mini,并不支持802.1x认证,需要安装wpad来进行认证。

如果OpenWRT系统使用了wpad完整版或者Hostapd就无需再次安装,直接跳到下一步,上面使用的骷髅头固件,在2022/2/19的版本以后已经集成了hostapd,无需此步。

如果有网络访问

1
2
3
4
5
opkg update
opkg download wpad
opkg remove wpad-basic
opkg install wpad_<version>_<arch>.ipk
#请注意替换文件名

这时候一般是没有外网的,可以通过手机热点,共享给电脑,再通过windows共享给路由器,路由器注意修改网关,稍微有些复杂,这里不再赘述,不会的话可以通过下面的方式。

如果没有外网访问

1. 获取软件包的位置

在控制台中输入 opkg update

找到如下的一个URL(从开头一直到base):

将网址输入浏览器,查找wpad,下载对应的软件包,如下所示:

通过SCP或者FTP将软件包上传到软路由下并进行安装:opkg install wpadxxxxxx.ipk

配置802.1x配置文件

创建一个配置文件:

1
vim /etc/config/wpa_supplicant.802.1x.conf

输入如下信息:

1
2
3
4
5
6
7
8
9
10
11
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
ap_scan=0
network={
key_mgmt=IEEE8021X
eap=PEAP
phase2="autheap=MSCHAPV2"
identity="<<username>>"
password="<<password>>"
priority=2
}

这里需要注意一下校园或者单位的加密方式等配置,具体请在各自网站查找,或询问技术人员。

验证信息

查找验证自己WAN口的网卡设备名称

执行命令并确认是否正常:(注意修改网卡名称)

1
wpa_supplicant -D wired -i eth0.2 -c /etc/config/wpa_supplicant.802.1x.conf -dd -t

创建开机脚本

创建文件:

1
vim /etc/init.d/wpa-autostart

输入以下内容:(注意修改网卡设备名称)

1
2
3
4
5
6
7
8
#!/bin/sh /etc/rc.common
START=99

start() {
echo start
pgrep -f wpa_supplicant.802.1x.conf|xargs kill
wpa_supplicant -D wired -i eth0.2 -c /etc/config/wpa_supplicant.802.1x.conf -dd -t &
}

赋予脚本权限和启动自启脚本:

1
2
chmod +x /etc/init.d/wpa-autostart
/etc/init.d/wpa-autostart enable

创建检测脚本

此脚本是为了断线重连,非必须。

创建一个crontab脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/sh

export PATH=/usr/sbin:/usr/bin:/sbin:/bin

# uci show network.wan.ifname
wan=eth0.2
time=$(date +'%F %T')
ipaddr=$(ip -4 -o a s $wan)

if [ -n "$ipaddr" ]
then
ip=$(ip -o a s $wan|awk '{print $4}')
echo "__INFO: $(basename "$0") $time OK $wan IP: $ip"
else
echo "__INFO: $(basename "$0") $time ERROR $wan IP missing"
if pgrep -af wpa_supplicant.802.1x.conf
then
pgrep -f wpa_supplicant.802.1x.conf|xargs kill
fi
echo "$time $(basename "$0")" >> /tmp/802.1x-restart.log
wpa_supplicant -D wired -i $wan -c /etc/config/wpa_supplicant.802.1x.conf -dd -t &
fi

注意:请修改对应的网卡设备名称,此脚本只检测是否存在对应的IPV4地址,并不检测和上级路由是否通畅。

添加crontab任务:

1
crontab -l

加入以下内容:

1
* * * * * /bin/sh -x /etc/config/check.802.1x.sh &> /tmp/check.802.1x.log

启动crontab服务并观察:

1
2
3
4
5
6
/etc/init.d/cron enable
/etc/init.d/cron start

pgrep -af cron

logread -e cron

到这里就基本完成上网的认证了

升级OpenWRT系统相关问题

由于Openwrt系统默认不保存我们生成的系统文件,我们要对备份做一些修改。进入web后台:

加入下列路径:

1
2
3
/etc/config/wpa_supplicant.802.1x.conf
/etc/init.d/wpa-autostart
/etc/config/check.802.1x.sh

如果没有wpad的系统也可以备份一下wpad安装包,根据自己的路径进行备份。(有可能升级以后旧版wpad安装包无法安装)

点击右下角提交,进入动作选项卡,执行一次备份。

关于DNS接管问题

有的时候认证成功获取到ip以后访问外网IP可以通,外网域名无法解析的情况下,可能是内网将dns接管了

只需要在 luci 的 Network > DHCP and DNS 下关闭 Rebind protection

并且使用内网DNS地址就能解决该问题了。

Reference: