小米路由mini启用mentohust连接dr.校园网(附掉线解决方案)

来源:互联网 发布:win10需要优化软件吗 编辑:程序博客网 时间:2024/05/21 16:59

前言:本人所在学校(仲恺)使用的校园网是通过Dr客户端认证上网的,经过测试,也可以使用windows的mentohust进行登陆,在通过web认证实现上网。

  Dr客户端正常工作时会进制电脑释放wifi共享网络(有同学使用破解补丁来解决),而mentohust+web认证可以释放wifi,不过不能同时连接两台电脑,否则会被禁网4个小时,估计这是服务器通过抓包分析来捕捉的,所以我们最好不要在一个wifi内同时连接两台PC机。

  上面两个办法释放wifi都需要启动电脑——有时候难免会觉得:电脑都开了,要wifi何用?在校不少学生使用智能路由完成mentohust+web认证,这次我在这里就介绍小米路由mini在这个场景上的应用,还有分析其中遇到的问题。

  • 开启小米路由mini的ROOT权限。这个我在这里就不详细介绍了,先移步小米论坛http://www.miui.com/thread-1995629-1-1.html
  • 使用WinSCP把已经编译成可行文件的mentohust写入/etc中。提醒一下:小米路由mini和小米路由器是不一样的,小米路由mini的权限并没有全开(系统内部限制),有很多文件夹都不能写入文件。大家可以使用命令查看一下:
    root位置被禁止写入所以我们的一些文件只能写入其它目录,按照一些贴子的教程,我们可以把mentohust文件写在/etc中。
  • 然后我们可以先测试一下mentohust的运作
root# chmod a+x /etc/mentohust #提供执行权限root# /etc/mentohust -u2012XXXXXX@ZHKU1.GZ -p123XXX -neth0.2#简单填写账号密码  
  • 假如认证成功,mentohust会持续运作,不断发送心跳包去保持在线信息。(我的大学比较奇怪,软件输出显示程序会经常断开又重连,这也是我下文发生断网的原因之一)
  • 我的小米路由mini发出wifi,电脑连上,在电脑端可以使用web认证了。这里写图片描述
  • 这里我们已经完成了上网的认证,我们可以上网了,这时候发现不用网线跟着电脑就可以上网的感觉会特别爽。然后我们继续,让小米路由mini自启mentohust,然后自动在内部完成认证。也就是,你一旦给小米路由mini通电,片刻后就可以通过wifi联网(这样的wifi才有意义)。
  • 我们可以先通过ssh来到/etc目录,找到rc.local文件——对linux有所了解的同学知道:rc.local是linux自启程序的文件之一,linux会启动时自动执行这个文件。我们使用vim追加一下里面的内容:
chmod a+x /etc/mentohust/etc/mentohust -u2012XXXXXX@ZHKU1.GZ -p123XXX -b2 -l0 -r1 -t99 -w
  • 关于mentohust代码后面的参数我就不啰嗦了,大家可以百度或谷歌一下,提其中比较重要的几个:-b2表示程序后台执行,-l0表示可以允许无限次失败重连(否则mentohust默认8次失败就结束连接了,上文说了,mentohust会经常断开连接的,所以这里要设成无限),-r1表示断开后重连等待时间(默认是等待15s,虽然重连成功后可以继续上网,但中途等待的15s是处于断网状态的,所以经常遇到网站打开极慢,很有可能是因为路由器处于等待重连阶段),改成-r1使重连速度变快,正常情况几乎没有卡断的感觉,-w是把上面的参数存储到软件设置的意思。
  • 再此基础上,我们还要追加一条重要的命令:
sleep 10s   #留下10s使mentohust先成功连接。curl -d "DDDDD=201210214XXX@ZHKU1.GZ&upass=1214XXXX&0MKKey=%B5%C7%C2%BC+Login&v6ip=" http://58.xx.xxx.xxx/##XXX指的是根据自己的实际情况填写信息,在这里保密了我的帐号密码,最后的本校的认证IP地址也顺便保密了,本校需要的朋友可以在发邮件给我945766863@qq.com
  • 有了这条命令,我们就可以让小米路由自动认证了。也就是小米路由mini通电,再过片刻就可以上网了。

接下来,我们就需要解决一个相当头疼的问题。mentohust和web认证的掉线问题

里面断网的原因我是这样猜测的:mentohust是出于一个间接性断开然后又重连的状态,在这个情况下,一旦超过某个时间都连接不上,web认证就会失效了,这时候假如不手动设置web认证,我们就没办法通过路由连接外网了。

恰好最近的linux课程让我发现,使用shell脚本可以实现网络状态监测和重连。为此,我在/etc上重新编写一个mentohust.sh的shell脚本,引用几条简单的命令就搞定了。
这里写图片描述
这是一个普通的shell脚本,程序十分容易看懂。比较关键的是
netstat=$( ping -c 1 www.baidu.com )
这个代码可以返回ping命令的信息,我在这里采用-c 1是为了使检查速度变快。假如ping成功,netstat上会保存返回信息,假如ping失败,netstat将会被重写为空。那么我们利用这个特性,可以编写下面的条件:
if [ -z $netstat ]
在这个条件下,我们就可以检查网络的情况了,断网的时候执行下面一系列重连(重启mentohust和web认证)。然后每60s检查一次。假如断开超过20次,我们就会视为线路问题,停止循环,跳出脚本。

脚本在路由器中运行了好几天,没发现断网情况,路由器其余的程序运行也正常。

整个路由器的配置过程就是这样了,这是我在学校遇到的情况和解决的方法,这个是根据大环境不同而不同的,不一定适合每一个同学。把它写出来纯属分享,希望可以作为大家参考的博文。有关这篇博文的问题可以留言交流,或者通过邮箱与我联系945766863@qq.com ,上面有说的不对的也请留言,我会及时更正的。

0 0
原创粉丝点击