Freeradius 配合 vpn 实现用户在线及流量监控

安装环境及VPS供应商:

Centos 6 32位
Digitalocean 512M

实例详情:
IP Address: 128.199.97.173
Username: root
Password: 9e36c9d7f757b1e9

列出IP 及密码。以便于您在下面的教程中替换。

说在前面:

本文分为N个步骤,都是Lop本人一步一步实践过好多次的。尽管需要一丢丢的Linux基础,但是相信如果你跟着这篇博客搭建,应该就没有什么问题的。遇到的任何问题也可以博客留言,我会尽我所能帮大家解答的。

1. 确认主机的hostname为标准FQDN格式

步骤说明:此步骤用以确认hostname是否为可用。否则会对freeradius有影响

hostname -i
输出为你外网IP就不用修改了。否则
修改/etc/sysconfig/network文件

yum install nano

nano /etc/sysconfig/network

HOSTNAME=server.ihot.info

修改/etc/hosts的内容
nano /etc/hosts

111.111.111.111 server.ihot.info server
再用输出一次试试看
hostname -i

2. 安装环境
步骤说明:此步骤是为我们应用程序布置相应的运行环境。包括PHP\MySql,以及phpmyadmin工具的安装。整个过程相当于手动LAMP环境的搭建。

yum install httpd
//安装apache服务
chkconfig –levels 235 httpd on
//将apache加入自启动
/etc/init.d/httpd start
//重启web服务

yum install -y mysql-server mysql-devel mysql-client
//安装mysql
chkconfig –levels 235 mysqld on
//mysql加入自启动
service mysqld restart
//重启mysql服务
/usr/bin/mysqladmin -u root password ‘9e36c9d7f757b1e9’
//设定mysql密码,请将sqlpassword替换成你想设置的密码
yum install -y wget
//安装wget工具

yum install php
/etc/init.d/httpd restart
//安装php并启动
yum search php
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
//安装php相关组件

rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm 32位
//加入phpmyadmin的源
yum install phpmyadmin
//安装phpmyadmin

nano /etc/httpd/conf.d/phpmyadmin.conf
//编辑phpmyadmin的配置文件使得外网可以访问phpmyadmin 使用nano命令编辑 (nano 的使用方法为 crtl+x 保存)
#
# Web application to manage MySQL
#
#
# Order Deny,Allow
# Deny from all
# Allow from 127.0.0.1
#
Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin
//将中间的几行注释掉

nano /usr/share/phpmyadmin/config.inc.php
//编辑phpmyadmin的config文件
/* Authentication type */
$cfg[‘Servers’][$i][‘auth_type’] = ‘http’;
[…]
//将上面此行的cookies改成http,并保存

/etc/init.d/httpd restart
//重启apache服务。重启之后可以通过IP访问你的网站了。http://IP/phpmyadmin 访问phpmyadmin关机界面。用户名root 密码为你刚才设置的mysql密码
//至此环境配置完毕

3. 安装freeradius
步骤说明:安装freeradius

yum install freeradius freeradius-mysql freeradius-utils
//通过yum安装freeradius及相关组建
//安装完后,我们编辑
nano /etc/raddb/users
//在文件开头加上
testing Cleartext-Password := “password”

//然后在ssh里把freeradius开启debug测试模式
//输入以下命令。之后freeradius 则进入调试模式
radiusd -X
//运行radiusd -X 进入调试模式之后SSH端将会显示Ready to process requests.代表进入调试等待阶段。
//新打开一个SSH终端,测试服务器是否连通
radtest testing password 127.0.0.1 0 testing123
//在新开的SSH终端中,如果看到rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=26, length=20 类似字样就说明连接成功了
//测试连接成功后,我们可以关闭旧的终端,并在新的终端中把users里临时加上去的第一行删除。
//至此Freeradius已经安装成功。

4. 配置freeradius
步骤说明:此步骤是为了让freeradius配合我们VPN,所以添加相关的源码组件及内容。

下载ppp源码,因为要用到其中的配置文件

