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
  • 小灰

    2012-06-29 at 12:11

    博主你好,你这边所说的 HOST 的填写不应该为ip,于是我就凌乱了? 能否举个实例应该填写什么?

    1. lesca

      2012-06-29 at 13:58

      填主机名,如HOST=”lesca.me”
      务必确保该名字是可解析的。如果是在本机测试,则在hosts中加入一行测试主机的名字,地址对应到测试机网卡地址,如
      192.168.1.101 test.local
      然后再修改HOST变量为:HOST=”test.local”

      1. 小灰

        2012-06-29 at 13:59

        多谢博主回复,那看来我还是 没有填写错误的,我再去试试。

    2. lesca

      2012-11-05 at 15:40

      该问题已修复,请下载最新版本,然后在HOST中直接输入您VPS的IP地址即可。

      1. 小灰

        2012-11-21 at 21:03

        恩,收到回复再次来光顾,上次后来没折腾,再次尝试,感谢博主的辛苦劳动啊~

        1. 小灰

          2012-11-21 at 21:34

          成功了!! :) 再次感谢!!!

  • Sakuya

    2012-11-03 at 13:27

    博主你好,同小灰的疑问,HOST必须是可解析的域名地址的话,那只有VPS没有买域名怎么办?

    1. lesca

      2012-11-05 at 15:39

      你好,lesca已经修复该问题,请下载最新版本,然后在HOST中直接输入您VPS的IP地址即可。

  • Sakuya

    2012-11-07 at 16:32

    谢谢博主更新,真的是太好用了!
    不仅安装速度超快(真不敢相信这么快就能安装好),而且配置文件的管理如此方便。佩服!!

    有个问题:我用的Linode东京VPS做VPN,却访问不了www.nicovideo.jp是为什么?

    1. 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了。。。。

  • Pingback: [BIGPLAN]最近的些许折腾 | 关于互联网
  • 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了,很喜欢

  • Pingback: 亲测DigitalOcean下L2TP和PPTP科学上网,一分钟搞定。 | 新的篇章
  • lv

    2014-08-24 at 23:28

    两年没更新拉?准备尝试一下,感谢提供。