mawalu.wireguard_private_networking
AnsibleとWireGuardによるプライベートサーバー間ネットワーク
この役割は、複数のサーバー間に速くて安全、そしてプロバイダーに依存しないプライベートネットワークを展開することを可能にします。これは、プライベートネットワークを提供しないプロバイダーにとって便利で、また複数の地域やプロバイダーに分散したサーバーを接続したい場合にも役立ちます。
方法
この役割は、DebianまたはUbuntuにWireGuardをインストールし、すべてのサーバーをピアとして追加することで、すべてのサーバー間にメッシュを作成し、wg-quickのsystemdサービスを設定します。
インストール
インストールはAnsible Galaxyを使用して行えます:
$ ansible-galaxy install mawalu.wireguard_private_networking
設定
この役割をインストールし、ネットワークに参加する各ホストにvpn_ip
変数を割り当てて役割を実行します。ファイアウォールでVPNポート(デフォルトは5888)が許可されていることを確認してください。以下は簡単な設定の例です:
オプションで、各ホストにpublic_addr
を設定できます。このアドレスは、インベントリ内のアドレスの代わりにWireGuardのピアに接続するために使用されます。WireGuardが使用しているネットワークとは異なるネットワークから設定する場合に役立ちます。例えば、AnsibleがLAN経由でピアに接続する場合などです。
# インベントリホストファイル
wireguard:
hosts:
1.1.1.1:
vpn_ip: 10.1.0.1/32
public_addr: "example.com" # オプション
2.2.2.2:
vpn_ip: 10.1.0.2/32
# プレイブック
- name: WireGuardメッシュの構成
hosts: wireguard
remote_user: root
roles:
- mawalu.wireguard_private_networking
# プレイブック(クライアント設定あり)
- name: WireGuardメッシュの構成
hosts: wireguard
remote_user: root
vars:
client_vpn_ip: 10.1.0.100
client_wireguard_path: "~/my-client-config.conf"
roles:
- mawalu.wireguard_private_networking
追加設定
上書き可能な小数の役割変数があります。
wireguard_port: "5888" # サーバー間接続に使用するポート
wireguard_path: "/etc/wireguard" # WireGuardの設定ファイルの場所
wireguard_network_name: "private" # 設定ファイルとwg-quickのために使用する名前
wireguard_mtu: 1500 # wg-quickファイルに設定するオプションのMTU。デフォルトでは設定されていません。ホストごとに設定できます。
debian_enable_backports: true # DebianマシンにDebianバックポートリポジトリを追加するかどうか
# Raspberry Pi Zeroサポート
# カーネルヘッダーとWireGuardの手動コンパイルが必要、フラグでオプトイン、`community.general`コレクションをインストール
# 注意:再起動を引き起こす可能性があります。
allow_build_from_source: true
wireguard_sources_path: "/var/cache" # 手動ビルドが必要な場合にWireGuardのソースをクローンする場所
client_vpn_ip: "" # 設定すると、ローカルホストの指定したパスに追加のWireGuard設定ファイルが生成されます
client_wireguard_path: "~/wg.conf" # ローカルホストにクライアント設定を書き込むパス、client_vpn_ipが設定されている場合
# 各サーバーに追加されるピアのリスト
wireguard_additional_peers:
- comment: martin
ip: 10.2.3.4
key: your_wireguard_public_key
- comment: other_network
ip: 10.32.0.0/16
key: their_wireguard_public_key
keepalive: 20
endpoint: some.endpoint:2230
wireguard_post_up: "iptables ..." # PostUpフックコマンド
wireguard_post_down: "iptables" # PostDownフックコマンド
テスト
この役割にはmoleculeを使用して作成される小さなテストセットアップがあります。テストを実行するには、moleculeのインストールガイドに従い、マシンでDockerデーモンが実行されていることを確認し、molecule test
を実行してください。
参加する
問題を見つけたり改善案があれば、自由に問題を報告したりMRを作成してください。特に、追加のオペレーティングシステムやより多くのテストをサポートするMRを歓迎します。
Build your own multi server private network using wireguard and ansible
ansible-galaxy install mawalu.wireguard_private_networking