OVM:在Ubuntu上快速部署OpenVPN, L2TP, PPTP服务
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服务
- 配置文件备份与恢复
- 针对OpenVPN的用户证书管理
- 防火墙管理
- 日志管理
- 快速卸载
通常整个过程仅需要5分钟
包括批量或个别地发放证书、作废证书。证书文件位于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
- 生成根证书
- 生成用户证书
- 更新init.d链接
- 重启相关服务
OVM会根据用户对OVM的配置更新上述服务相关的配置文件,随后放置到正确地目录下。
它会检查是否存在config/users文件,如果存在,则按照该文件中的用户名为每一位用户生成一个证书,并打包为user.tar.gz,证书文件最终放在crt目录下。
这样系统在启动后会自动启用所有相关的服务
安装完成后,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
lv
2014-08-25 at 08:27
pptp正常,l2tp连接的时候提示,628错误,在连接完成前,被远程计算机中止,怎么办?
lv
2014-08-25 at 09:32
看来是我电脑的问题,换手机竟然能连上。。。。。。
打扰了。
lv
2014-08-25 at 13:27
老大什么时候有空更新一下14.04版本呗,两年没更新了,非常感谢!
skyding
2014-12-26 at 17:48
你好,请教一个问题! 找到openvpn如何使用了,但是
TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
网上查是默认的2124端口被封了,我想知道,更改ak.conf后,需要重启什么服务吗?
站长工具
2015-01-27 at 19:48
VPN 好东西 支持更新
dark
2015-08-02 at 17:28
怎么保存配置?小白啊,不懂!
dark
2015-08-02 at 17:29
改了Ip后,不知所措。真心求教!