OT-OSM.openvpn

Ansible 角色:OpenVPN

CircleCI

Opstree Solutions
Opstree Solutions

一个 Ansible 角色,用于安装和配置 OpenVPN 服务器。

版本历史

日期 版本 描述 修改者
2018年8月16日 v.1.0.0 初始草稿 Yashvinder Hooda
2018年9月8日 v.1.0.0 为 Debian 添加角色 Sudipt Sharma
2018年10月9日 v.1.0.0 更新了 README Sudipt Sharma
2018年11月13日 v.1.0.0 更新以支持 RHEL Sudipt Sharma
2019年2月28日 v.1.0.0 添加 Gitlab-CI Mahesh Kumar
2019年5月31日 v.1.0.0 添加分子测试用例 Ekansh Jain
2020年1月13日 v.1.0.0 更新以支持 AMAZON Sudipt Sharma
2020年2月11日 v.1.0.0 为客户端创建与撤销添加标签 Sudipt Sharma
2020年4月18日 v.1.0.0 集成 Circle-CI Sudipt Sharma

显著特点

  • 此角色自动化 OpenVPN 的 VPN 设置。 角色包含两个元文件:
  • clientlist:输入您想要添加的客户端名称。
  • revokelist:输入您想要撤销的客户端名称。

注意:

  • 禁用源/目标检查。

    在实例列表中,选择 VPN 实例,然后选择网络->更改源/目标。 从下拉菜单中选择,然后单击“是,禁用”。 否则,您的 VPN
    服务器将无法连接到其他 EC2 实例。

支持的操作系统

  • CentOS:7
  • CentOS:6
  • Ubuntu:bionic
  • Ubuntu:xenial
  • Amazon AMI

依赖项

  • 无 :)

目录结构

osm_openvpn
.
├── clientlist
├── defaults
│   └── main.yml
├── files
│   └── make_config.sh
├── handlers
│   └── main.yml
├── media
│   ├── add_connection.png
│   ├── addvpn.jpg
│   ├── client.png
│   ├── import_file.png
│   ├── save_key.png
│   ├── select_file.png
│   └── vpn.jpg
├── meta
│   └── main.yaml
├── molecule
│   └── default
│       ├── Dockerfile.j2
│       ├── INSTALL.rst
│       ├── molecule.yml
│       ├── playbook.yml
│       └── tests
│           ├── test_default.py
│           └── test_default.pyc
├── README.md
├── revokelist
├── tasks
│   ├── client_keys.yaml
│   ├── config.yaml
│   ├── easy-rsa.yaml
│   ├── firewall.yaml
│   ├── install.yaml
│   ├── main.yaml
│   ├── revoke.yaml
│   └── server_keys.yaml
└── templates
    ├── before.rules.j2
    ├── client.conf.j2
    └── server.conf.j2
10 个目录,31 个文件

角色变量

变量 默认值 描述 类型
server_name server OpenVPN 服务器名称 可选
PROTOCOL udp 服务器将使用的协议 必填
PORT udp 服务器将使用的端口 必填
openvpn_server_network 10.8.0.0 VPN 网络的 CIDR 范围 可选
base_directory /etc/openvpn OpenVPN 服务器的配置路径 可选
easy_rsa_url url 下载 Easy RSA 的 URL 可选
block_all_connection false 阻止 OpenVPN 客户端的所有通信 可选
port_list [80,443] 允许 OpenVPN 客户端的特定端口,仅在 block_all_connection == true 时适用 可选

示例剧本

---
- name: 自动化 OpenVPN 设置
  hosts: server
  become: true
  roles:
    - role: osm_openvpn
...

$ ansible-playbook site.yml -i inventory
  • 生成客户端密钥
$ ansible-playbook site.yml -i inventory --tags "generate_client_keys"
  • 撤销客户端密钥
$ ansible-playbook site.yml -i inventory --tags "revoke_client_keys"

库存

库存应该如下所示:-

[server]                 
192.xxx.x.xxx    ansible_user=ubuntu 

客户端密钥

客户端密钥将生成在本地主机的 /tmp/{{client_name}}.ovpn 中。

客户端配置

安装 OpenVPN

   apt-get install openvpn -y

为 Ubuntu 18.04 “bionic beaver” 安装 OpenVPN GUI

   apt install network-manager-openvpn-gnome -y

安装后,前往网络设置

将 VPN 添加到网络设置中

然后在 VPN 设置中浏览您的 client.ovpn 文件

client

为 Ubuntu 16.04 “xenial” 安装 OpenVPN GUI

   apt install network-manager-openvpn-gnome -y

安装后,前往网络设置

add_connection

将 .ovpn 文件添加到网络设置中

import_file

然后选择 .client.ovpn 文件。

select_file

然后保存 client.ovpn 文件。

save_key

未来建议的更改

  • 修复该角色以在裸机上运行

参考资料

许可

  • MIT / BSD

作者信息

贡献者

Sudipt Sharma
Sudipt Sharma

关于项目

OpenVpn ansible role for creating a secure tunnel to your private infra.

安装
ansible-galaxy install OT-OSM.openvpn
许可证
Unknown
下载
219
拥有者