212012
 

VPN的流量自己用不完,就想分给同学们用。又怕流量超了,起码得弄个流量的统计吧。老规矩,网上Google一下,果然已经有人做好了。本文的主要参考了这篇文章,首先对原作者表示感谢。

主机为CentOS 5.x,已经安装好了OpenVPN 2.1.1,MySQL 5.1.60,还缺少关键部件libpam-mysql。

1. 先来安装它:

wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
tar zxvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure && make && make install

2. 配置MySQL:

     先用MySQL管理员账号登陆数据库,添加用于VPN操作的账号和记录用的数据库、数据表。

mysql -uroot -p
-- 创建数据库
CREATE DATABASE openvpn;
 
-- 切换数据库
USE openvpn;
 
-- 创建用户,用户名openvpn,密码openvpn(可自行设定)
GRANT ALL ON openvpn.* TO 'openvpn'@'localhost' IDENTIFIED BY 'openvpn';
 
-- 创建用户数据表
CREATE TABLE IF NOT EXISTS `user` (
  `username` char(32) COLLATE utf8_unicode_ci NOT NULL,
  `password` char(128) COLLATE utf8_unicode_ci DEFAULT NULL,
  `active` int(10) NOT NULL DEFAULT '1',
  `creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `name` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
  `email` char(128) COLLATE utf8_unicode_ci DEFAULT NULL,
  `note` text COLLATE utf8_unicode_ci,
  `quota_cycle` int(10) NOT NULL DEFAULT '30',
  `quota_bytes` bigint(20) NOT NULL DEFAULT '10737418240',
  `enabled` int(10) NOT NULL DEFAULT '1',
  PRIMARY KEY (`username`),
  KEY `idx_active` (`active`),
  KEY `idx_enabled` (`enabled`)
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 
-- 创建日志数据表
CREATE TABLE IF NOT EXISTS `log` (
  `username` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
  `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `end_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `trusted_ip` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
  `trusted_port` int(10) DEFAULT NULL,
  `protocol` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL,
  `remote_ip` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
  `remote_netmask` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
  `bytes_received` bigint(20) DEFAULT '0',
  `bytes_sent` bigint(20) DEFAULT '0',
  `status` int(10) NOT NULL DEFAULT '1',
  KEY `idx_username` (`username`),
  KEY `idx_start_time` (`start_time`),
  KEY `idx_end_time` (`end_time`)
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

3. 配置PAM for MySQL:

vim /etc/pam.d/openvpn

        进入输入模式,输入以下配置并保存。

Continue reading »

142012
 

原创文章,转载请注明来自Sean的技术博客

    自从买到了VPS,除了放置网站,就是玩一玩VPN了。早就听说过这种神奇的东西,用的还是不多,充满了好奇。放狗搜索了一下,发现最多的教程就是使用PPTPD搭建的,有的讲了配置,有的是用一键安装包。但是我的需求是一个能够支持IPv6的VPN,这样在校园网的环境下就可以免费的上网了,比较爽。以前一直用的是GoAgent来做代理,但是只是个普通的HTTP代理而已,还有单次返回数据500KB的限制,更是无法用任何的客户端。这些都使得这种方式并不能完全替代付费校园网IPv4的使用。

    后来发现大家表示OpenVPN是有支持IPv6的补丁包的,只要打好了补丁,就可以支持Server和Client之间的IPv6连接了。于是开始动手,以RedHat系列为例:

第一步,安装编译工具和OpenSSL。
      yum install gcc gcc-c++ kernel-devel openssl-devel

第二步,安装LZO压缩模块,后面OpenVPN用它来压缩。
      wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.04.tar.gz
   tar解压,进入目录./configure && make && make install

第三步,下载OpenVPN并打上IPv6的Patch,安装之。
   wget http://openvpn.net/release/openvpn-2.1.1.tar.gz
   wget https://github.com/downloads/jjo/openvpn-ipv6/openvpn-2.1.1-ipv6-0.4.11.patch.gz
   tar解压第一个,gunzip第二个,然后 patch –p0 < openvpn-2.1.1-ipv6-0.4.11.patch
   进入openvpn-2.1.1,./configure && make && make install
Continue reading »