大清校园网连接配置
深澜是什么,客户端?不存在的
为了更好地访问校园服务,网络总是必不可少。但是官方校园网认证对于各个操作系统的支持并不完善。有需求就有解决方案,同学们八仙过海各显神通开发出很多工具,参见thu.services/utils:
项目链接 支持平台 实现语言 目前是否可用(是否被维护) 特性 Tunet-2018 (official) Windows-GUI, Linux-CLI 未知 可用 未调查 GoAuthing Linux-CLI (x86_64, arm, mips, ppc, riscv), Windows-CLI, Mac OS-CLI (Intel, Apple) Go 可用 全平台全架构,准入与准出,v4和v6,systemd 服务,TUNA 提供镜像可以在未认证时下载认证工具,提供认证相关库 tunet-python 支持 python 的平台,CLI Python 可用 v4与v6,准入与准出,流量与准入出状态监控 tunet-c OpenWRT, Linux, macOS; CLI C 可用 提供认证相关库,二进制文件较小 tunet-rust Windows, Mac OS, Linux, Android, iOS Rust, Dart 可用 流量与余额监控,准入与准出,v4与v6;提供认证相关库;桌面端提供 CLI、CUI、GUI、Windows 服务、systemd 服务、launchd 服务;移动端提供 GUI TsinghuaTunet 支持 python 的平台, CLI Python 可用于特定子网 未调查 auth-tsinghua 支持 node.js 的平台, CLI Javascript 不再维护 已经重定向至 GoAuthing TsinghuaNet Windows, Mac OS, Linux, UWP, Android, iOS C# 不再维护 已经重定向至 tunet-rust tunet-cli 支持 python 的平台,CLI Python 不再维护,上个 commit 在2017年 未调查 Tsinghua-Online 浏览器插件,在Chrome 商店中 Javascript 不再维护,上个 commit 在2013年 浏览器插件 THUNetwork 支持 python 的平台, CLI Python 不再维护 密码明文传入命令行,较为不安全
最近刚好需要在无显示器的情况下,用SSH连接Linux Console连接校园网,于是就从中选择GoAuthing进行使用了,下面简单记录一下配置。
下载选择
Linux发行版
一般Linux发行版上使用GoAuthing,根据自己的平台选择对应的二进制文件即可,比如我是在armv6的CPU上运行的debian系统,就选择.armv6。linux平台上查看处理器类型命令是uname -p,可以根据命令输出选择。

下载后记得用chmod +x给它运行权限。接下来创建文件~/.config/auth-thu并放入以下认证信息:
{
"username": "你的用户名",
"password": "你的密码",
"host": "",
"ip": "",
"debug": false,
"useV6": false,
"noCheck": false,
"insecure": false,
"daemonize": false,
"acId": "",
"campusOnly": false
}
然后就可以使用下面的命令测试认证信息
./auth-thu --debug auth -k
成功后就可以进入下一步。
Win用户
使用tunet-rust,有图形界面,无脑下载安装就行。
服务配置
Linux发行版
这里我在树莓派上使用了systemd在用户空间的service来配置连接,参考这篇博客和这篇。因为通常连接的是Tsinghua-IPv4的WiFi,所以还需要配置一下wpa_supplicant。在/etc/wpa_supplicant/wpa_supplicant.conf中加入以下内容:
network={
ssid="Tsinghua-IPv4"
key_mgmt=NONE
}
然后使用命令重启wpa_supplicant:
sudo systemctl restart wpa_supplicant
接下来配置自动认证服务。先在目录~/.config/systemd/user/下创建goauthing.service文件,按照官方的配置编写:
[Unit]
Description = Authenticating utility for auth.tsinghua.edu.cn
StartLimitIntervalSec = 0
[Service]
ExecStartPre = -"auth-thu路径" -D deauth
ExecStartPre = -"auth-thu路径" -D auth
ExecStartPre = -"auth-thu路径" -D login
ExecStart = -"auth-thu路径" -D online
Restart = always
RestartSec = 5
[Install]
WantedBy = default.target
最后运行以下命令,查看服务状态是否正常
systemctl --user daemon-reload
systemctl --user enable goauthing.service
systemctl --user start goauthing.service
systemctl --user status goauthing.service
Win用户
在安装的目录下打开Power Shell, 运行下面的命令注册服务即可。
.\tunet-services register
还可以参考这里使用goauthing运行定时脚本。
Win10开启SSH和RDP
教育网公网IP屏蔽了常用端口,如22(SSH)、80(Web)、3389(RDP),需要更改其它端口连接,参考官方文档“更改远程桌面的侦听端口 | Microsoft Learn”。但是用密码连接可能会被爆破,所以推荐用SSH转发加一层SSL加密来增加安全性,可以参考之前的博客。
1. 在被控主机上开启SSH并修改端口
首先开启和配置ssh服务。打开文件夹C:\ProgramData\ssh,因为需要管理员权限,建议先复制在其它文件夹,然后编辑文件sshd_config,取消#Port 22的注释把端口改成别的:
Port xxx #设置你的端口,最大65535
如果需要证书登录,找到和编辑用户组administrators
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
然后新建一个名为administrators_authorized_keys的文件,把公钥放进这个文件里,参考官方文档。完成之后把administrators_authorized_keys、sshd_config两个文件放到C:\ProgramData\ssh中。为了保证能够打开一个提权的Power Shell,要在有管理员权限的cmd中运行下面的命令:
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
最后按下win+r打开services.msc,找到OpenSSH SSH Server和OpenSSH Authentication Agent服务,设置成自动然后启动。
2. 在被控主机上开启远程连接RDP服务
打开设置,搜索远程桌面然后启用即可,如图

