参考:
- OpenVPN: https://github.com/OpenVPN/openvpn
- easy-rsa: https://github.com/OpenVPN/easy-rsa
环境:
- RHEL7
- OpenVPN v2.4.6
- easy-rsa v3.0.3
概述
通过在云端VPC, k8s集群内运行OpenVPN Server,让本地可以通过连接OpenVPN进行访问云资源,而不需要将云资源开放公网访问。
我是将OpenVPN运行在k8s 集群了,对它提供ELB进行公网连接。在S端配置文件中推送对应的路由信息——如集群内节点CIDR, 服务CIDR, VPC CIDR…
安装和配置
安装
需要安装:
- EPEL
- openvpn
- easy-rsa: 用于制作CA证书,S端证书,C端证书
安装了EPEL源之后就可以直接安装openvpn
和easy-rsa
,当然也可以从GitHub上拉取。
1 | yum install -y epel-release |
制作证书
编辑vars文件
此处需注意,通过yum安装可能会没有example.vars
这个栗子文件。没关系,请在easy-rsa GitHub去下载一份过来。
1 | mkdir -p /etc/openvpn/easy-rsa/server |
创建证书和秘钥
- CA证书和S端证书
1 | cd /etc/openvpn/easy-rsa/server |
- C端证书
1 | cd /etc/openvpn/easy-rsa/client/ |
- 梳理上面生成的文件
1 | server/pki/ca.crt |
拷贝相应证书到openvpn目录下
1 | #S端 |
配置文件
在openvpn GitHub去下载对应配置文件,做相应的修改。
S端配置文件
一下只是我的栗子,详细信息请参考自己的项目。具体的每个选项描述,栗子文件里面有解释。
vim server.conf
:
1 | port 1194 |
C端配置文件
vim client.ovpn
:
1 | client |
另外几个配置
vi checksw.sh
:
1 |
|
vi psw-file
: 这为可登录的用户密码
直接往这个文件写入用户和密码即可,并不需要重启openvpn服务。
1 | user1 pass-user1 |
vi start_openvpn.sh
: 启动脚本
1 |
|
由于我是运行在k8s集群容器内,所有还有几个文件:
Dockerfile
.dockerignore
k8s.yaml
: 由于它需要创建和使用系统资源,所以请使用特权容器运行
启动
- 启动S端
- 客户端连接
- Windows客户端
- Linux客户端
- Mac客户端
启动之后应该就能正常访问了,如果不能正常访问,请查看你推送的CIDR和DNS,还有ipv4转发和iptables等。
1 | #S端 |