这是一条关于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即可(官方支持设备请详见Openwrt和Pandorabox),要是你不想折腾的话,仅支持以下两种具体芯片(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
进入文本编辑状态(不会用vim的自行百度):
#!/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
进入文本编辑状态(不会用vim的自行百度):
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的官方wikis),然后下载PCAP库:libpcap_Latest,速度可能非常慢,所以最好能够耐性等(Fan)待(Qiang)...所有的下载文档都在~/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,折腾愉快!
补充阅读:
DrCom 5.2.1(X) 版协议分析 —— UDP 协议
鸣谢:
Copyright 2017 Steven & Edward
Final update, this tutorial will be archived
22 条评论
sgu · 2017年9月19日 下午11:35
首先谢谢作者的无私奉献 Pandorabox之前已经弄好了 现在是心跳包出了些问题 请问作者有啥解决方法呢?
昊炜 · 2017年9月20日 下午9:06
对的,现在在那个release页面已经发布了新的一个包就是解决这个问题的,之前不小心发错了。。。
no_one · 2017年9月23日 下午3:24
成功了,感谢大佬
Canus · 2017年10月16日 下午3:45
同学,我按图上设置了静态路由,能上教务系统但是上不了mis系统的网络课程,求大佬救命?
昊炜 · 2017年10月17日 下午5:01
ping过moodle平台的ip地址是210.38.192.11,所以你需要添加相应网段的静态路由尝试一下。。。
Canus · 2017年10月31日 下午5:20
210..8.192.0添加了不起效果
昊炜 · 2017年11月1日 下午12:06
你的子网掩码要检查清楚哦,我这边测试是可以用的,详情你可以查看mis系统里面的静态路由的bat文件
Canus · 2017年12月10日 上午11:02
大佬,我的k2潘多拉安装卡在了安装依赖库的那一步,提示更新失败
ChenWen · 2017年10月27日 上午11:08
请问WiFi接口配置成客户端模式以及SSH会话后面的代码是写在哪里的?
昊炜 · 2017年10月27日 下午4:27
Wi-Fi的配置可以在路由的管理界面下配置
Cd · 2017年10月27日 上午11:35
还有依赖库上传到路由器中安装的文件是哪些
昊炜 · 2017年10月27日 下午4:26
软件包在GitHub上面,依赖库需要自行安装。
noa · 2017年12月17日 上午9:40
请问自己编译的包连上后提示,[U8 Error] sendto, errno = 128, desc: Network is unreachable,然后重连,是要加-D OPENWRT吗,怎么加能详细说下吗
noa · 2017年12月25日 下午9:40
解决了谢谢大佬
jj · 2018年2月3日 下午1:42
大佬,路由器刷潘多拉成功后,也开了ssh,也将路由器的WAN口连接了已经联网的路由器的LAN口,用终端路由器时,出现ssh: connect to host 192.168.1.1 port 22: Connection refused,怎么解决啊?大佬
昊炜 · 2018年2月3日 下午4:58
这应该是你ssh没打开,所以才会Connection refused的
xxx · 2018年2月4日 下午7:59
请问自己编译的包,上传以后想要安装的时候报错,can’t load library ‘libpcap.so.1’ 没有这个动态链接库,怎么解决啊?大佬
昊炜 · 2018年2月25日 下午3:19
安装的时候要加上–nodeps的选项就不会检查依赖
secj · 2018年2月3日 下午5:11
请问自己编译的包,上传以后想要安装的时候报错,can’t load library ‘libpcap.so.1’ 没有这个动态链接库,怎么解决啊?大佬
昊炜 · 2018年2月25日 下午3:19
安装的时候要加上–nodeps的选项就不会检查依赖
aihaowei · 2018年2月24日 下午8:15
大佬,opkg install libpcap libpthread报错unknown package ‘libpcap’ unknown package ‘libpthread’怎么解决啊?opkg update执行没报错。 第二个方法,添加三行代码,再在后面加上–force-depends也试过了,报同样错。上网没找到相关解决办法,还望大佬支招,万分感谢
昊炜 · 2018年2月25日 下午3:20
检查软件源列表是否为最新,还可以自行在网上搜索适合系统版本的对应软件包进行手动安装。