kravietz.wireguard_vpn

wireguard_vpn

配置一个客户端到服务器的 Wireguard VPN 服务,并生成客户端配置文件。

描述

该角色在 Linux 系统上配置基于 Wireguard 的 VPN 服务,具有以下特点:

  • 所有网络配置使用 systemd-networkd 管理
  • 使用 RFC 1918 地址和 NAT 进行 IPv4 隧道网络
  • 使用完全可路由的子网和 NDP 代理进行 IPv6 隧道网络
  • 支持 Wireguard 预共享密钥
  • wg-quick(8) 生成客户端 .conf 文件
  • 支持所有 wg-quick(8) 配置选项

角色变量

vpn_interface: wg1

# 使用 `wg genkey` 生成 ***请使用 ansible-vault 保护***
# vpn_private_key: "iP/lnL/zhicPMnAphlT6qAciKusTmR2X5utTAo7u5Ug="  # 必须

# 从上述生成的密钥使用 `wg pubkey`
# vpn_public_key: "OBGsZZxxX0jcehmFJc0L6v7FX3PMnVDFgdgpjJFU0k4="   # 必须

## 公共互联网的 UDP 监听端口
# vpn_listen_port: 1194  # 必须

## 内部 VPN 隧道上的地址
# vpn_address4: "192.168.2.252/24"            # 至少一个是必需的
# vpn_address6: '2a05:1111:0:3:8000::252/65'  # 至少一个是必需的

## 必须为 IPv6 VPN 客户端设置 NDP 条目
# vpn_ndp_config: /etc/systemd/network/eth0.network  # 可选

## 将在客户端设置用于 VPN 的 DNS 解析器
# vpn_dns_resolvers: ["9.9.9.9", "2620:fe::fe"]  # 可选数组

# 启用为客户端的 wg-quick 工具生成 .conf 文件
# vpn_clients_dir: /root/wireguard  # 可选

# vpn_clients:                                # 可选数组
#   - name: client1                           # 必须
#     address4: 192.168.2.110/32              # 至少 address4 或 address6 必须提供一个
#     address6: "2a05:1111:0:3:8000::110/80"  # 至少 address4 或 address6 必须提供一个
#     # 如果生成的 .config 文件需要包含私钥
#     # 否则它们将包含一个占位符
#     # 使用 `wg genkey` 生成 ***请使用 ansible-vault 保护***
#     # private_key: "+Noalz2HL9+nYFQpplZF2dYMmc7+MaXGuxMgc/QBbXU="  # 可选
#     # 从上述生成的密钥使用 `wg pubkey`
#     public_key: "RfDKFurwFo/ytXd9Ko5oEy7I7H4hjNBiT1bc1t+V4Wc="              # 必须
#     # 客户端的隧道路由
#     # allowed_ips: ["192.168.2.1/32"]         # 可选
#     # 使用 `wg genpsk` 生成 ***请使用 ansible-vault 保护***
#     # psk: "151ODHNbvmiK/ox+2ndnZbVcfrIMRJjFjHXlb7o3ZeI="  # 可选
#     # mtu, table, preup, postdown - 按照 wg-quick(8) 的说明

警告:请始终使用 ansible-vault 来保护您的变量文件中的私钥和预共享密码。

示例剧本

- hosts: vpn
  roles:
    - role: kravietz.wireguard_vpn
      vpn_private_key: "wIfnNpua6YlD4XzVGUvOCVknCo1LzAF6iGkp7Tho43o="
      vpn_public_key: "+RHdC7oc8O/dojCOMf7CtYBZc5pA2DZPiE4dNRHHhlw="
      vpn_listen_port: 1194
      vpn_address4: "192.168.1.1/24"
      vpn_address6: '2a05:1111:0:3:8000::1/65'
      vpn_clients_dir: /root/wireguard
      vpn_clients:
        - name: client1
          address4: 192.168.1.100/32
          address6: "2a05:1111:0:3:8000::100/128"
          private_key: "iJgcqx21xGETtzFIIdKfD/LvMqswJ2LWUiFPKUBLenw="
          public_key: "T4QbCHfGKLYFdmFeXVfDHP5AYpQ2AZapHIw+ZiCDIHs="

许可证

GPLv3

作者信息

Paweł Krawczyk https://krvtz.net/

关于项目

Configure a IPv4/IPv6 Wireguard-based VPN service using `systemd-networkd` and generate client config files.

安装
ansible-galaxy install kravietz.wireguard_vpn
许可证
Unknown
下载
6.8k
拥有者
Information security, DevOps and DevSecOps professional from Poland living in the UK