引言
记录我使用 OpenWRT 路由器连接学校网的折腾过程,虽然最后的结果挺 emm?但在这个过程中还是了解到不少东西
起始
通过在浏览器搜索 openwrt通过深澜认证 得到
恩山无线论坛
帖子回复下的一个开源项目:
coffeehat/BIT-srun-login-script
,通过项目知道了有支持多平台 (包括 openwrt) 的 golang 版本,于是开始折腾
这是项目作者的文章: 深澜校园网登录的分析与 python 实现-北京理工大学版
折腾前
对于 OpenWRT 版本未提供编译后的版本,即 IPK 文件,又因为我水平不行看不懂 README 便请教同学得知为 Linux 的指令,但在实际操作后得知此命令为编译 Linux 内核,便放弃在实体机做开始使用虚拟机搞
参考: Building a custom kernel/zh-cn - Fedora Project Wiki
开始折腾
另朋友发了 configuration - How to fix make error “No rule to make target ‘menuconfig’” when building a kernel for Beagleboard? - Unix & Linux Stack Exchange ,于是我便照着此帖子回答尝试
创建虚拟机
因为我使用的 Fedora 自带虚拟机软件 盒子,首先尝试装 CentOS8,因为我的镜像文件放到了移动硬盘中,便直接挂载,选择。结果提示创建失败,然后我尝试了 CentOS7,失败,然后 Ubuntun,失败
接连失败,要不是我之前用这软件创建过Win10我都快怀疑是不是软件不行了,打开错误日至,果然看不懂,不过我注意到路径有中文,于是把路径改为英文,再次尝试,失败
然后第二天我在想既然是编辑内核,要不使用 kali 吧,于是把 U 盘中 kali 镜像复制到电脑,虽然最后安装失败但成功运行了,难道要把系统放本地才行吗
于是我把 CentOS7 的镜像拷贝到 ~/Documents/ 下,安装成功。因想着只是编译 IPK 便只有 root 用户
连接网络
本以为在 Linux 下创建 Linux 虚拟机可以直接共享网络的,于是我直接输入命令 wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.19.6.tar.xz,结果就是无法找到 IP 地址,使用命令 ifconfig 发现无IP
参考文章
在虚拟机中设置静态 IP (centos 为例)
使虚拟机连上网络,不过在最后文件修改只需要将 ONBOOT 后的值改为 yes 然后加俩 DNS 就行
安装git
连上网后我先装了个 git,使用 yum install git 即可,然后配置姓名与邮箱
| |
| |
传输文件
继续使用 wget 下载 Linux 内核,尝试了三四次,几乎都是在 50% 左右下载失败而且速度很慢
注:使用
wget -c URL可实现断点续传
然后就是 盒子 这个软件貌似支持直接拖拽传输,于是我在我的电脑下载好后直接托过去,失败,文件没有被传输过去,考虑到传输后的文件在 ~/Downloads/ 下,我使用的是 root 账户,于是我参考
Linux 添加用户和管理员用户
创建了一个用户 (差点把最后一步删除用户也执行了)
使用命令 su username 切换用户,创建文件夹 ~/Downloads/,再次拖入还是失败
尝试使用 盒子 的共享功能将电脑的 ~/Public 共享,但我怎么操作也不能在虚拟机里看到 (想必这软件只适配了 RHEL 和 Fedora 吧)
SSH 传输
然后我想到了通过 SSH 传输 (因为我输入 ftp 发现没这个命令,懒得装了)
本地开启 SSH 连接,然后通过 scp 命令以使用 SSH 传输文件
| |
首先是确定 IP,在虚拟机中输入命令 ip route 得到 IP 为 10.0.2.2
然后使用 scp 命令传输
解压文件
使用 tar 命令解压文件
| |
emm,非 gzip 压缩文件,那我不知道怎么解压啊
SSH 传输
还是使用 SSH 传输吧,在 scp 命令加上 -r 即可传输文件夹
开始尝试
按照步骤将解压后的文件放到 /usr/src/ 下,把 /boot 下的 config 放到 /usr/src/linux-5.19.6/.config,结果无论是把配置文件放到 .config/ 下还是放到 .config 都无法运行 make menuconfig 命令
总结
折腾失败,下次再来
不过在我编写此文章时注意到原帖尝试直接在 OpenWRT 运行 Python,有时间尝试一下
再次尝试
然后我咨询了一位过了认证校园网的朋友 (虽然他是普通路由器),他将路由器的 MAC 地址改为自己电脑的,结果插上网线认证页面会自动转发到电脑,然后认证后就有网了,不过是锐捷网页认证
然后考虑到深澜使用的是 Portal 认证也就是 Web 页面认证,既然是 Web 那想必就是使用 HTTP 了,我是否可以通过编辑 HTTP 报文的方式通过认证呢?那么 Linux 有命令可以发送 HTTP 报文吗,我搜了一下,发现 curl 与 wget 命令可以模拟 get 和 post 请求 (于是我打开 Fiddler 开始抓包,企图还原验证过程)
才怪,我用路由器连接上学校网,电脑插上网线连上路由器,输入认证页面 IP,认证完成,路由器有网了
Linux 命令模拟 Http 的 get 或 post 请求
虽然没用到,不过既然看到了那就记录一下吧
- GET 请求
- curl
| |
- wget
| |
- POST 请求
- curl
| |
- wget
| |
再次总结
有时候不能把某件事想的太复杂,往往很简单的事只思考而没实践就否认这种可能性是错误的,这次就是我一开始就把最后再次尝试部分否决才闹了这么一大圈 (要不是流量卡的不行我才不会去试)
写到这时我想到了两句名言
学而不思则罔,思而不学则殆
实践得真知
所以有些时候还是应该大胆去尝试,不要因为过多的思考而限制了自己!
参考文章
求助深澜校园网 Portal 认证应该怎么刷固件?-小米无线路由器以及小米无线相关的设备-恩山无线论坛
在虚拟机中设置静态 IP (centos为例) - yexca’Blog
linux 系统下如何进行用户之间的切换_M李丽的博客-CSDN博客_linux切换系统
Linux 命令发送 Http 的 get 或 post 请求 (curl 和 wget 两种方法)_cyl937的博客-CSDN博客