归档文章 (2011-2017)

date
2011/08/05
FreeRADIUS 是实现 RADIUS 协议的开源软件,而 RADIUS 主要用来实现认证(Authentication)、授权(Authorization)以及计费(Accounting)功能。
首先请确认你已经搭建好pptpd,并可以正常使用。安装方法见 Debian/Ubuntu PPTP VPN 安装笔记

一、FreeRADIUS 服务端安装

1.1、下载、编译、安装

wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.12.tar.gz tar zxf freeradius-server-2.1.12.tar.gz cd freeradius-server-2.1.12 ./configure --prefix=/usr/local/radius make && make install
echo "/usr/local/radius/lib" >> /etc/ld.so.conf ldconfig

1.2、基本文件的本地测试(选做)

测试是否安装成功,如果不需要与mysql集成,那么就已安装完成。
查找 steve Cleartext (76-84行), 取消注释 vim /usr/local/radius/etc/raddb/users # 大写X,意思是以debug模式运行。 /usr/local/radius/sbin/radiusd -X #新开一个窗口执行,看到 "Access-Accept packet" 表示成功了,"Access-Reject" 表示失败了。 /usr/local/radius/bin/radtest steve testing localhost 0 testing123

二、FreeRadius MySQL 模块配置

2.1、启用MySQL模块支持

# 查找"sql.conf”(700行),去掉#号 vim /usr/local/radius/etc/raddb/radiusd.conf

2.2、创建 radius 数据库及表

# 123456是你mysql的root密码 mysqladmin -uroot -p123456 create radius;
#设置radius帐号的密码 cd /usr/local/radius/etc/raddb/sql/mysql sed -i 's/radpass/123456/g' admin.sql sed -i 's/radpass/123456/g' /usr/local/radius/etc/raddb/sql.conf
mysql -uroot -p123456 < admin.sql mysql -uroot -p123456 radius < cui.sql mysql -uroot -p123456 radius < ippool.sql mysql -uroot -p123456 radius < nas.sql mysql -uroot -p123456 radius < schema.sql mysql -uroot -p123456 radius < wimax.sql

2.3、打开从数据库查询nas支持

默认从 “/usr/local/etc/raddb/clients.conf” 文件读取,开启后可从数据库nas表读取。
sed -i 's/\#readclients/readclients/g' /usr/local/radius/etc/raddb/sql.conf

2.4、打开在线人数查询支持

# 查找simul_count_query将279-282行注释去掉 vim /usr/local/radius/etc/raddb/sql/mysql/dialup.conf
### 2.5、修改sites-enabled目录配置文件
vim /usr/local/radius/etc/raddb/sites-enabled/default
找到authorize {}模块,注释掉files(170行),去掉sql前的#号(177行) 找到accounting {}模块,注释掉radutmp(396行),注释掉去掉sql前面的#号(406行)。 找到session {}模块,注释掉radutmp(450行),去掉sql前面的#号(454行)。 找到post-auth {}模块,去掉sql前的#号(475行),去掉sql前的#号(563行)。
vim /usr/local/radius/etc/raddb/sites-enabled/inner-tunnel
找到authorize {}模块,注释掉files(124行),去掉sql前的#号(131行)。 找到session {}模块,注释掉radutmp(251行),去掉sql前面的#号(255行)。 找到post-auth {}模块,去掉sql前的#号(277行),去掉sql前的#号(301行)。

三、FreeRADIUS 客户端安装与配置

3.1、编译与安装

wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-client-1.1.6.tar.gz tar -zxf freeradius-client-1.1.6.tar.gz cd freeradius-client-1.1.6 ./configure --prefix=/usr/local/radius make && make install

3.2、设置通信密码

cat >>/usr/local/radius/etc/radiusclient/servers<<EOF localhost testing123 EOF
其中localhost可以写成服务器IP地址,testing123是认证服务器的连接密码。 注:如果使用的是IP地址,记得同时修改下面设置。
sed -i 's/localhost/192.168.8.129/g' /usr/local/radius/etc/radiusclient/radiusclient.conf