wget https://download.samba.org/pub/ppp/ppp-2.4.5.tar.gz
tar zxvf ppp-2.4.5.tar.gz
cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient
编辑/usr/local/etc/radiusclient/servers
nano /usr/local/etc/radiusclient/servers

加上一组服务器和密钥,本例中为“MyVPN”
localhost MyVPN
编辑/usr/local/etc/radiusclient/dictionary
nano /usr/local/etc/radiusclient/dictionary

将最后一行改为:
INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft
并添加一行
INCLUDE /usr/local/etc/radiusclient/dictionary.merit

编辑/etc/raddb/clients.conf
nano /etc/raddb/clients.conf
把client localhost段下的secret改成刚才指定的密钥。也就是MyVPN

编辑/etc/raddb/radiusd.conf
nano /etc/raddb/radiusd.conf

找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf 去掉前面的#

添加MySQL用户及数据库
mysql -uroot -p
然后输入mysql密码进入mysql编辑模式。
CREATE USER ‘radius’@’localhost’ IDENTIFIED BY ‘9e36c9d7f757b1e9’;
CREATE DATABASE IF NOT EXISTS `radius` ;
GRANT ALL PRIVILEGES ON `radius` . * TO ‘radius’@’localhost’;
quit

编辑/etc/raddb/sql.conf
nano /etc/raddb/sql.conf
配置login(用户名),password(密码),radius_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#

编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行【关掉即为注释掉】:
nano /etc/raddb/sites-enabled/default

authorize段,关掉files,打开sql,也可以把unix关掉
preacct段,关掉files
accounting段,打开sql,也可以把unix关掉
session段,打开sql
post-auth段,打开sql
pre-proxy段,关掉files(这个选项默认就是关闭掉的)
//至此freedadius配置完成

3. 安装daloRADIUS
wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz
pear install DB-1.8.2
mkdir /usr/share/daloRadius
tar zxvf daloradius-0.9-8.tar.gz
mv daloradius-0.9-8/* /usr/share/daloRadius/
rm -r daloradius-0.9-8

mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
//导入数据库

mysql -uroot -p
输入mysql密码进入数据库编辑模式
use radius;
alter table nas add server varchar(64) not NULL;
quit
//以上命令是给数据库radius中的nas表添加一个varchar(64)型的字段server

service httpd restart
service mysqld restart
//重启apache及mysql服务

//下面再次进入调试模式(调试之前记得重启vps否则会提示被占用)
radiusd -X
新打开一个SSH终端,测试服务器是否连通
radtest username password localhost 0 MyVPN
//如果有Access-Accept则说明调试成功
//至此所有配置都完成了

wget http://www.hi-vps.com/shell/vpn_centos6.sh
chmod a+x vpn_centos6.sh
bash vpn_centos6.sh
//安装PPTP-VPN 1.为安装 2.为修复 3.为添加用户,我们这里直接选1

//进入/etc/ppp目录修改options.pptpd 在最下面添加一下三行。这样之后pptp就不会通过原来的文件进行认证。而是转向使用radius协议的mysql数据库
nano /etc/ppp/options.pptpd

plugin radius.so
plugin radattr.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf

下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来:

$configValues[‘CONFIG_DB_TBL_RADUSERGROUP’] = ‘radusergroup’;

root@vpn ~]# cd /var/www/html/
[root@vpn ~]# ln -s /usr/share/daloRadius/ admin

//然后重启radius服务。就可以通过radius数据库中的用户名和密码连接pptp服务了。
service radiusd start
//至于如何给freedadius添加新用户。请到http://IP/vpn 去添加。默认用户名 administator 密码 radius

chkconfig radiusd on
chkconfig pptpd on
chkconfig httpd on
chkconfig mysqld on
//这四个命令可执行也可不执行。都是添加自启动的。如果发现通过上面的配置无法自启动。再执行。
……………………………………………………………………………………………..

2 条评论

昵称
  1. Andrew

    终于有了详细教程

    1. Lop

      ^_^ 只是复杂的教程。