韶关学院电信校园网路由教程

这是一条关于 xxx 的技术教程,事先声明,不要拿着这个宣传甚至谋利,仅供学习和研究,仅供学习和研究,仅供学习和研究。开发者不负任何的连带责任,有兴趣研究的同学可以看看补充阅读,共同交流学习。

以下步骤建议在 linux 环境下完成。

基本环境 (个人测试环境):

部署系统:

  • OpenWrt: Chaos Calmer-->15.05,15.05.1
  • Pandorabox: 2017.1 (貌似基于OpenWrt Barrier Breaker 14.07)

协助安装系统:

  • Windows: Win10 1703 Creator's Update (XShell,WinSCP,Cmder)
  • Linux: Ubuntu 16.04.3 LTS (Terminal)
  • MacOS: Sierra 10.12.6 (Terminal)

路由器 (经过测试):

  • NETGEAR WNDR3800 ar71xx-generic
  • Lenovo Newifi mini(y1) ramips-mt7620
  • Phicomm k2 ramips-mt7620

首先,至关重要的是你要有台合适的某设备,千万不要问为什么,好吧,因为只针对两种架构的芯片进行了适配,要是你有一个折腾的心,可以自己去学习交叉编译(源码在 Github 上,clone 或者 download 就能拿到;教程详见:Openwrt官网),这样的话,最基本的要求就是你的路由能刷上 openwrt 或者 pandorabox 即可(官方支持设备请详见 OpenwrtPandorabox),要是你不想折腾的话,仅支持以下两种具体芯片(ramips-mt7620 和 ar71xx-generic),没为什么,因为别的架构用不上,所以你要买一个这样架构的某设备,不清楚的就要自己百度找对应的型号了,要是你手上正好有这样的东西,那正好,赶紧去刷上 openwrt,至于怎么刷,还是见百度,因为都有,怕刷成砖,可以先刷个不死 uboot,教程还是看百度,建议找一个好刷的某设备,可以百度看看资料多不多再入手,在刷好之后先登录 192.168.1.1 进行基本配置,设置好 root 密码什么的,这十分重要,记得要开远程 ssh 访问哦,监听端口号不要改就好,不会还是百度,英文系统看不懂,汉化教程百度有。

2017-09-24 更: 在 Github 仓库 已经放出 OpenWrt makefile ,可以自行在 OpenWrt 官网下载任意架构的 ImageBuilder 和 SDK 构建带有 SguDrcom 的镜像或者生成安装包,构建镜像的时候需要注意一同编译依赖包到镜像当中。

P.S 项目说明要看,记得遵守开源许可规则,还可以顺手给上面的 github 项目点个赞什么的,看着爽。。。另外安利一下 macOS 版的,有需要也可以去用 SguDrcomClientGUI

言归正传,在你拥有刷好某系统的某设备之后,去新地址 Github Release 下载对应架构的 ipk,然后用远程 ssh,怎么 ssh,麻烦百度...... 然后就是安装刚下载好的安装包了,因为这个ipk依赖于别的库,所以你要一起装......

(PS:之前针对 7620 架构的安装包因为错误上传先前测试版本会出现心跳包错误,现已修正,重新安装即可。。。)

这时候 ssh 就派上用场了,用终端进行 ssh 或者在 win 环境下装一个 xshell 或者 putty 什么的,连上之后,首先先装依赖库,路由器此时需要联网,联网的方法有接上另外一台路由器从 LAN 口接 WAN 口,或者扫描一个 WiFi,将路由的 WiFi 接口配置成客户端模式:

Steven@ubuntu:-$ scp ./xxx.ipk root@192.168.1.1 /root/xxx.ipk
#上传软件包,前面路径为本地路径,后面路径为路由器路径
#root@192.168.1.1's password: 出现后输入密码,密码不会显示,win下用winSCP工具进行上传
Steven@ubuntu:-$ ssh root@192.168.1.1 
#root@192.168.1.1's password: 出现后输入密码,密码不会显示,win环境下putty请自行在对话框中填好参数

下一步,在连接好的 ssh 会话中:

