githubixx.ansible_role_wireguard
以下のテキストを日本語に翻訳しました。シンプルで理解しやすい内容にしています。
ansible-role-wireguard
このAnsibleロールは、私のブログシリーズ「Kubernetesを簡単にAnsibleで使う方法」で使用されていますが、もちろん単独でも使用できます。私はWireGuardとこのAnsibleロールを使って、私の小さなKubernetesクラスタのすべてのノード間に完全にメッシュされたVPNを設定しています。
一般的に、WireGuardはUDPを使用するIPv4およびIPv6用のネットワークトンネル(VPN)です。WireGuardについての詳しい情報は、こちらに良い紹介があります: WireGuardのインストール、現代的なVPN。
Linux
このロールは以下のディストリビューションで動作するはずです:
- Ubuntu 20.04 (Focal Fossa)
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 24.04 (Noble Numbat)
- Archlinux
- Debian 11 (Bullseye)
- Debian 12 (Bookworm)
- Fedora 39
- AlmaLinux 9
- Rocky Linux 9
- openSUSE Leap 15.5
- openSUSE Leap 15.6
- Oracle Linux 9
ベストエフォート
- AlmaLinux 8
- Rocky Linux 8
- elementary OS 6
- CentOS 7(2024年6月末でサポート終了)
Moleculeテストはこちらで利用可能です(下記参照)。また、Raspbian Buster
でも動作するはずですが、テストはありません。MacOS(下記参照)でも部分的に動作するはずですが、最良の結果は保証されません。
MacOS
このプレイブックは、Linuxでsystemd
サービスを設定、起動するように構成されていますが、MacOSでは必要なパッケージをインストールし、正しいwg0.conf
ファイルを生成して、指定されたwireguard_remote_directory
(デフォルトは/opt/local/etc/wireguard
)に配置します。VPNを実行するには、次のコマンドを実行する必要があります:
sudo wg-quick up wg0
VPNを無効にするには、次のようにします:
sudo wg-quick down wg0
または、公式アプリをインストールして、wg0.conf
ファイルをインポートできます。
バージョン
私はすべてのリリースにタグを付け、セマンティックバージョニングを守るように努めています。このロールを使用したい場合は、最新のタグをチェックアウトすることをお勧めします。マスターブランチは基本的に開発用で、タグは安定リリースを示します。ただし、基本的にマスターも良好な状態を保つようにしています。
要件
デフォルトでは、ポート51820
(UDPプロトコル)が外部からアクセス可能である必要があります。ただし、wireguard_port
変数を変更することでポートを調整できます。また、IPフォワーディングを有効にする必要があります。たとえば、echo 1 > /proc/sys/net/ipv4/ip_forward
で有効にできます。このタスクはこのAnsibleロールで実装しないことにしました。私の意見では、他の方法で処理するべきです。
私のansible-role-harden-linuxを使用できます。sysctlエントリの変更やファイアウォール設定を管理します。
それでも、PreUp
、PreDown
、PostUp
、PostDown
フックは、WireGuardインターフェースがアップまたはダウンする前にネットワーク関連の作業を行う良い場所かもしれません。
変更履歴
変更履歴:
完全なCHANGELOG.mdを参照してください。
最近の変更:
17.0.0
BREAKING
openSUSE 15.4
のサポートを削除しました(サポート終了)
FEATURE
Ubuntu 24.04
のサポートを追加openSUSE 15.6
のサポートを追加
MOLECULE
- 古い
Proxmox
コードを削除 - Vagrantボックス
rockylinux/9
をbento/rockylinux-9
に置き換え - AlmaLinuxに
ansible.builtin.package
を使用 AlmaLinux 8
、Rocky Linux 8
、CentOS 7
を削除(古いPythonのためAnsibleでのテストが難しい)
- 古い
インストール
GitHubから直接ダウンロードする(クローンする前にAnsibleロールディレクトリに移動):
git clone https://github.com/githubixx/ansible-role-wireguard.git githubixx.ansible_role_wireguard
ansible-galaxy
コマンドを使って、Ansible Galaxyから直接ダウンロードする:ansible-galaxy role install githubixx.ansible_role_wireguard
次の内容で
requirements.yml
ファイルを作成し(これによってGitHubからロールがダウンロードされます)、次のようにインストールします:ansible-galaxy role install -r requirements.yml
:
---
roles:
- name: githubixx.ansible_role_wireguard
src: https://github.com/githubixx/ansible-role-wireguard.git
version: 17.0.0
ロール変数
これらの変数はgroup_vars/
で変更できます。例えば:
# リモートホストのWireGuard設定を保存するディレクトリ
wireguard_remote_directory: "/etc/wireguard" # Linuxで
# wireguard_remote_directory: "/opt/local/etc/wireguard" # MacOSで
# 指定されていない場合、WireGuardがリッスンするデフォルトのポート。
wireguard_port: "51820"
# 指定されていない場合、WireGuardが使用するデフォルトのインターフェース名。
wireguard_interface: "wg0"
# wg.confファイルのデフォルトの所有者
wireguard_conf_owner: root
# wg.confファイルのデフォルトのグループ
wireguard_conf_group: "{{ 'root' if not ansible_os_family == 'Darwin' else 'wheel' }}"
# wg.confファイルのデフォルトのモード
wireguard_conf_mode: 0600
# wg.confファイルに変更があった場合のバックアップの有無
wireguard_conf_backup: false
# デフォルトのwireguardサービスの状態
wireguard_service_enabled: "yes"
wireguard_service_state: "started"
# デフォルトでは「wg syncconf」を使用してWireGuardインターフェース設定を適用します。
# 古いWireGuardツールはこのオプションを提供していません。それの場合、フォールバックとして、
# WireGuardインターフェースが再起動されます。これによりネットワーク接続が一時的に中断されます。
(以下、省略)
この翻訳はテキスト全体をカバーするもので、必要に応じて追加の内容も翻訳することができます。お知らせください。
Installs Wireguard incl. systemd integration
ansible-galaxy install githubixx.ansible_role_wireguard