时隔多日,正好公司同事需要使用OpenVPN,我有点时间就研究安装试了试。

从网上搜索了下,文章一大堆,方式主要有三种,简单说明一下。

第一种,就是最传统的方式,手动更新依赖包,安装OpenVPN的各种依赖,手动配置证书等等;

第二种,有大神网友写了安装脚本,对方式一进行了封装,只要运行安装脚本即可;

第三种,与方式二相似,只不过是基于docker的环境,正好前段时间简单研究了下docker,并应用在自己的项目中,故使用它。

安装步骤参考官方说明,经过一番折腾,略为明白了,现记录如下:

服务端配置:

  1. 安装镜像

    1
    
    docker pull kylemanna/openvpn
    
  2. 定义临时变量

    1
    2
    
    # 这个变量是方便下面命令行引用,如果不定义,直接使用确定的路径也可以。临时的意思是,关闭终端后,这个变量就不在存在了。
    OVPN_DATA="ovpn-data-example"
    
  3. 初始化数据卷及运行openVPN容器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    # 创建数据卷,方便将数据挂载到我们命名的数据卷上。如果不指定名字,刚为一串随机数字、字母串为名称
    # 数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以在容器之间共享和重用,默认会一直存在,即使容器被删除
    docker volume create --name $OVPN_DATA
    # 使用镜像创建一个容器,将数据挂载到前面命名的数据卷上,完成之后删除容器。
    # ovpn_genconfig 为配置文件命令,VPN.SERVERNAME.COM换成你的域名或者IP地址。
    docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM
    # 使用镜像创建一个容器,将数据挂载到前面命名的数据卷上,完成之后删除容器。
    # 配置秘钥,这里会有交互提示,输入密码、重复密码、证书名称、再次密码(这个密码是用来生成客户端秘钥文件时使用的,可以防止他人随意使用 openVPN 服务器端生成客户端秘钥。)
    docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki
    
  4. 启动OpenVPN服务端

    1
    
    docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
    
  5. 生成客户端证书

    1
    2
    3
    4
    
    # 使用镜像创建一个容器,将数据挂载到前面命名的数据卷上,完成之后删除容器。
    # CLIENTNAME 为要客户端名称,比如张三使用,就用 zhangsan 之类的标示一下。nopass 说明不需要密码,就是客户端连接时不里奇发密码。
    # 如果上个步骤配置了生成密码,就输入上面的密码(使用上面步骤2配置的密码,才能生成客户端秘钥)。
    docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass
    
  6. 导出客户端配置

    1
    2
    3
    
    # 使用镜像创建一个容器,将数据挂载到前面命名的数据卷上,完成之后删除容器。
    # CLIENTNAME.ovpn 就是要生成的客户端配置,下文客户端需要使用它。
    docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn
    

客户端配置:

  1. 下载

    从官网下载相应的客户端安装程序,网址https://openvpn.net/community-downloads/ (可能需要科学上网)。

  2. 安装

    依 Windows 为例,就是下一步、下一步。

  3. 安装秘钥

    将服务端生成的 CLIENTNAME.ovpn 放到程序的安装目录config下,例如我的是 C:\Program Files\OpenVPN\config 目录。

    或者运行之后,使用【导入配置文件…】,将其导入。

  4. 运行

    启动客户端程序,选择连接即可。

参考: