openwisp.wireguard_openwisp

ansible-wireguard-openwisp

ビルドステータス

ギッタールーム

Ansibleの役割で、WireGuardとOpenWISP用の管理スクリプトをインストールします。 正しくインストールし、OpenWISPで設定すると、WireGuardのピアはOpenWISPによって自動的に管理され、手動での介入は不要です。

この役割はまた、OpenWISPがVXLAN over WireGuardトンネルを管理できるようにするスクリプトも設定できます。

DebianUbuntuでテスト済みです。

注意:この手順は、クリーンな仮想マシンまたは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に貢献したい場合は、開発環境でテストを実行して、変更が何も壊していないことを確認する必要があります。

そのためには、以下の手順を行います:

ステップ1ansible-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サポートチャンネルをご覧ください。

プロジェクトについて

Role to install OpenWISP's Wireguard Updater

インストール
ansible-galaxy install openwisp.wireguard_openwisp
ライセンス
bsd-3-clause
ダウンロード
505
所有者
Modular and Programmable Open Source Network Management System for Linux OpenWrt.