openwisp.wireguard_openwisp
ansible-wireguard-openwisp
Ansibleの役割で、WireGuardとOpenWISP用の管理スクリプトをインストールします。 正しくインストールし、OpenWISPで設定すると、WireGuardのピアはOpenWISPによって自動的に管理され、手動での介入は不要です。
この役割はまた、OpenWISPがVXLAN over WireGuardトンネルを管理できるようにするスクリプトも設定できます。
DebianとUbuntuでテスト済みです。
注意:この手順は、クリーンな仮想マシンまたはLinuxコンテナで使用することを強く推奨します。
サポートされている最小Ansibleバージョン:2.10。
インストールと使用方法
簡単にするために、最も簡単な方法は、ansible-galaxy
を通じてローカルマシンにこの役割をインストールすることです。
ansible-galaxy install openwisp.wireguard_openwisp
この役割ですぐに始めるには、このドキュメントの「SSL証明書を使用した完全な例のプレイブック」セクションの例のプレイブックを参照してください。
注意:この役割はパケットの転送を構成したり、静的または動的ルートをサーバーに追加したりすることはありません。
パケットのルーティング方法は、異なる要因やニーズによって大きく異なる場合があるため、ユーザーが自分のニーズに応じて設定することが求められます。 将来的にデフォルトのルーティング/転送構成を追加するかもしれませんので、興味があれば教えてください。
SSL証明書を使用した完全な例のプレイブック
デフォルトでは、プレイブックはVPNエンドポイント用に自己署名された(信頼されていない)SSL証明書を作成します。信頼されていない証明書を保持する場合、OpenWISPでSSL検証を無効にする必要がありますが、このような設定を本番環境で使用することは推奨されません。このセクションの手順に従って、信頼できる証明書をインストールできます。
まず、WireGuard VPNに有効なドメインを設定する必要があります。これは、インベントリファイル(ホスト)が以下のように見える必要があることを意味します:
[openwisp2_wireguard]
wireguard.yourdomain.com
wireguard.yourdomain.com
のDNSレコードを追加できなければならず、wireguard.yourdomain.com
の代わりにIPアドレスを使用することはできません。
ドメインが設定され、DNSレコードが伝播したら、Ansibleの役割[geerlingguy.certbot](https://galaxy.ansible.com/geerlingguy/certbot/)
をインストールしてください。
ansible-galaxy install geerlingguy.certbot
次に、プレイブックplaybook.yml
を作成し、以下の例のように見えるようにします:
- hosts: openwisp2_wireguard
become: "{{ become | default('yes') }}"
roles:
- geerlingguy.certbot
- openwisp.wireguard_openwisp
vars:
openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
openwisp2_wireguard_vpn_uuid: "ここにVPN UUIDを貼り付けてください"
openwisp2_wireguard_vpn_key: "ここにVPNキーを貼り付けてください"
openwisp2_wireguard_flask_key: "ここにエンドポイント認証トークンを貼り付けてください"
# SSL証明書
openwisp2_wireguard_ssl_cert: "/etc/letsencrypt/live/{{ ansible_fqdn }}/fullchain.pem"
openwisp2_wireguard_ssl_key: "/etc/letsencrypt/live/{{ ansible_fqdn }}/privkey.pem"
# certbot設定
certbot_auto_renew_user: "証明書を更新するための特権ユーザー"
certbot_auto_renew_minute: "20"
certbot_auto_renew_hour: "5"
certbot_create_if_missing: true
certbot_create_standalone_stop_services: []
certbot_certs:
- email: "あなたのメールを貼り付けてください"
domains:
- wireguard.yourdomain.com
[geerlingguy.certbotのドキュメント](https://github.com/geerlingguy/ansible-role-certbot#readme)
を読んで、certbot役割の設定についてより詳しく学んでください。
openwisp.wireguard_openwisp
で提供されるすべてのAnsible変数について知りたい場合は、このドキュメントの「役割変数」セクションを読んでください。
複数のWireGuardインターフェースの設定
この役割を使用すると、同じマシンでOpenWISPによって独立して管理される複数のWireGuardインターフェースを設定できます。次の役割変数がプレイブックごとにユニークであることを確認してください:
openwisp2_wireguard_path
openwisp2_wireguard_flask_port
以下は、複数のWireGuardインターフェースを設定するための二つのプレイを含む例のプレイブックです。
- name: 最初のWireGuardインターフェースの設定
hosts:
- wireguard
become: "{{ become | default('yes') }}"
roles:
- openwisp.wireguard_openwisp
vars:
openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
openwisp2_wireguard_path: "/opt/wireguard-openwisp/wireguard-1"
openwisp2_wireguard_vpn_uuid: "ここにVPN1 UUIDを貼り付けてください"
openwisp2_wireguard_vpn_key: "ここにVPN1キーを貼り付けてください"
openwisp2_wireguard_flask_key: "ここにVPN1エンドポイント認証トークンを貼り付けてください"
openwisp2_wireguard_flask_port: 8081
- name: 二番目のWireGuardインターフェースの設定
hosts:
- wireguard
become: "{{ become | default('yes') }}"
roles:
- openwisp.wireguard_openwisp
vars:
openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
openwisp2_wireguard_path: "/opt/wireguard-openwisp/wireguard-2"
openwisp2_wireguard_vpn_uuid: "ここにVPN2 UUIDを貼り付けてください"
openwisp2_wireguard_vpn_key: "ここにVPN2キーを貼り付けてください"
openwisp2_wireguard_flask_key: "ここにVPN2エンドポイント認証トークンを貼り付けてください"
openwisp2_wireguard_flask_port: 8082
注意点
- OpenWISPでVPNサーバーオブジェクトを作成する際には、
インターフェース名
とポート
が各VPNごとにユニークであることを確認してください。そうしないと、更新スクリプトが競合のため正常に動作しません。
役割変数
この役割には、ニーズに合わせて変更できる多くの変数があります。
以下に、カスタマイズできるすべての変数を示します (これらの変数のデフォルト値も確認してみてください)。
- hosts: openwisp2_wireguard
become: "{{ become | default('yes') }}"
roles:
- openwisp.wireguard_openwisp
vars:
# OpenWISPインスタンスのURL。wireguardが同じホストにインストールされている場合は省略できます。
# OpenWISPとWireGuard用に二つの別々のホストを使用する場合は、ここに
# OpenWISPインスタンスのURL(OpenWISP Controller >= 1.0.0が実行されていること)を指定する必要があります
openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
# アップグレーダースクリプトをインストールするディレクトリ
openwisp2_wireguard_path: "/opt/wireguard-openwisp"
# 「安全でない」SSL接続を使用してVPN構成をダウンロードを許可します。
# 非推奨ですが、falseにしておくことを推奨します。
openwisp2_wireguard_curl_insecure: false
# OpenWISPでVPNサーバーオブジェクトを作成した後に生成されるVPNのUUID
openwisp2_wireguard_vpn_uuid: "ここにVPN UUIDを貼り付けてください"
# OpenWISPでVPNサーバーオブジェクトを作成した後に生成されるVPNのキー
openwisp2_wireguard_vpn_key: "ここにVPNキーを貼り付けてください"
# 更新をトリガーするために使用されるFlaskエンドポイント
openwisp2_wireguard_flask_endpoint: "/trigger-update"
# 更新ポイントの承認キー
openwisp2_wireguard_flask_key: "ここにエンドポイント認証トークンを貼り付けてください"
# Flaskエンドポイントが実行されているポート
openwisp2_wireguard_flask_port: 8081
# Flaskエンドポイントが実行されているホスト
openwisp2_wireguard_flask_host: 0.0.0.0
# Flaskロギングのログレベルを設定します。
# 許可されている値は「INFO」、「WARNING」、「ERROR」です
openwisp2_wireguard_logging_level: "WARNING"
# supervisorからuwsgiを実行するために使用するコマンド
openwisp2_wireguard_uwsgi_command: "{{ openwisp2_wireguard_path }}/env/bin/uwsgi uwsgi.ini"
# 有効なSSL証明書とキーのパスを指定します
# (省略すると自己署名のSSL証明書が生成されます)
openwisp2_wireguard_ssl_cert: "/opt/wireguard-openwisp/ssl/server.crt"
openwisp2_wireguard_ssl_key: "/opt/wireguard-openwisp/ssl/server.key"
# 必要に応じて自己署名のSSL証明書情報をカスタマイズします
openwisp2_wireguard_ssl_country: "US"
openwisp2_wireguard_ssl_state: "California"
openwisp2_wireguard_ssl_locality: "San Francisco"
openwisp2_wireguard_ssl_organization: "IT部門"
# デフォルトでpython3が使用されますが、古いシステムの場合はpython2.7に設定する必要があるかもしれません
openwisp2_wireguard_python: python2.7
# リモートディストリビューションの仮想環境コマンド、通常は自動的に設定されます
openwisp2_wireguard_virtualenv_command: "virtualenv"
# VXLAN接続のipv4.methodを設定し、デフォルトは「link-local」です
openwisp2_wireguard_vxlan_ipv4_method: disabled
openwisp2_wireguard_vxlan_ipv6_method: disabled
トラブルシューティング
必要に応じて、手動で設定チェックをトリガーする方法は以下の通りです:
sudo -u openwisp /opt/wireguard-openwisp/update_wireguard.sh check_config
OpenWISPサーバーからダウンロードされたWireGuard構成を更新するためのアプリケーションのログは、/opt/wireguard-openwisp/vpn_updater.log
にあります。
貢献
OpenWISPの貢献ガイドラインをお読みください。
テストの実行方法
ansible-wireguard-openwisp
に貢献したい場合は、開発環境でテストを実行して、変更が何も壊していないことを確認する必要があります。
そのためには、以下の手順を行います:
ステップ1:ansible-wireguard-openwisp
のクローン
リポジトリをクローンします:
git clone https://github.com/<your_fork>/ansible-wireguard-openwisp.git
ステップ2:Dockerをインストール
まだDockerをインストールしていない場合は、インストールする必要があります(Debian/Ubuntuシステムの例):
sudo apt-get install docker.io
ステップ3:Moleculeと依存関係をインストール
pip install molecule[docker,ansible] yamllint ansible-lint docker
ステップ4:Dockerイメージをダウンロード
docker pull geerlingguy/docker-ubuntu2204-ansible:latest
docker pull geerlingguy/docker-ubuntu2004-ansible:latest
docker pull geerlingguy/docker-debian11-ansible:latest
ステップ5:Moleculeテストを実行
molecule test -s local
エラーメッセージが表示されなければ、テストは正常に実行されたことになります。
プロのヒント:次回のテスト実行を高速化するために、molecule test -s local --destroy=never
を使用してください。
ライセンス
ライセンスをご覧ください。
サポート
OpenWISPサポートチャンネルをご覧ください。
ansible-galaxy install openwisp.wireguard_openwisp