opkg update #国外服务器比较慢,耐心等待
opkg install libpcap libpthread #安装pcap,pthread依赖包
cd /root #进入刚才软件包的上传路径
opkg install xxx.ipk

2017-09-19 补更:

这两天测试的时候发现其实 Pandorabox 可以通过一个稍微复杂的方式刷入,下面也简单介绍一下和上面的安装方式不同的是,在 Pandorabox 上直接 opkg 的时候会出现 (注意:下面操作有可能产生未知后果,仅在联想 newifi mini(y1) 和斐讯 k2 下测试过,请谨慎操作,该情况的安装请遵照以下操作):

root@PandoraBox:/tmp]# opkg install sgudrcom_1.0-1_ramips_24kec.ipk
Unknown package ´SguDrcom´.
Collected errors:
* pkg_hash_fetch_best_installation_candidate: Packages for sgudrcom_1.0-1_ramips_24kec.ipk found, but incompatible with the architectures configured
* opkg_install_cmd: Cannot install package SguDrcom.
#简单来说就是架构适配出现了问题

这个是正常现象,Pandorabox 是基于 OpenWrt 深度定制的,至于是因为版本号不对还是 P 对 O的内核进行了修改而导致这样的问题就不得而知了。接下来,就进入路由的管理界面,在 “管理 » 系统 » 软件包 » 配置” 里,追加并保存生效:

arch all 100
arch ramips_24kec 200
arch ramips 300

回到 ssh 之后:

#先无需安装依赖包,--nodeps选项为不检查依赖安装。
opkg install sgudrcom_1.0-1_ramips_24kec.ipk --nodeps
#安装成功后会提示Configured + 包名

随后返回到刚才那个页面,删掉刚才添加的那三行配置,保存生效后再次返回ssh,执行完操作之后就可以回归到正常的流程了:

#修复拨号器的依赖
opkg install libpcap libpthread --force-depends

安装好之后:

cd /etc/init.d
vim sgudrcom

进入文本编辑状态:

#!/bin/sh /etc/rc.common
START=99
 
start(){
    SguDrcom /root/drcom.conf
    echo "Sgu Drcom Client started!"
}
 
stop(){
    killall SguDrcom
    echo "Sgu Drcom Client stopped!"
}
 
restart(){
    stop
    start
}
#保存退出,该文件作用为设置启动项

下一步,从上面的文件中明显可以看出,启动时会读取一个特别的配置文件,所以我们也要创建这个文件:

cd /root
vim drcom.conf

进入文本编辑状态:

device=eth0.2 #请根据你的路由的具体设备名,在管理页面的网络->接口处查看网卡设备名
username=xxxxxxxxxxx #填入内网账号,一般为学号
password=xxxxxx #填入内网密码,一般为111111
authserver_ip=192.168.127.129
udp_alive_port=61440
auto_login=0
#保存退出

在 win 环境下,可以在本机先编辑好相应文件再上传到对应路径,依然是 winSCP 工具

剩下的就是,在 192.168.1.1 管理界面的 “网络 -> 接口” 界面下,在对应的 WAN 口网卡设置中填入你宿舍对应的静态地址,需要克隆 mac 地址的自行克隆,因为学校限制绑定了设备 mac 地址,不懂得百度,或者去解绑,然后新建一个 PPPoE 接口,填入你的外网账号和密码,保存就好,然后重启,在状态 -> 系统进程中看到:

证明软件已经成功启动,如果看到接口中的 PPPoE 已经连上,则说明一切正常,可以起飞了,用身边的设备测试一下连接性,能上网就恭喜了,不能上网就在折腾一下,还有就是为了软件发包不挂,记得在路由管理界面中添加一条静态路由,还有想访问校园网的也要:

P.S:刷路由是一个很耗时间的东西,而且这个学校也不是那么喜欢,所以希望大家谅解,有折腾的心的可以自己尝试刷,作为一个计算机的学生,应该要有动手能力,不能老指望这别人,还有教程,忙里偷闲写的,比较赶,所以发现不对的地方可以指出,还能抢救一下,遇到什么奇奇怪怪的问题还是那句老话,百度谷歌价最高,买错路由的麻烦面壁思过,所以,折腾愉快。

