FreeRadius2可以和MySQL進行集成,集成的內容包括創建符合要求的數據庫和表結構,為MySQL進行的相關配置,基于數據庫安裝Web管理程序(如daloradius,ARA等),大部分內容可以參見
0. 環境
FreeRadius2?/ MySQL 5 /CentOS 5.5(VirtualBox)
1. 創建數據庫
mysql -u root -p
CREATE DATABASE radius;
GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "radpass";
exit
上述命令創建了一個名為radius的數據庫,并且創建了一個名為radius@localhost,密碼為radpass的數據庫用戶,并賦予相應權限。
2. MySQL中表結構的定義
針對FreeRadius2,數據表的設計和結構定義在下面的文件中:
/etc/raddb/sql/mysql/schema.sql 主數據庫定義,7個表,包括
radcheck 用戶檢查信息表
radreply 用戶回復信息表
radgroupcheck?用戶組檢查信息表
radgroupreply?用戶組檢查信息表
radusergroup 用戶和組關系表
radacct 計費情況表
radpostauth 認證后處理信息,可以包括認證請求成功和拒絕的記錄。
/etc/raddb/sql/mysql/nas.sql 網絡設備定義,只有一個表
nas 網絡設備表
下面的表用于一些擴展功能,可以按需導入。
ippool.sql ?ip池
wimax.sql wimax設備支持
cui.sql cui?支持
3. 導入和建立表結構
mysql -u root -p radius < /etc/raddb/sql/mysql/schema.sql
mysql -u root -p radius < /etc/raddb/sql/mysql/nas.sql上述命令執行schema.sql和nas.sql的sql語句,建立相應的數據庫結構。4.FreeRadius2配置,重要!!- radius主配置文件包括sql部分: /etc/raddb/radiusd.conf$INCLUDE sql.conf
否則會出現錯誤:
Failed to load module "sql".
同時還會影響freeradius其他模塊的安裝,出現錯誤:
E: Sub-process /usr/bin/dpkg returned an error code (1)
- 數據庫設置 /etc/raddb/sql.conf,和數據庫定義相符(數據庫服務器、用戶密碼、表名稱等等):database = "mysql"
login = "radius"
password = "radpass"
- 數據庫功能性定義文件:/etc/raddb/sites-available/default實現相關模塊對數據庫的支持
authorize(認證),accounting(審計),session(會話,用于監測同時連接),post_auth(記錄) 子段加入sql關鍵字,如:
authorize {
preprocess
chap
mschap
suffix
eap
sql ? ? ?? pap
}--配置數據庫記錄所有(包括拒絕reject)認證請求
默認情況下,SQL模塊僅記錄認證成功的請求(可能是基于防止數據庫快速增加和ddos攻擊的考慮),如果我們基于統計的考慮需要開啟這個功能的話,非常簡單,還是在?/etc/raddb/sites-available/default ?中的 post_auth區段中,找到或增加Post_Auth_Type REJECT 子類型,增加sql 關鍵字就可以了,它的原理是,在認證后,如果失敗,就進入Post-Auth-Type REJECT子類型,如果定義了sql,系統會調用 /sql/mysql/dialup.conf 文件中的postauth_query= 定義的sql語句進行處理。
post-auth {
....
sql
....
Post-Auth-Type REJECT {
# Login failed: log to SQL database.
sql
}
}
5. 測試
添加測試用帳號:
mysql -u root -p
use radius
insert into radcheck (username,attribute,value,op) values ('userdbtest','Cleartext-Password','password123',':=')
使用測試帳號進行測試:
啟動服務器或者使用調試模式:
service radiusd ?restart
測試客戶端:
radtest userdb password123 localhost 10 testing123