Linux+pptp+mysql+freeradius 实现VPN认证, 限制用户连接数

2011年11月17日

pptp是常用的vpn软件,翻墙利器.传统的pptp是使用文档方式来实现用户的认证的,管理用户时需要操作chap-secrets文件来,添加修改用户.使用起来不方便.而且没有对用户流量监控,以及分组管理的功能.可不可以实现通过数据库来管理用户,以及记录PPTP用户使用的流量,限制一个账号同时登陆人数呢?答案是:有.
想知道吗?且看下面分解

一、安装pptp
PPTP VPN 服务器安装

1、安装相关软件
32位版:

64位版:

2、配置文件编写
①、配置文件/etc/ppp /options.pptpd

输入以下内容:

②、 配置文件/etc/ppp/chap-secrets

输入以下内容
# Secrets for authentication using CHAP
# client server secret IP addresses
myusername pptpd mypassword *
注: 这里的myusername和mypassword即为PPTP VPN的登录用户名和密码

例:

如果多人使用同一个账 号登陆,ip地址的位置写*

③、 配置文件/etc/pptpd.conf

输入以下内容:

注:为拨入VPN的用户动态分配 192.168.9.11~192.168.9.30之间的IP

④、 配置文件/etc/sysctl.conf

修改以下内容:

保存、退出后执行:

3、 启动PPTP VPN 服务器端:

4、 启动iptables:

测试:拨号测试,没问题继续下面的.

二、安装系统自 带的mysql,apache php等环境(我使用的是centos系统,所以用yum来安装,也可以使用其他方法,自便)

三、下载安装freeradius

出现Access-Accept字样说明成功。
测试成功后把/etc/raddb/users改回去。
四、freeradius和mysql的集成

先加入一些组信息:

然后加入用户信息:

然后把用户加到组里:

限制一个账户同时只能登陆一个,不做下面限制,可以同时登陆多个

注意:这里使用的freeradius是2.0版本的,1.0版本的数据库sql和2.0的位置不一样.
1.编辑/usr/local /freeradius/etc/raddb/sql.conf
mysql用户名,密码根据自己的情况填写
第88行取消readclients = yes 前的注释
2.编辑/usr/local/freeradius/etc/raddb/sites-enabled/default
第145 行files前加注释
第152 行取消sql前的注释
第308 行files 前加注释
第342 行取消sql前的注释
第374 行取消sql前的注释
第395 行取消sql前的注释
3.编辑/usr/local/freeradius/etc/raddb/sites-enabled/inner-tunnel
第111 行files前加注释
第118行取消sql前的注释
第242行取消sql前的注释
第264行取消sql前的注释
###总之就是去掉files模块,开启sql模块
4.编辑/usr/local/freeradius/etc/raddb/eap.conf
第30行default_eap_type = md5改为default_eap_type = peap
5.测试
# radtest sqltest testpwd localhost 1812 testing123
出现Access-Accept字样说明成功。
参考网址:http://linux.chinaunix.net/bbs/thread-1061085-1-2.html
到目前为止:整合了freeradius+mysql, pptpd还是单独运行.
五、pptpd+mysql+freeradius整合

下载源码ppp-2.4.4,解压

在最后添加:

###注意,我的是64位系统,所以模块在/usr/lib64/pppd/2.4.4 下面。32位的在 /usr/lib/pppd/2.4.4

添加:

否则拨号时后台日志会报错,无法拨入,客户端报691错误:

哈哈,从启freeradius 与pptpd ,连接就可以通过了。
如果是无法访问其他的机器,请注意防火墙的设置。这是我的配置文档,绝对的能够跑通。
后记:
后来想通过mac地址来帮定客户端,但是实践了后发现ppp根本就不可能实现这个功能,绑定IP对于内网用户来说,没有任何问题,但是对于从公网连接到 公司的用户来说,根本没有作用。只能放弃。

检查mysql是否已经开启

测 试:
在数据库里添加一个用户

在 XP系统上用user1 123456 用户登陆。

现在服务器上测试

显示如上说明成功

备注:
本文参考了网上几篇文章,亲手安装测试总结而成.可以说是目前网上能找到的比较全的安装使用文档.
参 考文档:
http://linux.chinaunix.net/techdoc/desktop/2009/06/23/1119944.shtml
http://linux.chinaunix.net/bbs/thread-1061085-1-2.html

对radius库的一些说明
radius 库有10张表
nas
radacct
radcheck
radgroupcheck
radgroupreply
radippool
radpostauth
radreply
radusergroup
wimax
其中重要的有
radacct 用来用户登陆后,详细信息,包括登陆和下线时间,上传和下载字节数
radcheck 用来记录用户账户、密码
radpostauth 记录所有用户没一次登陆的开始时间及状态

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: Linux+pptp+mysql+freeradius 实现VPN认证, 限制用户连接数
本文的评论功能被关闭了.