3.3、增加字典

这一步很重要!否则windows客户端无法连接服务器。
wget -c http://small-script.googlecode.com/files/dictionary.microsoft mv ./dictionary.microsoft /usr/local/radius/etc/radiusclient/
cat >>/usr/local/radius/etc/radiusclient/dictionary<<EOF INCLUDE /usr/local/radius/etc/radiusclient/dictionary.sip INCLUDE /usr/local/radius/etc/radiusclient/dictionary.ascend INCLUDE /usr/local/radius/etc/radiusclient/dictionary.merit INCLUDE /usr/local/radius/etc/radiusclient/dictionary.compat INCLUDE /usr/local/radius/etc/radiusclient/dictionary.microsoft EOF

3.4、PPTP启用freeradius插件

这一步网上一些教程没提,但很重要,否则会报错!
#sed -i 's/logwtmp/\#logwtmp/g' /etc/pptpd.conf sed -i 's/radius_deadtime/\#radius_deadtime/g' /usr/local/radius/etc/radiusclient/radiusclient.conf sed -i 's/bindaddr/\#bindaddr/g' /usr/local/radius/etc/radiusclient/radiusclient.conf
注:64位系统插件路径是 “/usr/lib64/pppd/2.4.5/radius.so”
cat >>/etc/ppp/options.pptpd<<EOF plugin /usr/lib64/pppd/2.4.5/radius.so radius-config-file /usr/local/radius/etc/radiusclient/radiusclient.conf EOF

3.5、L2TP启用freeradius插件

L2TP 的道理也一样,你首先安装配置好L2TP/IPSec,并保证能正常使用。 Debian/Ubuntu L2TP/IPSec VPN 安装笔记
注:64位系统插件路径是 /usr/lib64/pppd/2.4.5/radius.so
cat >>/etc/ppp/options.xl2tpd<<EOF plugin /usr/lib64/pppd/2.4.5/radius.so radius-config-file /usr/local/radius/etc/radiusclient/radiusclient.conf EOF

四、用户权限管理

#连接 MySQL 数据库 mysql -uroot -p123456; # 使用 radius 数据库 USE radius; # 添加用户test,密码test,注意是在radchec表 INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('test','Cleartext-Password',':=','test'); # 将用户test加入VIP1用户组 INSERT INTO radusergroup (username,groupname) VALUES ('test','VIP1'); # 限制同时登陆人数,注意是在radgroupcheck表 INSERT INTO radgroupcheck (groupname,attribute,op,value) VALUES ('VIP1','Simultaneous-Use',':=','3'); # 添加NAS INSERT INTO radius.nas VALUES ('1','192.168.8.129','Toky', 'other', NULL ,'linodecn.net',NULL ,NULL ,'RADIUS Client'); # 其他(选做) INSERT INTO radgroupreply (groupname,attribute,op,value) VALUES ('VIP1','Auth-Type',':=','Local'); INSERT INTO radgroupreply (groupname,attribute,op,value) VALUES ('VIP1','Service-Type',':=','Framed-User'); INSERT INTO radgroupreply (groupname,attribute,op,value) VALUES ('VIP1','Framed-Protocol',':=','PPP'); INSERT INTO radgroupreply (groupname,attribute,op,value) VALUES ('VIP1','Framed-MTU',':=','1500'); INSERT INTO radgroupreply (groupname,attribute,op,value) VALUES ('VIP1','Framed-Compression',':=','Van-Jacobson-TCP-IP');

五、自动启动

#cp /usr/local/radius/sbin/rc.radiusd /etc/init.d/radiusd #/usr/local/radius/sbin/radiusd -X wget https://wangyan.org/download/conf/init.radiusd -P /etc/init.d/radiusd chmod 755 /etc/init.d/radiusd chkconfig radiusd on /etc/init.d/radiusd start
更新历史:
2011.08.23 … 2012.02.11 更改安装路径便于卸载、部分错误修正。
If you have any questions, please contact me.