ansibleguy.infra_openvpn
进行中!请勿在生产环境中使用!
Ansible 角色 - OpenVPN 客户端到站点 VPN
警告: 此角色仍在开发中。请勿尝试在生产环境中使用!
用于部署 OpenVPN 客户端到站点 VPN 设置的角色。
OpenVPN 版本
此角色使用 开源 OpenVPN 社区 版。
为什么要使用社区版?
优点:
- 无需许可费用 - 一台服务器可以扩展到数千个客户端而无需重大成本
- 所有主要功能都在开源版本中
- 可以使用 Ansible 管理
缺点:
此版本没有图形(_网页_)用户界面!
如果您想要一个漂亮的网页界面来点击 => 请查看 OpenVPN 访问服务器
测试过的系统:
- Debian 11
- Debian 12
安装
# 最新版本
ansible-galaxy role install git+https://github.com/ansibleguy/infra_openvpn
# 从 galaxy 安装
ansible-galaxy install ansibleguy.infra_openvpn
# 或指定自定义角色路径
ansible-galaxy install ansibleguy.infra_openvpn --roles-path ./roles
# 安装依赖
ansible-galaxy install -r requirements.yml
用法
您想要一个简单的 Ansible 图形界面?请查看我的 Ansible WebUI
配置
根据需要定义配置:
openvpn:
您可能想使用 'ansible-vault' 来加密您的密码:
ansible-vault encrypt_string
执行
运行剧本:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml
还有一些有用的 标签 可用:
* *
要调试错误 - 您可以在运行时设置 'debug' 变量:
# 警告:将记录密码!
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
要让 OpenVPN 服务自动重启 (_无交互提示_):
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e auto_restart=yes
功能
软件包安装
- Ansible 依赖 (最小)
配置 *
默认配置: *
默认选项确认: *
默认选项排除:
信息
信息: 如果您想了解更多有关配置 OpenVPN 社区的信息,请查看他们的 综合文档
有趣的页面:
信息: ChromeOS 使用开放网络配置 (ONC) 格式。
它以 JSON 格式编写,调试起来相当困难,因为您无法获得任何有用的错误消息。
此角色提供的配置模板可能不适用于每个特殊情况。
如果您需要排查故障,请查看 ONC 文档。 但请注意:并非每个选项都可能按文档中所述实际工作。
警告: 如果 OpenVPN 实例需要支持与 ChromeOS 客户端的连接 - 您需要将 'openvpn.instances.[name].security.tls_crypt' 选项设置为 'false',因为这在当前的 ChromeOS 实现中不受支持。
注意: 此角色目前仅支持基于 Debian 的系统。
注意: 此角色的大多数功能可以选择启用或禁用。
有关所有可用选项,请查看位于 主默认文件 的默认配置!
警告: 您提供的并非每个设置/变量都会被检查有效性。配置错误可能会导致角色失效!
信息: 如果您想使用
openvpn.unprivileged: true来获得 增强的系统安全性,则已安装的 OpenVPN 二进制文件需要支持iproute2!该角色将检查二进制文件的兼容性,如果不兼容将失败!
获取 iproute2 支持的选项:
- 您必须使用一个编译时启用该选项的二进制文件
- 如例子脚本所示,自己重新编译 OpenVPN 示例脚本 (_不包括 'uninstall')
- 或者配置角色从我的 ansibleguy/openvpn-recompiled 仓库下载重新编译的二进制文件!
- 卸载现有的 OpenVPN 软件包/二进制文件
- 将
openvpn二进制文件复制/链接到/usr/local/bin
- 您必须使用一个编译时启用该选项的二进制文件
信息: 如果您使用多因素认证,当某些客户端(_如 ChromeOS_)不支持第二个输入字段时,可能会遇到问题!
您可能需要将
openvpn.server.auth.mfa_separator设置为您喜欢的任何特殊字符。 (例如:<<<_)这使您可以在同一个输入字段中输入两个秘密!比如这样:
p4ssW0rd<<<001122默认分隔符
:将始终得到支持 - 即使您设置了自定义分隔符。这允许两种方法都得到支持。
ansible-galaxy install ansibleguy.infra_openvpn