githubixx.peervpn
角色:peervpn
这个 Ansible 角色用于 Kubernetes the not so hard way with Ansible (at Scaleway) - Part 3 - PeerVPN。用于为 Ubuntu 16.04/18.04 设置 PeerVPN(但基本上应该可以在所有使用 systemd 的 Linux 操作系统上工作)。通过 PeerVPN,您可以轻松地在数据中心和您希望的所有节点之间设置一个完全互联的 VPN。您只需要至少一台具有公共可访问接口的主机(默认是端口 7000
,协议 UDP
)。一个简单的配置可以是您使用这个公共可访问主机来设置 peervpn_conf_initpeers
。在您的 VPN 上找到其他主机将由 PeerVPN 自动完成。
PeerVPN 为其目的安装了自己的 TAP 接口。该 TAP 接口的默认名称是 tap0
。要更改名称,请为 peervpn_conf_interface
变量指定不同的值。
要为您的 PeerVPN 预共享密钥生成一个强密码,您可以使用:
openssl rand -base64 382 | tr -d '\n' && echo
由于这是一个预共享密钥,因此这个密钥必须在所有安装 PeerVPN 并使用相同网络名称的主机上使用。否则连接将无法工作。默认的预共享密钥是 default
,您当然需要更改它 ;-)
版本
我为每个版本打标签,并尽量遵循 语义版本控制。如果您想使用该角色,建议查看最新的标签。主分支基本上是开发,而标签标记稳定的发布。但一般来说,我也尽力保持主分支的良好状态。标签 1.0.0+r044
的意思是这是该角色的 1.0.0
版本,并且使用了 PeerVPN r044
。如果角色本身发生变化,X.Y.Z
将增加。如果 PeerVPN 版本更改,rXXX
将增加,并且角色补丁级别也将增加(例如 1.0.0
-> 1.0.1
)。这允许在专门为特定 PeerVPN 发布开发时,标记错误修复和新主要版本。
要求
如果您安装了防火墙规则,请允许在端口 7000 上的 UDP(默认)流量。您还需要添加 peervpn_conf_initpeers
变量。这个变量没有默认值!IPv6 默认启用。如果您不想使用它,请添加变量 peervpn_conf_enableipv6: no
。
角色变量
基本上您只需更改非常少的变量(见下文)。但请查看 templates/etc/peervpn/peervpn.conf.j2
以获取示例和变量的完整说明。
没有默认值的变量:
peervpn_conf_initpeers
peervpn_conf_engine
peervpn_conf_ifconfig6
peervpn_conf_upcmd
peervpn_conf_chroot
具有默认值的变量:
peervpn_version: "peervpn-0-044"
peervpn_install_directory: "/opt/{{peervpn_version}}"
peervpn_dest: "/usr/local/sbin"
peervpn_conf_networkname: "peervpn"
peervpn_conf_psk: "default"
peervpn_conf_enabletunneling: "yes"
peervpn_conf_interface: "tap0"
peervpn_conf_local: "0.0.0.0"
peervpn_conf_port: 7000
peervpn_conf_ifconfig4: "10.0.0.1/24"
peervpn_conf_sockmark: 0
peervpn_conf_enableipv4: "yes"
peervpn_conf_enablenat64clat: "no"
peervpn_conf_enablerelay: "no"
peervpn_conf_enableprivdrop: "yes"
peervpn_conf_user: "nobody"
peervpn_conf_group: "nogroup"
您必须为 peervpn_conf_initpeers
指定一个值,以使用 PeerVPN(可以在 Ansible 的 host_vars
目录中每个主机指定,或在 group_vars
目录中每个主机组指定)。例如,如果您指定 peervpn_conf_initpeers: "host.example.net 7000"
,PeerVPN 将尝试通过 UDP 连接到 host.example.net
的 7000 端口以设置连接。
您至少应更改以下变量:
peervpn_conf_initpeers
: PeerVPN 应连接的主机名和端口,以成为 VPN 的一部分。
peervpn_conf_networkname
: 您的 VPN 名称。
peervpn_conf_psk
: 预共享密钥。有关如何生成良好的预共享密钥密码,请参阅上面的介绍。
peervpn_conf_ifconfig4
: 节点的 IP 地址和 CIDR 表示法中的子网。此变量当然需要针对每个主机指定。
示例 Playbook
- hosts: webservers
roles:
- peervpn
许可证
GNU 通用公共许可证 第 3 版
作者信息
ansible-galaxy install githubixx.peervpn