最后附上成功的剧情。。。少年你懂的。

2017-10-29 更 (Notice: 以下操作建议在 Linux or Unix based OS 上完成,需要有一定的动手能力):

Github 上更新了适配 Openwrt 的 Makefile,可以用于交叉编译不同架构的安装包,教程可以查看网上的交叉编译教程,下面简单介绍一下下:

首先还是先传送到 Openwrt 的 Official sites 下载对应 OS 版本,处理器架构的 SDK 或者 ToolChain (下面的内容会使用 SDK 进行演示,至于 ToolChain 和 SDK 的介绍可以查看 OP 的官方 wiki),然后下载 PCAP 库: libpcap_Latest, 速度可能非常慢,所以最好能够耐性等待... 所有的下载文档都在 ~/Downloads 下面。

然后就是解压了,还有配置必要的环境:

#确实依赖于很多包,安装出现各种各样奇怪问题的只能自行解决,无法一一列举
#请确定系统的gcc,g++等编译器处于正确配置状态,出现问题一样需要自行解决
#各依赖包的作用不一一介绍,分别是下面几个步骤需要用的一些依赖环境。。。
steven@ubuntu:~/Downloads$ sudo apt-get install ccache byacc flex glibc-doc manpages-posix-dev git-core build-essential libssl-dev libncurses5-dev unzip gawk subversion mercurial
steven@ubuntu:~/Downloads$ tar -xjf ./OpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2
steven@ubuntu:~/Downloads$ tar -xjf ./libpcap-1.8.1.tar.gz
steven@ubuntu:~/Downloads$ cd libpcap-1.8.1
steven@ubuntu:~/Downloads/libpcap-1.8.1$ ./configure
steven@ubuntu:~/Downloads/libpcap-1.8.1$ sudo make && sudo make install
#以上两个步骤需要确定没有出错,出错也只能自行检查判断
steven@ubuntu:~/Downloads/libpcap-1.8.1$ cd ..
steven@ubuntu:~/Downloads$ git clone https://github.com/laijingwu/SguDrComClient.git

接下来就是在 OpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/package 下建立 Network 文件夹,再在 Network 文件夹下面建立 sgudrcom 文件夹,将 clone 下来的文件夹里面的 src 文件夹和 Makefile_openwrtsdk 复制到刚新建好的 sgudrcom 文件夹中,并将 Makefile_openwrtsdk 更名为 Makefile,再将 src 文件夹中的 Makefile 删除,再将 Makefile_openwrt 更名为 Makefile,这样算是完成了编译环境的基本配置了。。。

#选择Network文件夹,看到sgudrcom前注有M即可,然后就可以save了,如图
steven@ubuntu:~/Downloads/OpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64$ make menuconfig

然后就就可以进行编译,编译成功后可以在 ~/Downloads/OpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/bin/ramips/packages/base 文件夹下找到编译好的安装包

steven@ubuntu:~/Downloads/OpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64$ make
#没有任何报错,出现以下信息可认定为成功。。。
 
#
# configuration written to .config
#
 make[1] world
 make[2] package/compile
 make[3] -C package/Network/sgudrcom compile
 make[2] package/index

还有一点需要补充的,按照此方法编译完成的安装包有可能心跳维持会有问题,是因为不同架构的或不同版本的 Openwrt 无法确定是大端法还是小端法 (我们也不清楚为什么会不统一),所以导致心跳包的数据不能正确填充导致验证不正确,所以需要在 /src 文件夹中的 Makefile 编译时在用到宏定义的文件中添加 -D OPENWRT 选项进行编译,具体需要添加的文件请参见 Repository 中的源码,在用到 Openwrt 宏定义的文件编译时添加上该选项。。。

最后想说所有的坑终于填完了,还是要提醒一下,仅供学习,开发者不负任何的连带责任。。So,折腾愉快!

补充阅读:

鸣谢: