当前位置:文档之家› 利用路由器刷Openwrt和mentohust上网方法实现

利用路由器刷Openwrt和mentohust上网方法实现

校园网中利用路由器刷Openwrt+mentohust上网方法实现关键词:路由器,TP-LINK TL-WDR3320,Openwrt,锐捷认证, mentohust, 固件,交叉编译,锁文件注:本文很多地方参考了warriorpaw的博文/warriorpaw/article/details/7990226,致敬,感谢!0. 背景学校去年开通了万兆校园网及校园无线,并开始使用锐捷认证上网。

同一账号可同时三台终端上线,有线采用锐捷认证(1台终端),无线采用WEP/WPA2认证(2台终端)。

校园网上给出了锐捷的windows、Mac及linux客户端。

开始时linux客户端还可用,后来就无法通过认证,并且与linux(Gnome)的netmanager 冲突。

后来,实验室增加了用于计算的工作站,于是锐捷linux客户端的问题及终端数限止问题日益突出。

经上网搜索,根据手头的资源,确定使用路由器刷openwrt固件,并安装mentohust认证软件实现:同一锐捷账号共享上网,同时完成内网布置。

实现过程中经历了不少曲折,写下来作为记录,同时与大家交流。

【实现本文的操作,用户应当对网络设置有基础了解,对linux下的基本shell命令,环境变量,文件系统,用户/文件/权限,远程操作和交叉编译有一定了解。

】1 刷入openwrt固件1.1 了解openwrt关于OpenWrt的介绍参见:/(中文)和https:///Openwrt固件及一些相关软件亦可从这两个站点下载。

后面用到时将给出具体链接。

1.2 准备工作[建议:生手(如我)在刷固件前应认真阅读这两个网上的内容,并把其中的各网页内容下载下来作离线备用]上openwrt的官方网查询自己的路由器是否在支持列表https:///toh/start被支持最好,否则可下载通用版本试试,但很可能会使你的路由器变砖。

1.2.1 固件下载假设被支持,下载相应的固件,其名字应该与openwrt-ar71xx-generic-tl-wdr3320-v2-squashfs-factory.bin类似。

本例中的文件名是我的路由器对应的固件。

我的路由器型号为:TP-LINK TL-WDR3320。

我是从网友的百度网盘上下载的,具体地址记不起来了。

总之,要找到对应于自己路由器型号的固件。

ar71xx通用的BB (Barrier Breaker)Release在https:///barrier_breaker/14.07/ar71xx/generic/ 链接下面找。

下载下来备用,一般放在自己的主目录下。

[建议:后面的工作在linux完成。

因为路由器的固件就是一个小linux系统,而且后面我们交叉编译mentohust还要用linux。

否则,你需要在windows 下安装一堆软件甚至虚拟机,比较麻烦(网上相关介绍较多,自行搜索)。

不懂linux,那学习掌握了linux以后再来看这个]1.2.2 刷入固件依照openwrt官方wiki安装指南https:///doc/howto/generic.flashing及网友们的经验,应当首先尝试第一种安装方法:利用路由器中原厂的升级菜单。

连接电脑与路由器(当然是接在LAN口上),在电脑上网浏览器中输入http://192.168.1.1,出现登录路由器界面,输入用户名和密码登录。

(一般没改过的用户名与密码均为admin。

推荐大家设置路由器时修改用户名和密码,安全问题。

网址也有可能是别的,比如192.168.1.123等,要看路由器的说明书。

所有改动均可通过按钮恢复到出厂状态)升级菜单一般在主菜单--系统设置--固件升级下。

(此处因我的路由器已刷过,没有了web 登录及控制界面,不附图了。

没设置过soho路由器或无线路由器?那算了,你还是别往下看了。

先学习去)打开该菜单后,出现对话框,提示你输入将要刷入固件文件的位置,用鼠标点击“浏览”按钮,找到你下载的固件文件,点击“升级”或"确定"按钮完成固件刷入。

