时隔多日,正好公司同事需要使用OpenVPN,我有点时间就研究安装试了试。
从网上搜索了下,文章一大堆,方式主要有三种,简单说明一下。
第一种,就是最传统的方式,手动更新依赖包,安装OpenVPN的各种依赖,手动配置证书等等;
第二种,有大神网友写了安装脚本,对方式一进行了封装,只要运行安装脚本即可;
第三种,与方式二相似,只不过是基于docker的环境,正好前段时间简单研究了下docker,并应用在自己的项目中,故使用它。
安装步骤参考官方说明,经过一番折腾,略为明白了,现记录如下:
服务端配置:
安装镜像
1
docker pull kylemanna/openvpn
定义临时变量
1 2
# 这个变量是方便下面命令行引用,如果不定义,直接使用确定的路径也可以。临时的意思是,关闭终端后,这个变量就不在存在了。 OVPN_DATA="ovpn-data-example"
初始化数据卷及运行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
启动OpenVPN服务端
1
docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
生成客户端证书
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
导出客户端配置
1 2 3
# 使用镜像创建一个容器,将数据挂载到前面命名的数据卷上,完成之后删除容器。 # CLIENTNAME.ovpn 就是要生成的客户端配置,下文客户端需要使用它。 docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn
客户端配置:
下载
从官网下载相应的客户端安装程序,网址https://openvpn.net/community-downloads/ (可能需要科学上网)。
安装
依 Windows 为例,就是下一步、下一步。
安装秘钥
将服务端生成的 CLIENTNAME.ovpn 放到程序的安装目录config下,例如我的是 C:\Program Files\OpenVPN\config 目录。
或者运行之后,使用【导入配置文件…】,将其导入。
运行
启动客户端程序,选择连接即可。