OVM:在Ubuntu上快速部署OpenVPN, L2TP, PPTP服务

作者: lesca 分类: Tutorials,Ubuntu,VPN 发布时间: 2012-05-29 12:55

Updates

UPDATE: Jun.29 2012
经测试,OVM可以在Ubuntu 12.04 LTS上稳定运行。
UPDATE: Nov.5 2012
HOST变量允许IP地址,方便没有域名的朋友。

1.OVM项目简介

OVM原是OpenVPN Management的缩写,该项目是lesca用于管理OpenVPN用户的PKI加强,最初它只有一些基本的对OpenVPN的管理功能,但是随着需求的变更,lesca又增加了对L2TP和PPTP的支持,使得OVM成为了一款在Ubuntu上快速部署VPN的工具。它的核心命令叫是ak,原意为add key,但是现在已经增加了各种功能:

  • 快速部署OpenVPN, L2TP, PPTP服务
  • 通常整个过程仅需要5分钟

  • 配置文件备份与恢复
  • 针对OpenVPN的用户证书管理
  • 包括批量或个别地发放证书、作废证书。证书文件位于crt目录下

  • 防火墙管理
  • 作为一个提供网络数据包转发的服务器,必须有强大可靠的防火墙才能保证安全稳定。默认的防火墙规则位于bin/iptables.vpn目录下

  • 日志管理
  • 为OpenVPN提供简单的日志功能,日志文件位于/var/log/vpn目录下

  • 快速卸载

最新版本下载:ovm最新版本下载页面

2.安装OVM依赖的软件包

直接运行ak命令可以获得快速帮助:

# ./ak
OVM quick install:
        1. Install packages: ak -I
        2. Edit config/ak.conf
        3. Install configurations: ak -i
        4. Set IPtables and save: ak -S
OVM Management:
        Backup configurations: ak -B
        Restore configurations: ak -R [ archive.tgz ]
OpenVPN Management:
        Add users: ak <-l list | -u user> [-e days]
        Revoke users: ak <-r user> [-e days]
IPtables Management:
        Set IPtables and save: ak -S
        Set IPtables without save: ak -s
        Clear IPtables and save: ak -C
Uninstall OVM:
        ak <--clean | -c>

请以root权限进行安装(基础包):

# ./ak -I

该命令会安装所需软件包,但不会配置各种VPN服务,因为在此之前我们还需要对OVM本身进行配置,包括主机地址、DNS、网段等。ak在完成软件包的安装后会提示你:

Then ...
1. Edit config/ak.conf
2. ak -i
3. ak -S
Done!

3.配置OVM

首先配置ak.conf,这是OVM的主配置文件,我们只需要编辑#EDIT节:

# EDIT
export HOST=""
export DEV="eth0"
export PORT="2124"
export SUBNET="10.9.0.0"
export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=365
export KEY_COUNTRY="JP"
export KEY_PROVINCE="JP"
export KEY_CITY="Tokyo"
export KEY_ORG="OVM"
export KEY_EMAIL="webmaster@domain.com"
  • HOST是主机地址,新版本支持IP地址格式(如172.31.128.2),也支持域名格式(如ovm.domain.com)
  • DEV是服务器连接外网的接口,一般为eth0,如果是OpenVZ服务器,可能是venet0
  • PORT是OpenVPN服务的监听端口
  • SUBNET用于指定OpenVPN所在子网
  • KEY_SIZE密钥长度,此处为1024位
  • CA_EXPIRE,CA证书有效期,此处为3650天
  • KEY_EXPIRE,用户密钥有效期,此处为365天
  • KEY_COUNTRY,密钥所属国家,此处为JP,仅限2字节
  • KEY_PROVINCE,密钥所属省,此处为JP,仅限2字节
  • KEY_CITY,密钥所属城市,此处为Tokyo,不限长度
  • KEY_ORG,密钥所属组织,此处为OVM,不限长度
  • KEY_EMAIL,密钥所属邮件,方便用户联系密钥管理员,长度不限

你除了需要配置ak.conf之外,可能还需要配置位于config目录下的其他文件,但是忽略这一步也能保证正常安装。lesca列出了config目录下的所有配置文件和用途:

ak.conf OVM配置文件,用于配置网络接口以及指定环境变量
chap-secrets PPTP或者L2TP的用户登录密钥
client.ovpn OpenVPN客户端配置文件模板
ipsec.conf ipsec配置文件模板
ipsec.secrets 存储ipsec的PSK
options.xl2tpd xl2tpd服务的PPP配置文件
pptpd.conf PPTPD的配置文件模板
pptpd-options PPTPD的PPP配置文件模板
server.conf OpenVPN服务器端配置文件模板
users OpenVPN用户文件
xl2tpd.conf xl2tpd配置文件模板

4.自动安装openvpn, l2tp, pptp服务

安装前,请务必配置好config/ak.conf文件中的HOST变量,如果该变量为空,则会产生错误消息:

Error: HOST is empty!!

设置好该变量后,就可以将工作交给ak了:

# ./ak -i

该命令会执行以下操作:

  • 检查HOST是否为空
  • 依次配置pptp, ipsec, xl2tp, ppp
  • OVM会根据用户对OVM的配置更新上述服务相关的配置文件,随后放置到正确地目录下。

  • 生成根证书
  • 生成用户证书
  • 它会检查是否存在config/users文件,如果存在,则按照该文件中的用户名为每一位用户生成一个证书,并打包为user.tar.gz,证书文件最终放在crt目录下。

  • 更新init.d链接
  • 这样系统在启动后会自动启用所有相关的服务

  • 重启相关服务

安装完成后,OVM会提醒用户进行下一步操作:

DONE!
For first setup, run "ak -S" to setup iptables...
To config iptables rules, edit /root/2124/bin/iptables.customized

5.配置防火墙

用户可以自定义iptables规则,方法是修改bin/iptables.custom文件,语法请参照bin/iptables.vpn文件。通常情况下,默认的规则可以满足大多数需求,除非服务器运行着其他特殊端口的服务。我们可以通过-S参数将防火墙永久地安装到系统中去:

# ./ak -S

这样系统重启后会再次加载iptables防火墙规则。然而,有时候用户是出于测试目的,这是需要用到小写的-s参数部署防火墙,防火墙会在下次重启后清除:

# ./ak -s

用户也可以手动清除防火墙规则,该命令会彻底清除当前的防火墙规则,即使下次启动也不会加载:

# ./ak -C

如果用户想临时清空过滤规则:

# iptables -F

如果用户还想清空转发规则:

# iptables -t NAT -F

6.新增与撤销用户

新增用户:

# ./ak -u name

批量新增用户:

# ./ak -l list

其中list是包含用户信息的列表文件,格式请参照config/users,要撤销一个用户:

# ./ak -r name

如果想修改L2TP或者PPTP的用户,则只需编辑/etc/ppp/chap-secrets文件即可。

7.备份与恢复配置

有时候管理员会迁移服务器,但是又不想重新部署服务,这时候只需进行一键备份与还原工作即可。首先介绍备份:

# ./ak -B

这会创建一个backup目录,今后所有的备份档案都会置于此目录下。当我们需要恢复先前的证书状态时,可以执行:

# ./ak -R [ archive.tar.gz ]

如果存在archive.tar.gz,则使用archive.tar.gz恢复;否则以backup目录中最新的备份档案恢复配置。
/!\恢复配置时的注意事项

  • 目标服务器必须安装并配置过OVM,即ak -I
  • 该命令会恢复目标服务器的OVM配置文件ak.conf

8.卸载OVM

卸载OVM通常分两步进行,首先卸载配置:

# ./ak -c

然后卸载防火墙:

# ./ak -C

但是请注意,OVM不会卸载依赖软件包。
为什么配置和防火墙要分开卸载呢?主要是考虑到将防火墙规则清除会导致安全问题,所以用户需要明确地输入该命令,以知道自己在做什么

版权声明

本文出自 Lesca 技术宅,转载时请注明出处及相应链接。

本文永久链接: https://www.lesca.cn/archives/quickly-deploy-vpn-on-ubuntu-with-ovm.html

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

27 Comments