锐捷认证。非标准的802.1认证。 我采用mystar来认证,但是不会重连。。 我自已写了个shell script来实现断线后重连。。。

华农现在的校园网用锐捷认证,windows下的认证程序还行。linux下的客户端垃圾得不得了啊。。我用苹果笔记本PowerBookG3(fireware)。锐捷没有苹果下的认证客户端,于是我上不了网了,很是郁闷。。。

我装了gentoo。最初尝试用qemu的user-mode来虚拟x86的指令集,再用xrgsu(锐捷linux版认证程序)提供运行所需的libs。最终xrgsu可以运行。但是找不到网卡。后面我就放弃了。

拉了一个月ADSL,在一次偶然的机会我发现了mystar。mystar是用libnet+libpcap写的,关键的代码不到200行(libnet和libpcap是平台无关的分组构造发送、分组截获C函数库)mystar是网上一个叫netxray的人写的。 下面是源码http://bbs.whnet.edu.cn/upload/mystarV0.1-src.zip,解压密码是netxray 解压后:

cd mystarV0.1 
make

编译。

#修改我的ID跟password。
vim mystar.conf 

使用./mystar运行,并且认证成功!

随后我发现一个问题,就是不会自动重连,老是会断线。在mystar.conf里面有一段

#enable intelligent reconnect?
# 1 means enable, and 0 means disable

intelligentReconnect=1

我将其设置为1也不行。

这样每次过几分钟我就要^C,再./mystar,很不爽。。于是我决定写个script来实现自动重连。

一开始我采用一个笨方法。写一个循环让它过三分钟就kill mystar,再重新运行。 如下:

#!/bin/bash
cd ~/mystarV0.1
while :
do
    ./mystar &
    sleep 180
    killall mystar
done

后面我改进了这个脚本。代码如下:

#!/bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin
cd ~/mystarV0.1
./mystar &
while :
do
    ping -c 5 -W 3 219.222.66.254 &>/dev/null
    if [ $? -ne 0 ] ; then
        kill -9 `pidof mystar`
        ./mystar &
    fi
    sleep 10
done

每10秒钟ping一次华农的网关。如果不通过,证明已经断线。将mystar kill掉,并重新运行。

这样子就可以了。。 只要开机运行一个这个script就行。当然也可以用rc-update将其加入到系统运行级别。现在上网根本就没感觉到认证的存在。。 哈哈。。。