使用Linux搭建一个VPN网关

最近一直在用OpenVPN通过IPv6将连接到我的linode服务器进行科学上网和免流量。然后要上图书馆查文献的时候又需要关了OpenVPN,倍感麻烦。一开始是在自己电脑上加路由表,但是觉得这样也不方便,不同网络环境还要写不同脚本。然后自己校内还有一堆可以面流量的服务器,于是就像自己做一个PPTP的网关,我通过PPTP连接到校内的服务器,然后校内的服务器作为网关再智能选择走国内学校自带的线路还是走OpenVPN连接到外网。这个拓扑图大概是这样: user<--PPTP 192.168.8.0/24--->校内服务器<----正常上网 10.*.*.*---->Internet ^ | OpenVPN IPv6 192.168.5.0/24 | | v 国外服务器 ...

2015-07-17 · qhsong

pptpd+freeradius+mysql 构架VPN并进行流量限制笔记

去年就折腾了一下这个,一直没有折腾出来,今年在北京呆了几天,在情人节结束之后,到今天回到了秦皇岛,又折腾了一下午,总算把上述一套系统给做出来了。 主要参照 1、PPTP/L2TP + FreeRADIUS + MySQL 安装与配置 2、CentOS+pptpd+freeradius+mysql+ara 总结 3、freeradius wiki …. 步骤 1、安装pptpd参照资料2,资料2里面那个脚本文件已经相当详细,没有什么好说的,几乎是傻瓜化了的 2、安装freeradius,下载安装过程参照的是资料1里面,这样也能保证自己得到的是最新版本的。但是在测试完成之后,加入mysql测试的时候,输入radiusd -X,有一个提示是Failed to add duplicate client localhost,自己一直搞不懂为什么有个副本呢?后来把naslist.conf文件里面全部注释了,还是不行。 后来查资料发现,我原先为了安全,把test123改成了其他密码,本以为顺着做按照自己的想法改就行了。所以在naslist.conf还有后面的mysql里面输入的是我自己改的这个secret,不是test123,而radius的客户端没有改,所以主机就不认。改也很简单, cd /usr/local/etc/raddb vi clients.conf 找到这样的语句 client localhsot{ } 把这个语句块中的secret=test123改为你要的密码,这样,客户端和nas之前就能正常沟通了,也保证了安全的需要。 3、mysql部分 mysql对于用户的控制是在radcheck表里面,最简单的,用户名和密码控制就用User-Password ==这个属性就可以了,还有一个限制连接数的属性是Simultaneous-Use := ,不同的操作符会有不同的含义,具体参见wiki里面。 还可以用group来控制,这个可以将用户分组来做。大家可以看一下那个表的结构,大家也就知道怎么做了。 4、流量限制部分 我是把统计部分直接加到了sql/mysql/counter.conf文件末尾,所以,首先到radiusd.conf文件里面,找到$INCLUDE /sql/mysql/counter.conf前面的#去掉,然后 cd sql cd mysql vi counter.conf 在文件后面加入计算模块 sqlcounter monthlyBytecounter{ counter-name = Total-Max-Octets check-name = Max-Octets reply-name = ChilliSpot-Max-Total-Octets sqlmod-inst = sql key = User-Name reset = monthly query = "SELECT (SUM(acctinputoctets)+SUM(acctoutputoctets)) FROM radacct WHERE UserName='%{%k}'AND UNIX_TIMESTAMP(AcctStartTime) &gt; '%b'" } 同时,在/usr/local/raddb/sites-available/default文件里的authorize {} 节点里的最后(一定是最后,我之前加在开始就不行),加入这个模块的名字...

2012-02-15 · qhsong