2013年10月4日星期五

限制pptp vpn用户单个连接的简单方法



linux系统上提供的pptp vpn服务默认采用的是chap认证方式。这种认证方式比较简单,只要用户名和密码正确即可进行连接,不能对一个账户的连接数目,流量,速度进行限制。如 果要实现这众多的限制,可以采用freeradius认证方式。但是我个人感觉配置freeradius可不是一般的繁琐啊,花了某个晚上的几个小时后我 最终放弃了…

不过如果仅仅只是对同一个账户的连接数目进行限制,倒是有一个简单的办法。这里提供的方法改自某个英文网站。当用中文搜索不到自己想要的东西时,用英文搜下说不定能有新发现呢。

实现方法很简单。只要在/etc/ppp文件夹下面建立一个名为auth-up的文件。在里面写入如下内容即可:

#!/bin/sh
# get the username/ppp line number from the parameters
REALDEVICE=$1
USER=$2
# create the directory to keep pid files per user
mkdir -p /var/run/pptpd-users
# if there is a session already for this user, terminate the old one
if [ -f /var/run/pptpd-users/$USER ]; then
  kill -HUP `cat /var/run/pptpd-users/$USER`
fi
# copy the pid file of current user to /var/run/pptpd-users
cp "/var/run/$REALDEVICE.pid" /var/run/pptpd-users/$USER

下载此文件:https://docs.google.com/file/d/0B2r42wE-sETbcXBpMGFvQkhjdW8/edit?usp=sharing

这样只要一个帐号进行了连接,就在/var/run/pptpd-users目录下记录下来了。而一旦这个帐号在他处再次登录,旧有的连接就被杀掉了。所以后面的连接具有优先权。
最后再运行一个命令然后重启pptpd服务即可:
chmod +x * 
 转自:http://www.startend.net/archives/883 :startend