oukooveu.wireguard

WireGuard Ansibleロール

Molecule

これは、WireGuardをインストールし、すべてのプレイホスト間でデフォルトのフルメッシュ接続を構成するためのシンプルなロールです。

このロールは、こちらの実装に影響を受けましたが、メンテナンスされていない状態でPRが受け付けられなかったため、ゼロから書き直すことが決定されました。

要件

特別な要件はありません。wireguard_vpn_ipのデフォルトはないため、この変数は各ホストで定義する必要があります。

ロールの変数

変数 説明 デフォルト値
wireguard_vpn_ip プライベートアドレス N/A、ホスト変数を通じて提供する必要があります
wireguard_port リッスンするポート 51820
wireguard_path 設定ファイルのパス /etc/wireguard
wireguard_public_ip パブリックアドレス {{ ansible_default_ipv4.address }}
wireguard_post_up 起動後のスクリプト N/A
wireguard_post_down 停止後のスクリプト N/A
wireguard_network ネットワークトポロジー、下のサンプル参照 {}
wireguard_network_name インターフェース名 wg0
wireguard_additional_peers 追加のピア []
wireguard_mtu_enabled MTUオプション管理 false
wireguard_mtu MTUオプションの値 N/A
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は互いにアクセスできません。構成は対称である必要があります(1つのノードの接続性が定義されていれば、別のノードにも定義する必要があります)ので注意してください。

モレキュールテスト

ローカルでテストを実行するには:

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
所有者