[成功后你将暂时不能再用浏览器登录路由器了。

其他方式的刷固件方式没测试,不妄言]2 编译mentohust2.1 mentohust资源列表从官方:/p/mentohust/downloads/list或mentohust作者的博客(华中科大)下载mentohust源码包,我下载的是mentohust-0.3.1.tar.gz------------------------------------Toolchain(交叉编译环境)下载:下载对应你路由器cpu的交叉编译链下载地址:/backfire/10.03.1/比如HG320路由BCM5358的CPU MIPSEL构架 2.6内核的就用brcm47xx/ 里面的Toolchain我下载的为:OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2(对应的芯片平台是mips)另要下载libpcap,比如我下载的为:libpcap-1.7.4.tar.gz下载地址/-------------------------------------------------2.2 为什么编译而不是直接下载安装包原因是下载的可执行/安装包(mentohust.mips.7z)不能用。

试验:将上述包解压后,将其中的文件直接复制到(使用scp the/path/to/mentohsut root@192.168.1.1:/jffs/etc/mentohust/ , 注:提前在固件中建立该目录)路由器,并改变权限后并不能用。

2.3 设置编译环境先解压OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2到一个目录,例如:/home/chen/temp/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2 为了后续工作键盘输入量减少,将上述目录改为(目录重命名)/home/chen/temp/mips_34kc-gcc-4.8按照warriorpaw的文章,先应设置环境变量,但不能照抄,应据实际情况修改============代码引用===============export PATH=$PATH:/home/paw/mipsel-gcc-4.3.3/usr/bin/export CC=mipsel-openwrt-linux-gccexport CPP=mipsel-openwrt-linux-cppexport GCC=mipsel-openwrt-linux-gccexport CXX=mipsel-openwrt-linux-g++export RANLIB=mipsel-openwrt-linux-uclibc-ranlibexport ac_cv_linux_vers=2.6.24export LDFLAGS="-static"export CFLAGS="-Os -s"=============代码引用结束===============似乎第7句并非必要。

我实际修改如下:===============代码引用======================export PATH=$PATH:/home/chen/temp/mips_34kc-gcc-4.8/usr/bin/export CC=mips-openwrt-linux-gccexport CPP=mips-openwrt-linux-cppexport GCC=mips-openwrt-linux-gccexport CXX=mips-openwrt-linux-g++export RANLIB=mips-openwrt-linux-uclibc-ranlibexport LDFLAGS="-static"export CFLAGS="-Os -s"=============代码引用结束=======================可以进入Toolchain中实际看一看,这些编译器在什么位置,实际文件名是什么。

先编译libpcap,再编译mentohust2.4 编译libpcap及mentohust参见/warriorpaw/article/details/7990226分别解压,然后进入相应目录,按照上述链接给出的步骤一步步进行-----------网文引用-------------------编译libpcap解压libpcap-1.7.4.tar.gzcd进去生成Makefile./configure --host=mips-linux --prefix=/home/paw/work/ --with-pcap=linux如果这里出错,返回2.3请检查环境变量make这里会编译失败,具体出的什么错,没弄明白,但是我们需要的libpcap.a已经生成cp走不管它了(比如,cp到家目录下,或者不用动,下面编译mentohust时给出正确路径也可)----------------网文引用结束-------------------编译mentohust其中编译mentohust时须修改以下两个文件============代码引用=====================myconfig.c-----------------下为myconfig.c的内容-------------------static const char *CFG_FILE = "/jffs/etc/mentohust.conf"; /* 配置文件*/static const char *LOG_FILE = "/jffs/tmp/mentohust.log"; /* 日志文件*/static const char *LOCK_FILE = "/jffs/tmp/mentohust.pid"; /* 锁文件*/-----------------------------------------myfunc.c-----------------下为myconfig.c的内容------------------static const char *DATAFILE = "/jffs/etc/mentohust/"; /* 默认数据文件(目录) */----------------------------------------=====================================自动生成configure运行下述命令:sh autogen.sh生成Makefile运行./configure./configure --host=mipsel-linux --disable-encodepass --disable-notify --prefix=/jffs --with-pcap=/path/to/libpcap.a注:--with-pcap=后面就是编译libpcap生成的libpcap.a 的路径如果这里出错,返回2.3请检查环境变量运行makemake如果顺利,用在你路由器上的二进制文件已经生成2.5 mentohust编译中出现的问题及解决办法2.5.1 环境变量设置错误最常见的问题就是设置环境变量时的拼写错误,一定要严格对照。

相关主题