配置freeradius各種限制


設置用戶過期時間

例如、限制名為sxy的用戶過期日期為2006年7月6號14時55分22秒、只需要寫在radcheck表就行了

INSERT INTO  `radius`.`radcheck` (
`id` ,
`username` ,
`attribute` ,
`op` ,
`value`
)
VALUES (
NULL , 'sxy', 'Expiration', ':=', '06 Jun 2006 14:55:22'
);

也可以限制組、把sxy等用戶添加在相應的組下面、然后在radgroupcheck、插入這些數據、就實現整個組的過期時間了

 

設置每月的流量

如設置一個用戶組limit下、每個用戶的流量為1GB

編輯counter.conf文件

vim /etc/freeradius/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
# DIV 1048576(equal 1024 * 1024),means set trafficcounter unit to MB
query = "SELECT SUM(acctinputoctets + acctoutputoctets) DIV 1048576 FROM radacct WHERE UserName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime) > '%b'"
}

counter-name、暫時沒發現有什么用

check-name、這個屬性非常重要、是到時加入sql的字段屬性

reply-name、驗證的類型、到時在dictionary定義、后面會講

sqlmod-inst和key就不說了、基本不會變化

reset意思是每月重置一次設置、也可以選never、dayly等等

接下來就是一句SQL的查詢語句、作用是查詢這個月的總流量、SUM語句的作用是把流進流出的總流量加起來、然后再使用DIV除以1048576、因為流量單位是以字節為單位、非常的不方便、所以轉換成以MB為單位1024字節等於1KB、1024KB等於1MB、所以1048576就這么來的、后面的WHERE是條件語句、%k代表key、key的值為User-Name、所以User-Name就是指代用戶登錄時的用戶名、后來的UNIX_TIMESTAMP為從UNIX的某段時間至今的秒數、好像是從1976年吧、具體不記得、總之這個是一個定值、將連接的開始時間轉換成總秒數和重置時間進行比較、%b就是從reset后的日期轉化成UNIX_TIMESTAMP、這兩個作比較、其實就是把最近一次重置時間之前的流量都忽略不計、只計算重置之后的總流量

 

然后在radiusd.conf打開讀取counter.conf的配置

vim /etc/freeradius/radiusd.conf

取消掉counter.conf前的#來讀取設置

#$INCLUDE sql/mysql/counter.conf

 

然后再打開文件default

vim /etc/freeradius/sites-enabled/default

在authorize塊中加上monthlytrafficcounter、其實就是剛剛在counter.conf里面添加的那段函數名

authorize {

monthlytrafficcounter
}

然后再在dictionary加上以上字段

vim /etc/freeradius/dictionary

然后在dictionary加上以下內容

ATTRIBUTE Max-Monthly-Traffic 3003 integer
ATTRIBUTE Monthly-Traffic-Limit 3004 integer

這里就是前面counter.conf的reply-name所用到的字詞、前面的屬性值是固定的、接着就是在counter.conf那里的、接下來的3003和3004則是一個類似於屬性ID值的冬冬、有兩個條件、范圍是3000到4000、而且不允許重復!再下來就是屬性值的類型了、

 

現在接着可以在SQL里定義相應的屬性了、比如莪想限制一個用戶組每月使用的流量是1G、便在radgroupcheck里定義以下內容

INSERT INTO radgroupcheck(groupname, attribute, op,value) values('limitgp','Max-Monthly-Traffic',':=','1024');

這句就是在組為limitgp的用戶、限制每個月的流量為1024MB的方法、因為之前已經在counter.conf設置了單位為MB、所以這里直接寫MB就可以了、不需要再使用字節了




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM