交叉编译mentohust实现锐捷认证共享上网

时间:2021-01-06 14:27:17

RT, 首先感谢https://code.google.com/p/mentohust/大牛们提供的mentohust  我只是编译下......囧

还是那句话,管它协议是GPL 还是 BSD,但是请尊重开源精神,否则 请绕道

------github 镜像https://github.com/liuqun/mentohust  给打不开Google的人,不是我的clone的,也不是我的github账号

----------------------------------------------------------正文开始---------------------------------------------------------------------

先决条件:你有or准备入手一台能够正常运行ddwrt/openwrt/tomato等第三方rom的路由器,如果没,请直接跳到文章结尾处。


如果你有路由器,但是懒的自己编译,那就用我编译好的文件吧

适用于BCM47XX  BCM53XX RT305X等处理器

http://download.csdn.net/download/warriorpaw/4734127


如果遇到锁文件问题

ddwrt、tomato 固件请确定/JFFS目录可写

openwrt固件请

mkdir -p /jffs/tmp

mkdir -p /jffs/etc/mentohust

创建需要的目录

我几个路由器都主要使用ddwrt,就没再单独编一份适用于openwrt的,但已测试创建目录后可用

若不喜欢,请自行编译



1、准备

ubuntu12.04(我喜欢ubuntu,其他的也可以吧)

安装编译需要用到的包

sudo apt-get install build-essential bison flex zlib1g-dev libncurses5-dev subversion quilt intltool ruby fastjar unzip gawk


下载对应你路由器cpu的交叉编译链 下载地址:http://downloads.openwrt.org/backfire/10.03.1/ 

比如HG320路由  BCM5358的CPU MIPSEL构架 2.6内核的  就用brcm47xx/ 里面的Toolchain

如果是BCM5354系的CPU 用的是2.4内核固件,那么需要注意下,因为需要使用brcm-2.4/ 里面的Toolchain

但是这个Toolchain有bug不能用的,官方在SVN里修正源代码了,没编译,想用最新就自己参照文章末尾的链接去编译

不过不想自己编译的话OpenWrt-SDK-brcm-2.4-for-Linux-i686.tar.bz2 直接用这个老的也行


下载libpcap源码 http://www.tcpdump.org/


下载mentohust源码 svn checkout http://mentohust.googlecode.com/svn/trunk/ mentohust


2、配置交叉编译环境

解压下载的Toolchain

然后配置环境变量

export PATH=$PATH:/home/paw/mipsel-gcc-4.3.3/usr/bin/
export CC=mipsel-openwrt-linux-gcc
export CPP=mipsel-openwrt-linux-cpp
export GCC=mipsel-openwrt-linux-gcc
export CXX=mipsel-openwrt-linux-g++
export RANLIB=mipsel-openwrt-linux-uclibc-ranlib
export ac_cv_linux_vers=2.6.24
export LDFLAGS="-static"
export CFLAGS="-Os -s"
这个 别照抄,按照自己解压的位置使用的版本自己改下参数

(2012/10/19补充:GCC 4.6 需要STAGING_DIR环境变量,就是指向toolchain所在目录,按照上面的例子就是export STAGING_DIR=/home/paw/mipsel-gcc-4.3.3/)


3、编译libpcap动态连接库

解压libpcap-1.3.0.tar.gz

cd进去

生成Makefile

./configure --host=mipsel-linux --prefix=/home/paw/work/ --with-pcap=linux

如果这里出错,返回2请检查环境变量

make

这里会编译失败,具体出的什么错,没弄明白,但是我们需要的libpcap.a已经生成

cp走  不管它了

交叉编译mentohust实现锐捷认证共享上网



4、编译mentohust

cd进刚SVN生成的目录

这里需要修改一下源代码,因为源代码是为桌面版PC写的,它的配置文件、数据文件等路径都是指向/etc/,但是在ddwrt路由器上这个路径是只读的

修改下面2个文件的4个变量  如下

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

static const char *DATAFILE = "/jffs/etc/mentohust/"; /* 默认数据文件(目录) */

保存

自动生成configure

sh autogen.sh 

生成Makefile

./configure --host=mipsel-linux   --disable-encodepass --disable-notify --prefix=/jffs --with-pcap=~/libpcap.a

 --with-pcap=后面就是3生成的libpcap.a 拷贝到的路径

如果这里出错,返回2请检查环境变量 

make

如果顺利,用在你路由器上的二进制文件已经生成
交叉编译mentohust实现锐捷认证共享上网

上传到路由器

使用方法参照  http://wiki.ubuntu.org.cn/%E9%94%90%E6%8D%B7%E3%80%81%E8%B5%9B%E5%B0%94%E8%AE%A4%E8%AF%81MentoHUST


交叉编译mentohust实现锐捷认证共享上网

如果如上图所示已成功认证

把命令放在路由器开机脚本里面   以后只要打开路由器   想给多少人共用都可以

至于速度,看下图,学校没限速,100M跑满

交叉编译mentohust实现锐捷认证共享上网

OVER  enjoy it !


PS:没路由器啊,  那就在电脑上装个UBUNTU吧  用Google code上编译好的大便包吧  然后共享上网  电脑要一直开着哦。。。。



参考链接 : http://bbs.xmlad.com/viewthread.php?tid=521