Skip to content

BUPT-mobile

BUPT-mobile 是校内两个最常用的无线接入点之一。

WARNING

本文含有大量技术名词。

如果你的目标只是接入校园网,请按需求参照简易教程:校内上网校外访问校园网完成接入。

概况

  • BUPT-mobile 仅支持 5GHz 频段,牺牲小部分旧设备的兼容性,换来更稳定的网络连接。
  • BUPT-mobile 在 WPA2 的基础上使用 EAP 身份认证框架,因而支持 WPA*-PSK 方式所不支持的账号密码登录。其中账号为学/工号,密码为校园网网关密码。
技术细节:名词解释

AP: "Access Point", 无线接入点,也就是 Wifi 信号发射装置。

TLS: "Transport Layer Security",传输层安全协议。

WPA2: "Wi-Fi Protected Access II", 第二代 Wi-Fi 数据加密和身份认证协议。

EAP: "Extensible Authentication Protocol", 可拓展身份认证协议。WPA2-EAP 代表 BUPT-mobile 使用 EAP 方法完成身份认证。

PEAP: "Protected EAP", 在认证服务器和客户端之间建立 TLS 加密信道,加密传输 EAP 身份信息。

MSCHAPv2: "Microsoft Challenge Handshake Authentication Protocol version 2", 最常用的 EAP 实现,由微软开发。

技术细节:WPA2-EAP 连接的大致过程

连接 BUPT-mobile 的全过程大致如下:

  1. 客户端与 AP 建立无线连接。
  2. AP 向客户端发出 EAP 请求,客户端返回一个 Response, 其中含有“匿名身份” (Anonymous Identity), 这个身份仅在非加密信道上使用。
  3. AP 将这个身份转发给校园网认证服务器。
  4. 认证服务器向客户端请求建立 TLS 连接。
  5. 客户端向服务端发起 TLS 握手。客户端可以选择在这一步验证服务器的 TLS 证书是否有效。
  6. 认证服务器向客户端请求完整的账号和密码,用于身份验证。
  7. 客户端用 TLS 加密信道发送账号密码。
  8. 服务器验证账号密码是否正确。
  9. 服务器向 AP 和客户端下发加密密钥,AP 与客户端之间的加密连接就此建立。(这其实是一个非常复杂的密码学过程,最后的结果是 AP 和客户端生成了相同的对称密钥,用于加密二层网络帧。这也是为什么 BUPT-mobile 无法进行无线抓包,因为二层加密阻止了周围设备直接获取明文网络帧。)

为什么采用 5GHz 单频?

冷知识:Wi-Fi 的 5Ghz 不是手机的 5G。

BUPT-mobile 采用 5GHz 单频段是为了解决 BUPT-portal 跳频的问题。客户端连接 BUPT-portal 时,会采用优先连接 5GHz 的策略,只有检测到 5GHz 信号不佳才会切换到 2.4GHz, 正是这个切换频段的过程导致网络不稳定。而大部分区域内,BUPT-mobile 的 SSID 仅在 5GHz 频段中广播,避免了 portal 下频段切换导致网络不稳定的问题。

同时,从技术标准上看,5GHz WLAN 还能提供更快的连接速度,但为保证大部分人都能分配到合理带宽,校园网采取了限速策略。

高级使用方式

TIP

简易教程不同,这里默认你需要验证服务器证书,配置过程相对更复杂。如果你从简易教程来到这里,请做好心理准备。

BUPT-mobile 可以配置多种安全策略,不同操作系统的配置方式也各不相同:

  • Windows: 只需填写身份与密码即可连接。
  • MacOS: 只需填写身份与密码即可连接。
  • Linux: 只需填写身份与密码即可连接。但不同的是,此种情况下 wpa_supplicant 不验证服务器有效性。你也可以安装 CA 证书用于验证服务器。
  • Android 视厂商安全策略而定,可以仅填写身份与密码,并不验证服务器证书/首次使用时信任证书,或是安装 CA 证书用于验证服务器。
  • iOS: 只需填写身份与密码即可连接。

无论何种配置方式,填写的选项都类似。这里列出多种可能的选项,供参考。

