您的位置:首页 > 其它

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

2012-09-18 09:05 288 查看
RT, 首先感谢https://code.google.com/p/mentohust/大牛们提供的mentohust 我只是编译下......囧

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

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

先决条件:你有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走 不管它了



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

如果顺利,用在你路由器上的二进制文件已经生成



上传到路由器

使用方法参照 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



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

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

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



OVER enjoy it !

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

参考链接 : http://bbs.xmlad.com/viewthread.php?tid=521
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: