按照后面的那篇文章的步骤做就行了,由于我使用的是xampp作为mysql server和apache server,php5相关包就不需要安装了,但是需要如下设置:
使用的xampp版本是xampp-linux-x64-5.5.19,需要下载php-db,将其中的usr/share/php/{DB.php,DB}目录拷贝至lampp/lib/php目录
ln -sv /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock
否则freeradius服务启动报错,无法连接mysql server配置lampp/apache2/conf/httpd.conf,添加
<VirtualHost *:80> DocumentRoot "/opt/www/daloradius" ServerName "your.server.domain" ServerAlias "your.server.domain" <Directory "/opt/www/daloradius"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted </Directory> ErrorLog "logs/daloradius-error_log" CustomLog "logs/daloradius-access_log" common </VirtualHost>
为了能显示Reports/Logs下的log内容
修改/opt/www/daloradius/daloradius.conf.php$configValues['CONFIG_LOG_FILE'] = '/opt/lampp/logs/daloradius-access_log';
修改/etc/default/freeradius,添加
if [ ! -e /var/run/mysqld/mysqld.sock ]; then mkdir -p /var/run/mysqld ln -sv /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock fi if [ ! -e /var/log/freeradius ]; then mkdir -p /var/log/freeradius touch /var/log/freeradius/radius.log chown -R freerad.freerad /var/log/freeradius fi if [ -e /var/log/freeradius/radius.log ]; then chmod 644 /var/log/freeradius/radius.log fi
做完这些 基本就可以了,从网页打开daloradius服务,创建完用户,然后用VPN连接
如果有问题,可以 freeradius -X 查看更多出错信息
配置流量控制
在/etc/freeradius/dictionary中添加:
ATTRIBUTE Max-Monthly-Traffic 3003 integer
ATTRIBUTE Monthly-Traffic-Limit 3004 integer在/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 query = "SELECT SUM(acctinputoctets + acctoutputoctets) FROM radacct WHERE UserName='%{Ek}' AND UNIX_TIMESTAMP(AcctStartTime) > '%b'" }
在/etc/freeradius/sites-enabled/default的authorize里添加monthlytrafficcounter
authorize { ... monthlytrafficcounter }
在数据库中插入以下数据:
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Auth-Type',':=','Local'); INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Service-Type',':=','Framed-User'); INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Address',':=','255.255.255.255'); INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Netmask',':=','255.255.255.0'); INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','600'); INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','5368709120'); INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');
另外参考:
《CentOS 6安装lnmp+pptp+freeradius+daloradius》 下载
《CentOS下给pptp限速》 下载
【zz】http://blog.atime.me/note/freeradius_daloradius_install_config_on_ubuntu.html
总结我在Ubuntu上安装FreeRadius和DaloRadius的步骤及遇到的问题,以供日后查询,系统为Ubuntu 12.04.3 X86_64,本文的FreeRadius配置使用MySQL作为后端存储相关数据。
FreeRadius可以为pptp和l2tp提供验证和统计等功能,DaloRadius为FreeRadius提供一个网页界面。阅读本文前确保已经正确安装了pptpd或xl2tpd服务器。相关安装配置教程可参考使用pptpd搭建VPN和在Ubuntu12.04上安装l2tp/ipsec VPN服务器。
开始安装前建议先通读一下wikipedia:RADIUS和radius介绍,了解一些radius的概念。
安装必要的软件
sudo apt-get install freeradius freeradius-mysql radiusclient1 php5 php5-mysql php5-gd php5-cgi php5-fpm php-pear php-db mysql-server-5.5
配置FreeRadius
FreeRadius的配置文件位于
/etc/freeradius
目录。
添加client
修改
/etc/freeradius/clients.conf
,添加如下内容,注意将IP_ADDRESS
和SHARED_SECRET
换为你的服务器IP和你的共享密钥。
client IP_ADDRESS {
ipaddr = IP_ADDRESS
secret = SHARED_SECRET
require_message_authenticator = no
}
启用MySQL支持
/etc/freeradius/radiusd.conf
取消如下一行的注释来包含FreeRadius的sql配置文件
/etc/freeradius/sql.conf
。
$INCLUDE sql.conf
/etc/freeradius/sql.conf
修改
/etc/freeradius/sql.conf
,设置MySQL数据库的端口,radius数据库的用户名密码等内容。取消如下一行的注释,使FreeRadius从数据库读取客户端信息。
readclients = yes
/etc/freeradius/sql/mysql
文件夹下的众多sql脚本文件用于构建FreeRadius的数据库,首先在admin.sql里修改数据库名称,用户名和密码等内容,这些内容必须和/etc/freeradius/sql.conf
的设置相同。
/etc/freeradius/sql/mysql/dialup.conf
修改
/etc/freeradius/sql/mysql/dialup.conf
,取消如下几行的注释来提供在线人数统计功能。
simul_verify_query = “SELECT radacctid, acctsessionid, username, \
nasipaddress, nasportid, framedipaddress, \
callingstationid, framedprotocol \
FROM ${acct_table1} \
WHERE username = ‘%{SQL-User-Name}’ \
AND acctstoptime IS NULL”
创建FreeRadius数据库radius
登录mysql
cd /etc/freeradius/sql/mysql
mysql -u root -p
输入以下命令
create database radius;
source admin.sql;
source cui.sql;
source ippool.sql;
source nas.sql;
source schema.sql;
source wimax.sql;
/etc/freeradius/sites-enabled
对
/etc/freeradius/sites-enabled/default
做如下修改
找到authorize {}模块,注释掉files,去掉sql前的#号
找到accounting {}模块,注释掉radutmp,注释掉去掉sql前面的#号。
找到session {}模块,注释掉radutmp,去掉sql前面的#号。
找到post-auth {}模块,去掉sql前的#号,去掉sql前的#号(Post-Auth-Type REJECT内)。
对/etc/freeradius/sites-enabled/inner-tunnel
做如下修改
找到authorize {}模块,注释掉files,去掉sql前的#号。
找到session {}模块,注释掉radutmp,去掉sql前面的#号。
找到post-auth {}模块,去掉sql前的#号,去掉sql前的#号(Post-Auth-Type REJECT内)。
配置RadiusClient
RadiusClient用于将pptpd和xl2tpd的radius插件的验证请求发送给FreeRadius服务器,充当nas的角色,其配置文件位于
/etc/radiusclient
内。
添加字典
RadiusClient的字典主要负责参数的映射,默认配置没有包含dictionary.microsoft,因此无法处理使用mschapv2加密的请求头。下载dictionary.microsoft并包含到主dictonary文件中。
cd /etc/radiusclient
sudo wget http://blog.atime.me/static/resource/dictionary.microsoft
在
/etc/radiusclient/dictionary
文件的最后添加如下一行以包含dictionary.microsoft
INCLUDE /etc/radiusclient/dictionary.microsoft
为解决FreeRadius的
radacct
表不更新的问题,需要在/etc/radiusclient/dictionary
中加入如下一行,以保证RadiusClient能够识别Acct-Interim-Interval。
ATTRIBUTE Acct-Interim-Interval 85 integer
另外,记得在daloRadius里为用户添加
Acct-Interim-Interval
reply attribute(对应MySQL的radgroupreply表)。
设置共享密钥
修改’/etc/radiusclient/servers’文件,添加如下一行,注意SHARED_SECRET必须和你在
/etc/freeradius/clients.conf
里设置的共享密钥相同。
localhost SHARED_SECRET
配置VPN服务器
为pptpd和xl2tpd启用radius插件,首先查找插件的位置。
sudo updatedb
locate radius.so
插件通常位于
/usr/lib/pppd/2.4.5/radius.so
。
配置pptpd
查看
/etc/pptpd.conf
,获取pptpd的ppp配置文件位置
option /etc/ppp/pptpd-options
修改
/etc/ppp/pptpd-options
文件,在最后添加如下两行,注意修改插件的具体位置。
plugin /usr/lib/pppd/2.4.5/radius.so
radius-config-file /etc/radiusclient/radiusclient.conf
重启pptpd
sudo service pptpd restart
配置xl2tpd
查看
/etc/xl2tpd/xl2tpd.conf
,获取xl2tpd的ppp配置文件位置
pppoptfile = /etc/ppp/xl2tpd-options
修改
/etc/ppp/xl2tpd-options
,在最后添加如下两行,注意修改插件的具体位置。
plugin /usr/lib/pppd/2.4.5/radius.so
radius-config-file /etc/radiusclient/radiusclient.conf
重启xl2tpd
sudo service xl2tpd restart
配置DaloRadius
下载并配置daloRadius
daloRadius的项目托管在sourceforge上,下载并解压。
# 下载并解压
cd /tmp
sudo wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz
cd /var/www
sudo tar -xvf /tmp/daloradius-0.9-9.tar.gz
sudo mv daloradius-0.0.9 daloradius
修改权限
sudo chown -R www-data:www-data daloradius
sudo chmod 644 daloradius/library/daloradius.conf.php
修改/var/www/daloradius/library/daloradius.conf.php
,设置关于FreeRadius数据库的各个变量,注意和/etc/freeradius/sql.conf
的配置相同。
$configValues[‘FREERADIUS_VERSION’] = ‘2’;
$configValues[‘CONFIG_DB_ENGINE’] = ‘mysql’;
$configValues[‘CONFIG_DB_HOST’] = ‘localhost’;
$configValues[‘CONFIG_DB_PORT’] = ‘3306’;
$configValues[‘CONFIG_DB_USER’] = ‘radius’;
$configValues[‘CONFIG_DB_PASS’] = ‘raduser’;
其他需要修改的变量,其中
SHARED_SECRET
要和/etc/freeradius/clients.conf
设置的共享密钥相同。
$configValues[‘CONFIG_PATH_DALO_VARIABLE_DATA’] = ‘/var/www/daloradius/var’;
$configValues[‘CONFIG_MAINT_TEST_USER_RADIUSSECRET’] = ‘SHARED_SECRET’;
为daloRadius创建MySQL数据表
由于之前已经为FreeRadius创建了相应的表结构,这里只需要为daloRadius创建表即可
cd /var/www/daloradius/contrib/db/
mysql -u root -p radius < mysql-daloradius.sql
由于daloRadius向FreeRadius的数据库
radius
添加了若干新表,我们需要为FreeRadius的数据库用户添加这几张表的访问权限。 FreeRadius的数据库名称和用户可查看/etc/freeradius/sql.conf
,这里使用默认数据库radius和默认用户radius。
登录MySQL数据库
mysql -u root -p
输入如下命令
revoke all privileges on . from ‘radius’@’localhost’;
grant all privileges on radius.* to ‘radius’@’localhost’;
flush privileges;
exit
配置nginx
首先在dns服务商添加一条新的A记录
daloradius
,然后添加新的nginx配置文件/etc/nginx/sites-available/daloradius.conf
,确定已正确安装并启动了php5-fpm。
注意将server_name中的your.domain
改为你自己的域名。
server {
listen 80;
server_name daloradius.your.domain;
root /home/wilbur/www/daloradius;
access_log /var/log/nginx/daloradius.access.log main;
error_log /var/log/nginx/daloradius.error.log warn;
location / {
index index.php;
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
链接到/etc/nginx/sites-enabled/
目录后重启相关服务程序。
cd /etc/nginx/sites-enabled/
sudo ln -s ../sites-available/daloradius.conf .
#sudo service php5-fpm restart
sudo service nginx restart
sudo service freeradius restart
dns更改生效后,访问http://daloradius.your.domain即可配置FreeRadius,默认的用户名是administrator,密码是radius。
daloRadius界面指南
daloRadius的管理账户存储在MySQL的
radius.operators
表中,密码使用明文存储。
Management => Users 管理VPN用户,注意添加新用户时,应选择Cleartext-Password(默认)密码类型
Config => Operators 管理daloRadius的登录账户,包括修改密码和权限设置等
Config => Interface Settings => Enable Password Hiding 设为yes可以将界面上的明文密码改为点号隐藏
排查错误
使用调试模式启动FreeRadius
freeradius -X
使用radtest
radtest可以向freeradius服务器发送请求,不过目前不支持mschapv2加密模式,详情见
man radtest
。
radtest user password localhost 0 shared_secret
异常掉线的用户在daloRadius显示为在线用户
异常掉线的client无法在退出时更新
radius.radacct
表的acctstoptime
,这些client在daloRadius里会被显示为在线用户。使用如下的命令可修复该问题,最好使用cron定期执行该任务。
mysql -uroot -p -e “UPDATE radius.radacct SET acctstoptime = acctstarttime + acctsessiontime WHERE ((UNIX_TIMESTAMP(acctstarttime) + acctsessiontime + 240 - UNIX_TIMESTAMP())<0) AND acctstoptime IS NULL;”
阅读资料
- PPTP/L2TP + FreeRADIUS + MySQL 安装与配置
- 在PPTP VPN服务器上配置FreeRADIUS+daloRADIUS实现用户跟踪管理
- RadiusClient配置
- daloRADIUS Ubuntu help