oukooveu.wireguard
WireGuard Ansible 角色
这是一个简单的角色,用于安装 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
在上面的示例中,主机 node1
和 node4
可以访问所有主机,而主机 node2
和 node3
不能相互访问。配置应是对称的(如果一个节点的连接性被定义,则另一个节点也应定义),且没有额外的检查,请小心。
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
安装
ansible-galaxy install oukooveu.wireguard
许可证
Unknown
下载
162
拥有者