Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7390328
  • 博文数量: 1755
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16227
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1755)

文章存档

2024年(1)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2011-03-02 15:51:24

现在我用 freeradius2-mysql 管理 PPTP/L2TP/OpenVPN
因为VPS有流量限制,所以就想到用freeradius实现流量控制

我是在 freeradius2-mysql 下配置的,利用的是 这个模块

以限制每个帐号每月流量1Gbyte为例,具体操作如下:

//假设 freeradius2-mysql 已经配置好

  1. 启用 Rlm sqlcounter
    • 首先在 /etc/raddb/radiusd.conf ,去掉下面这一行的注释
      $INCLUDE sql/mysql/conter.conf
  2. 添加流量统计器
    • vim /etc/raddb/sql/mysql/counter.conf
      在末尾添加如下代码
      sqlcounter monthlytrafficcounter {
          counter-name = Monthly-Traffic
          check-name = Max-Monthly-Traffic
          reply-name = Monthly-Traffic-Limit
          sqlmod-inst = sql
          key = User-Name
          reset = monthly
          query = "SELECT (SUM(AcctInputOctets + AcctOutputOctets)) \
          FROM radacct WHERE UserName='%{%k}' \
          AND UNIX_TIMESTAMP(AcctStartTime) > '%b'"
      }
  3. 添加字典
    • vim /etc/raddb/dictionary
      添加下面两行
      ATTRIBUTE Max-Monthly-Traffic 3003 integer
      ATTRIBUTE Monthly-Traffic-Limit 3004 integer
  4. 启用Traffic Counter
    • vim /etc/raddb/sites-enabled/default
      在authorize里添加monthlytrafficcounter(上面添加的流量统计器),像下面这样
      authorize {
          ...
          monthlytrafficcounter
      }
  5. 添加CHECK ATTRIBUTE
    • 在数据库的radcheck(用户规则)里添加如下规则
      Max-Monthly-Traffic := 1073741824
      // 1073741824 bytes=1 Gbyte, 填写时以byte为单位

      这一步建议使用Web管理界面做,也方便以后管理
      个人推荐用ARA (ASN RADIUS admin),也可以用daloRADIUS

  6. 重启一下radiusd,万事大吉~

    另外还要补充的一点是:
    rlm sqlcounter的统计数据是在每次登陆时检查
    因此使用过程中超流量不会强制下线,而是在下一次登陆时被拒绝

Links:

转:https://blog.easisee.com/2010/09/freeradius-traffic-limit/
阅读(3425) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~