选项名称参考值
加密方式WPA2-Enterprise 或 WPA2-EAP
身份认证(即 EAP 方法 + 阶段2身份验证)PEAP-MSCHAPv2
EAP 方法PEAP
阶段2身份验证MSCHAPv2
匿名身份(无需填写)
身份你的学工号
密码你的校园网密码(密码是什么?
域名BUPT Local Server Certificate
CA 证书按照下文提示操作
技术细节:为什么要验证证书?

在 PEAP 认证过程中,账号密码通过 TLS 加密传输至身份认证服务器。但如果有不怀好意者在学校周围部署一个伪造的"BUPT-mobile", 而你又不验证其根证书,那么你的校园网账号密码很可能会被发送到伪造的身份服务器上,不法分子便窃取了你的校园网账户。

这种攻击的本质是 TLS 中间人,验证服务器证书可以有效避免此类攻击,减少校园网安全隐患。

Windows

这里只提供简要教程。

  1. 在状态栏找到无线局域网标志,打开网络列表选择 "BUPT-mobile";
  2. 分别输入学号和你的校园网密码;
  3. 提示证书信息时点击确认。
  4. 此刻应已完成接入。如果失败,请检查账号密码。

Windows 将在首次连接时信任服务器证书。

Android

Android 手机可以使用以下两种安全连接方式。

首次使用时信任

请确保“证书”或“CA证书”选项可以选择“首次使用时信任”。

设置长什么样?

示例图为 Android 14 类原生系统 UI 的设置界面。

CA Options

选择后,按照提示输入账号密码即可。

开始连接时,系统会提示你确认证书有效性,点击“是”即可。

完整安装根证书

  1. 通过浏览器打开链接,下载根证书。这里不推荐使用腾讯QQ/微信自带的下载功能,因为你无法通过系统文件浏览器浏览证书文件并安装。
  2. 转到“证书”界面,安装证书。请注意区分 CA 证书,VPN 证书和 WLAN 证书三个选项:选择“WLAN 证书”,则安装的证书只会被用于 WLAN 身份验证过程,这也是推荐的行为。安装中请为这个证书填写一个名字。在笔者的手机系统上,名字如何填写不影响后续使用该证书。比如,你可以填写一个"BUPT Local Certificate Authority".
这个设置在哪里?

以笔者的 MiUI 设备为例,搜索“证书”,下图中第二个选项即为安装证书界面。

安装证书

请注意,如果出现了类似下图的界面,说明你正在试图安装CA证书,这是错误的:

不要安装CA证书

  1. 在 WLAN 界面找到 BUPT-mobile, 点击连接,然后点击“高级选项”。
  2. 填写身份信息。
    • CA 证书选择刚才安装的 BUPT Local Certificate Authority.
    • 如果需要填写域名,则填写 "BUPT Local Server Certificate".
    • 账号/用户名填写学号,密码则使用你的校园网密码。换言之,你在portal登陆中填什么,在这里也填一样的。
    • 随后,点击保存即可。

至此,你应该已经可以安全连接到 BUPT-mobile, 尽情享用吧。

技术细节:域名一栏到底该填写什么?

如果你阅读了上面的 PEAP 原理,那么你应该记得,PEAP 认证过程中,终端设备将会与身份验证服务器建立一个 TLS 连接,在安全信道中传输身份信息(也就是你的校园网账号密码)。TLS 握手的必要环节是验证服务器身份,服务器会将其 X.509 证书发送到客户端,然后客户端使用 CA(根证书)验证其有效性。

在 BUPT-mobile 的 PEAP 过程中,服务器证书的 commonName 即为 "BUPT Local Server Certificate", 我们使用自行安装的 BUPT Local Certificate Authority 验证其有效性。所以,这里的域名,事实上就是服务器证书的 commonName 字段,此处使用的 commonName 并非常见的 "www.bupt.edu.cn" 这种形式。不过这也无伤大雅,只要填写的域名与服务器证书的 commonName 匹配即可。

iOS

  1. 在 WIFI 列表中搜索到 BUPT-mobile;
  2. 输入你的用户名和密码;
  3. 点击确认证书信息是否正确。
  4. 连接成功.

iOS 将在首次连接时信任服务器证书。

MacOS

  1. 打开系统设置,找到Wi-Fi界面。
  2. 在列表中找到 BUPT-mobile,点击连接。
  3. 输入身份和密码,也就是学号和校园网密码。
  4. 点击连接。
  5. 系统会提示你验证证书。
  6. 完成连接。

MacOS 将在首次连接时信任服务器证书。

带截图的详细步骤

01

02

03

04

感谢 fa_555 提供的截图示例

Linux

如果你正在使用 Linux, 那么笔者将默认你拥有一定的技术基础,并且能够自行查阅文档解决问题。

以下是笔者尝试过的几种可行方式:

  1. 使用桌面环境(如 GNOME 或 KDE Plasma)提供的 NetworkManager 图形化配置工具。
  2. 使用 NetworkManager 的终端用户界面工具 nmtui, 或者命令行工具 nmcli。(已知 NetworkManager 最早在 1.40 版本对 nmtui 加入 802.1X 支持,如果发行版的打包版本过旧,请使用 nmcli, 或者更换其它手段。)
  3. 为 wpa_supplicant 手写相关配置完成无线认证,再使用另外的 DHCP 客户端或者 systemd-networkd 完成 DHCP。这种方式在笔者的 Arch Linux 台式机上经验证能够使用。对于使用 ifupdown 作为网络管理套件的发行版(比如 Debian),这一方法理论上也完全可行,但笔者时间精力有限,无法另外研究认证方式,有兴趣的同学可以自行研究。
  4. 使用 netplan.io. 这是 Ubuntu 的默认网络管理套件,同样提供连接 WPA2-EAP 无线网络的功能,但是笔者在朋友的机器上尝试配置时失败了,无奈只得回退到方案2。

WARNING

本教程中的示例代码仅供参考,请在基本理解构成和作用后再挪用。使用时请将 CAPATH, IFNAME, IDENTITY 和 PASSWORD 分别替换为根证书路径,网卡名称,学工号和密码

使用桌面环境自带的 NetworkManager 图形化前端的配置方式

Linux 桌面环境的两大巨头 Gnome 和 KDE Plasma 均提供 NetworkManager (也就是大部分带桌面环境安装下的默认网络管理器)的图形化前端。

搜索网络并尝试连接 BUPT-mobile, 系统会提示填写网络详情。

转到 Wi-Fi Security 页面,按照指示填写相关信息。

此处完整验证服务器证书并非必须,如果需要,请先下载根证书,并移动到一个你喜欢的位置(比如 /etc/ssl/private/~/.local/)。

使用 NetworkManager 配套的终端用户界面 nmtui 工具

类似 GUI 配置,这里不再赘述。

使用 NetworkManager 配套的命令行 nmcli 工具

再次提醒

本教程中的示例代码仅供参考,请在基本理解构成和作用后再挪用。使用时请将 CAPATH, IFNAME, IDENTITY 和 PASSWORD 分别替换为根证书路径,网卡名称,学工号和密码

bash
nmcli con add type wifi con-name "BUPT-mobile" ifname "IFNAME" ssid "BUPT-mobile"   # 添加一个新连接 BUPT-mobile
nmcli con modify "BUPT-mobile" 802-1x.eap peap 802-1x.phase2-auth mschapv2 802-1x.identity "IDENTITY" 802-1x.password "PASSWORD"
nmcli con modify "BUPT-mobile" wifi-sec.key-mgmt wpa-eap
nmcli con modify "BUPT-mobile" 802-1x.ca-cert "CAPATH"   # 可选,请下载根证书到对应位置。

连接已经配置完成。使用 nmcli con activate BUPT-mobile启动该连接。

使用 wpa_supplicant 和 systemd-networkd 的示例配置

再次提醒

本教程中的示例代码和配置文件内容仅供参考,请在基本理解构成和作用后再挪用。使用时请将 CAPATH, IFNAME, IDENTITY 和 PASSWORD 分别替换为根证书路径,网卡名称,学工号和密码

配置过程和示例配置文件如下所示。请先下载根证书到一个你喜欢的位置(比如 /etc/ssh/private/~/.local/)。

在 /etc/wpa_supplicant 下创建一个文件 wpa_supplicant-IFNAME.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev  
# 此处为 Debian man-pages 的示例,请查阅你使用的发行版中 wpa_supplicant.conf 的 man-pages, 以确定 ctrl_interface 的具体配置
network={
	ssid="BUPT-mobile"
	scan_ssid=1
	key_mgmt=WPA-EAP
	eap=PEAP
	identity="IDENTITY"
	password="PASSWORD"
	ca_cert="CAPATH"  # 根证书的绝对路径,请自行修改
	phase1="peaplabel=0"
	phase2="auth=MSCHAPV2"
}

随后执行 sudo systemctl enable wpa_supplicant@IFNAME.service. 如果不出意外,你可以在 sudo journalctl -xeu wpa_supplicant@IFNAME 中看到认证成功的信息。

再然后,使用 systemd-networkd 完成网络DHCP. 创建/etc/systemd/network/01-BUPT.network:

properties
[Match]
Name=IFNAME

[Network]
DHCP=yes
IPv6AcceptRA=yes

然后重载 systemd-networkd 配置 (sudo networkctl reload)。至此,连接应该已经配置完成。