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
小灰
2012-06-29 at 12:11
博主你好,你这边所说的 HOST 的填写不应该为ip,于是我就凌乱了? 能否举个实例应该填写什么?
lesca
2012-06-29 at 13:58
填主机名,如HOST=”lesca.me”
务必确保该名字是可解析的。如果是在本机测试,则在hosts中加入一行测试主机的名字,地址对应到测试机网卡地址,如
192.168.1.101 test.local
然后再修改HOST变量为:HOST=”test.local”
小灰
2012-06-29 at 13:59
多谢博主回复,那看来我还是 没有填写错误的,我再去试试。
lesca
2012-11-05 at 15:40
该问题已修复,请下载最新版本,然后在HOST中直接输入您VPS的IP地址即可。
小灰
2012-11-21 at 21:03
恩,收到回复再次来光顾,上次后来没折腾,再次尝试,感谢博主的辛苦劳动啊~
小灰
2012-11-21 at 21:34
成功了!! :) 再次感谢!!!
Sakuya
2012-11-03 at 13:27
博主你好,同小灰的疑问,HOST必须是可解析的域名地址的话,那只有VPS没有买域名怎么办?
lesca
2012-11-05 at 15:39
你好,lesca已经修复该问题,请下载最新版本,然后在HOST中直接输入您VPS的IP地址即可。
Sakuya
2012-11-07 at 16:32
谢谢博主更新,真的是太好用了!
不仅安装速度超快(真不敢相信这么快就能安装好),而且配置文件的管理如此方便。佩服!!
有个问题:我用的Linode东京VPS做VPN,却访问不了www.nicovideo.jp是为什么?
lesca
2012-12-06 at 11:37
检查本地DNS是什么。方法是在cmd下运行nslookup,它会给出Address。如果不是8.8.8.8,就手动到“本地连接”(就是有Internet访问的网卡)修改DNS,第一个改成8.8.8.8,第二个可以空着,也可以填写ISP的本地DNS。
小灰
2012-11-22 at 21:52
lesca 邮件多少哇~ 我现在配置完了ovm 但是 https站点访问不了了。。
然后我直接修改了 iptables.vpn 然后设定了
iptables -A INPUT -p tcp –dport 443 -j ACCEPT 运行 ak -S
iptables -L 里面也有https,但是就是连不上站点。
小灰
2012-11-22 at 21:58
可行了 = = 忘记 restart apache了。。。。
xunandotme
2013-05-14 at 22:19
你好,东西很好用,表示感谢。有个问题,不想使用-S命令,自己映射iptables,请问,openvpn的10.9.0.0是b类还是c类地址。那两个是c类/24自己已经转好了 麻烦回复 谢谢
xunandotme
2013-05-18 at 02:59
你好,问一下mtu mtr的问题。安装包很好使,但是我遇到一个致命的问题。就是l2tp的话,安卓4.1设备一拨,这次服务就失效了,pptp没问题。每次重启之后,苹果设备拨断再拨都正常,只要我那个安卓一拨,就只能它自己拨断再拨了,再拨可以拨上。开始追踪日志,看到默认的1404,安卓回1400,但是无论我怎么改/etc/ppp/option.xl2tpd文件,都不可以,包括不定义值。请问一下能简单帮忙分析下么,可以和你邮件联系么,呵呵。我也在一周前加入linode了,很喜欢
lv
2014-08-24 at 23:28
两年没更新拉?准备尝试一下,感谢提供。