記錄 OpenWRT 通過深瀾網路認證的折騰過程

📢 本文由 gemini-2.5-flash-lite 翻譯

引言

記錄我使用 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 即可,然後配置姓名與郵箱

1
git config --global user.name "Name"
1
git config --global user.email "[email protected]"

傳輸文件

繼續使用 wget 下載 Linux 核心,嘗試了三四次,幾乎都是在 50% 左右下載失敗而且速度很慢

注:使用 wget -c URL 可實現斷點續傳

然後就是 盒子 這個軟體貌似支援直接拖拽傳輸,於是我在我的電腦下載好後直接拖過去,失敗,文件沒有被傳輸過去,考慮到傳輸後的文件在 ~/Downloads/ 下,我使用的是 root 帳戶,於是我參考 Linux 添加用戶和管理員用戶 創建了一個用戶 (差點把最後一步刪除用戶也執行了)

使用命令 su username 切換用戶,創建文件夾 ~/Downloads/,再次拖入還是失敗

嘗試使用 盒子 的共享功能將電腦的 ~/Public 共享,但我怎麼操作也不能在虛擬機裡看到 (想必這軟體只適配了 RHEL 和 Fedora 吧)

SSH 傳輸

然後我想到了通過 SSH 傳輸 (因為我輸入 ftp 發現沒這個命令,懶得裝了)

本地開啟 SSH 連接,然後通過 scp 命令以使用 SSH 傳輸文件

1
scp username@servername:/path/filename ~/Downloads/

首先是確定 IP,在虛擬機中輸入命令 ip route 得到 IP 為 10.0.2.2

然後使用 scp 命令傳輸

解壓文件

使用 tar 命令解壓文件

1
tar -xzvf filename.tar.xz

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 報文嗎,我搜了一下,發現 curlwget 命令可以模擬 getpost 請求 (於是我打開 Fiddler 開始抓包,企圖還原驗證過程)

才怪,我用路由器連接上學校網,電腦插上網線連上路由器,輸入認證頁面 IP,認證完成,路由器有網了

Linux 命令模擬 Http 的 get 或 post 請求

雖然沒用到,不過既然看到了那就記錄一下吧

  • GET 請求
  1. curl
1
2
3
4
5
6
7
8
## 如果這裡的 URL 指向的是一個文件可以直接下載到本地
curl URL
## 顯示全部信息
curl -i URL
## 只顯示頭部信息
curl -I URL
## 顯示 get 請求全過程解析
curl -v URL
  1. wget
1
wget URL
  • POST 請求
  1. curl
1
2
3
4
5
6
## 通過 -d 參數,把訪問的參數放在裡面
curl -d "param1=value1&param2=value2" "URL"

curl -d'param1=value1&param2=value2' -X POST URL

curl -d 'param1=value1' -d 'param2=value2' -X POST  URL
  1. wget
1
2
## 通過 --post-data 參數實現
wget --post-data 'user=name&passwd=passwd' URL

再次總結

有時候不能把某件事想的太複雜,往往很簡單的事只思考而沒實踐就否認這種可能性是錯誤的,這次就是我一開始就把最後再次嘗試部分否決才鬧了這麼一大圈 (要不是流量卡的不行我才不會去試)

寫到這時我想到了兩句名言

  1. 學而不思則罔,思而不學則殆

  2. 實踐得真知

所以有些時候還是應該大膽去嘗試,不要因為過多的思考而限制了自己!

參考文章

求助深瀾校園網 Portal 認證應該怎麼刷固件?-小米無線路由器以及小米無線相關的設備-恩山無線論壇

configuration - How to fix make error “No rule to make target ‘menuconfig’” when building a kernel for Beagleboard? - Unix & Linux Stack Exchange

在虛擬機中設置靜態 IP (centos 為例) - yexca’Blog

安裝 Git - 廖雪峰的官方網站

Linux 添加用戶和管理員用戶 - yexca’Blog

linux 系統下如何進行用戶之間的切換_M李麗的博客-CSDN博客_linux切換系統

使用 ssh 傳輸文件 - 思否

Linux tar 命令-菜鳥教程

Portal 認證原理-曹世宏的博客

Linux 命令發送 Http 的 get 或 post 請求 (curl 和 wget 兩種方法)_cyl937的博客-CSDN博客

This post is licensed under CC BY-NC-SA 4.0 by the author.
最後更新 2025-11-08 20:50 +0900