3. 在主控端开启SSH本地转发并连接
在另一台主机上备好私钥,开启ssh端口转发,例如:将本地的12345端口本地映射出来使用命令
ssh -L 12345:localhost:3389 -C -N -l your_username your_server_ip -p xxx #xxx为在1中设置的端口号
然后开启RDP客户端连接,地址选localhost:12345,输入用户名密码即可。实测感觉rdp比vnc速度更快,播放视频不卡,还有声音。
2025.1.27日更新
4. 被控端开启ddns和ip变动通知
因为被控端会移动或者开关机以及其它路由器方面的原因而导致ip变动,之前的ip很有可能会因此失效,导致无法再连接。而因为大清校园网ipv4是教育网公网ip和ipv6地址,故只需要绑定一下ddns即可。 以教育网ipv4为例,ddns服务选择cloudflare进行配置。
为了避免每次隔一段时间检查ip变动,我们只需要使用微软自带的任务计划程序创建任务
。首先右键选择创建基本任务,填入名称和描述。然后填入触发器,这里只需要加入下面三个触发器任务:
接下来选择操作,填入在触发上述事件时需要运行的脚本路径。最后完成之后检查一下其它的选项,如常规中在未登录时也运行任务。这样就不用每隔一段时间检查ip,能够省下一些cpu时间进行其他任务。
运行的脚本中需要在ip变动时将ip发送给ddns服务器,这里选择cmd脚本,创建bat文件后另存为ANSI编码,可以支持中文。在脚本中填入以下内容:
@echo off
for /f "tokens=2 delims=:" %%f in ('ipconfig ^| findstr "IPv4 Address"') do set "ip_addr=%%f"
for /f "tokens=5 delims= " %%f in ('netsh interface ipv6 show address ^| findstr "临时"') do set "ip6_addr=%%f"
curl -X POST -H "Content-Type: application/json" -d "{\"chat_id\": \"xxx\", \"text\": \"Your *IP address* changed to ipv4: *%ip_addr%* and ipv6: *%ip6_addr%*\\!\", \"parse_mode\": \"MarkdownV2\"}" https://api.telegram.org/your_bot_key_/sendMessage
curl "https://api.cloudflare.com/client/v4/zones/your_zone_id/dns_records/dns_record_id" -X PATCH -H "Content-Type:application/json" -H "Authorization: Bearer your_api_key" -d "{\"comment\": \"Domain verification record\",\"content\": \"%ip_addr%\",\"name\": \"你的域名\", \"proxied\": false, \"ttl\": 3600, \"type\": \"A\"}"
rem pause
上面的的脚本发送了更新后的ipv4和ipv6地址。同时通过cloudflare的API更新了动态dns。需要注意自行配置tg bot key和cloudflare里的api key以及zone_id和dns_record_id。dns_record_id在哪找?我也是费好大劲终于找到,首先打开cloudflare的dashboard,然后在Manage Account下拉页面找到Audit Log,最后在你创建域名的记录值中有zone_id和dns_record_id。
| 微信(WeChat Pay) | 支付宝(AliPay) |
|
|
| 比特币(Bitcoin) | 以太坊(Ethereum) |
|
|
| 以太坊(Base) | 索拉纳(Solana) |
|
|