最近干的无聊事儿.
花了几个小时才把209上的FreeRadius + PopTop + PPPD VPN用户验证做好.
因为MySQL是编译安装的缘故, 所以相关lib和include一直没有链接上, rlm_sql_mysql根本就没有编译.
调试了半天发现验证无法进入sql{}, 最后仔细检查了configure的输出才发现. -____-#
装pptpd的时候把原来apt-get的整套pppd, pptpd都卸载了, 结果pptpd的logwtmp.so不支持2.4.4的pppd;
最后又发现不知道什么时候往radgroupreply里加了条Account-Type := Local的值, 导致验证最后会出错.
这是其一.
其二是继续在FreeRadius的rlm_sql模块上, 自己写了一个做VPN流量控制的功能.
可以通过username和其所属的group做特定限制的流量认证, 超过流量则返回Reject响应.
好久不写C代码了, 在指针上出了一堆莫名其妙的错误, 最后终于是当复习了一次C语言, 汗 -____-#
其实代码很短, 也就几十行, 我也居然就花了几个小时来调试该死的各种指针的错误…
太菜了. 不过最后的效果还不错.
其三是基于Sonic大神的VPN管理前台修改了下, 自己又加了些查看VPN使用记录和流量的功能,
提供了一个相对功能完善的用户前台.
虽然觉得自己很囧, 写个C代码写成这个破样儿, 不过真正弄完还是觉得不错 -____-#.
未来的考虑是:
1. 修改pppd的代码, 让其可以在线判断流量限制, 从而实现超过限制则断网. (好狠毒 -__-#)
2. 考虑从sql模块中剥离出流量限制的代码, 做一个新的模块.
3. 改天把笔记补上来.
Comments (6) ·· Tags: freeradius·Linux·pppd·pptpd·vpn