|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
经过N久的时间分析,以及ksw520的帮助下,终于做成了安腾radius支持routeros的补丁。
这补丁已经做好两年了,当初费了很多心血才搞好,今天又在电脑里找了出来,分享给大家,不然这个好东东浪费了太可惜了。
通过对本补丁源码稍加修改,就可以支持任意的bras,比如ma5200,等等。。。。
因为RouterOS使用的是私有的radius属性,一般标准的radius都不能很好的配合routeros,通过本补丁radius 可以下发带宽、地址池给routeROS。
更新记录:
5月31日 1.2版 添加支持ms-chapv1和ms-chapv2认证。
本补丁:
针对安腾版本:gbms pgsql 3.17 测试版
routeros版本:任意版本。
使用方法:
1、安装配置好安腾和routeros,确保二者通信认证成功。
2、先用命令终止程序。
3、将下载到的补丁文件覆盖同名的radiusd文件。
4、重新启动radius。输入命令
5、再pppoe拨号到routeros,可以看到routeros的简单队列有限速了。
重要提示:
1、如果打补丁后拨号时连接不成功或者提示无获取IP。那是因为radius下发的地址池的名称是1至9。不能是字母。所以要在routeros中把pool名设定为数字。即1-9之间的值。最好添加名字是2和4的地址池。
2、在radius的接入控制模板里一定要输入上行和下行的值,以及pool的值,否则程序可能会出错。
3、本补丁只为测试之用,无任何限制。
补丁程序限速关键部分源码:- /*查找限速属性 */
- up = 0;
- for (i = 0; i < rt; i++)
- {
- if (memcmp(buf + i, key, 2) == 0)
- {
- up = ntohl(*(int *)(buf + i + 2));
- down = ntohl(*(int *)(buf + i + 2 + 6));
- memset(tmp1, 0, 50);
- sprintf(tmp1, "%dk/%dk %dk/%dk %dk/%dk 10/10", up / 1000, down / 1000, up * 3 / 2 / 1000, down * 3 / 2 / 1000, up * 2 / 3 / 1000, down * 2 / 3 / 1000);
- ros[1] = strlen(tmp1) + 8;
- ros[7] = strlen(tmp1) + 2;
- memcpy(buf + rt, ros, 8);
- memcpy(buf + rt + 8, tmp1, strlen(tmp1));
- pklen = rt + 8 + strlen(tmp1);
- break;
- }
复制代码 设置地址池部分源码:- /*查找地址池*/
- for (i = 0; i < pklen; i++)
- {
- if (memcmp(buf + i, key1, 4) == 0)
- {
- pool = ntohl(*(int *)(buf + i + 2));
- memset(tmp2, 0, 20);
- memset(tmp2, 0x58, 1);
- memset(tmp2 + 1, 0x58, 1);
- sprintf(tmp2 + 2, "%d", pool + 1);
- tmp2[1] = strlen(tmp2);
- memcpy(buf + pklen, tmp2, strlen(tmp2));
- pklen = pklen + strlen(tmp2) ;
- break;
- }
- }}
复制代码 下图为打补丁后的安腾的抓包图。
radiusd.rar
(61.57 KB, 下载次数: 108, 售价: 20 铜板)
|
评分
-
查看全部评分
|