oukooveu.wireguard

WireGuard Ansible 角色

Molecule

这是一个简单的角色,用于安装 WireGuard 并默认配置所有主机之间的全网连接。

该角色的灵感来源于 这个实现,但由于其处于未维护状态且不接受 PR,因此决定从头重写。

需求

没有特殊要求。wireguard_vpn_ip 没有默认值,必须为每个主机定义该变量。

角色变量

变量 描述 默认值
wireguard_vpn_ip 私有地址 不适用,必须通过主机变量提供
wireguard_port 监听端口 51820
wireguard_path 配置文件路径 /etc/wireguard
wireguard_public_ip 公共地址 {{ ansible_default_ipv4.address }}
wireguard_post_up 启动后脚本 不适用
wireguard_post_down 停止后脚本 不适用
wireguard_network 网络拓扑,见下面示例 {}
wireguard_network_name 接口名称 wg0
wireguard_additional_peers 额外的对等体 []
wireguard_mtu_enabled 管理 MTU 选项 false
wireguard_mtu MTU 选项值 不适用
wireguard_fw_mark_enabled 管理 FwMark 选项 false
wireguard_fw_mark FwMark 选项值 {{ wireguard_port }}
wireguard_hosts_enabled 将自己和 WireGuard 对等体添加到 /etc/hosts false
wireguard_hosts_domain /etc/hosts 记录的域名 wg.internal

FwMark WireGuard 选项在你需要过滤所有未加密流量时可能很有用,例如:

PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT

示例剧本

全网连接

- name: 设置 WireGuard 全网连接
  hosts: cluster
  roles:
    - role: oukooveu.wireguard

自定义网络拓扑与额外对等体

- name: 设置 WireGuard 自定义网络
  hosts: cluster
  vars:
    wireguard_network:
        node1:
            - node2
            - node3
            - node4
        node2:
            - node1
            - node4
        node3:
            - node1
            - node4
        node4:
            - node1
            - node2
            - node3
    wireguard_additional_peers:
        - ip: 192.168.100.1
          key: s3cr3t
          endpoint: 10.0.100.1
          keepalive: 15
          comment: '注释'
  roles:
    - role: oukooveu.wireguard

在上面的示例中,主机 node1node4 可以访问所有主机,而主机 node2node3 不能相互访问。配置应是对称的(如果一个节点的连接性被定义,则另一个节点也应定义),且没有额外的检查,请小心。

Molecule 测试

要在本地运行测试:

python -m venv .venv
. .venv/bin/activate
pip install -r molecule/default/requirements.txt
molecule test

要为非默认镜像(debian:11)运行测试,请将 MOLECULE_IMAGE 环境变量设置为适当值,例如:

export MOLECULE_IMAGE=rockylinux:9

要清除测试环境,请运行 molecule destroy

许可证

Apache 2.0

关于项目

wireguard ansible role

安装
ansible-galaxy install oukooveu.wireguard
许可证
Unknown
下载
162
拥有者