gavika.openvpn
gavika.openvpn
OpenVPNをインストールして設定します。自分自身のOpenVPNサーバーを構築して管理します。
https://www.techchorus.net/blog/run-your-own-openvpn-server/
また、examples
ディレクトリも見てください。
要件
このロールはgavika.easy_rsa
と一緒に使用する必要があります。
ロール変数
変数名 | デフォルト値 | 説明 | 必須ですか? |
---|---|---|---|
easy_rsa_local_pool_directory | /tmp/ca_openvpn_pool | 証明書リクエストや証明書などの一時的な保存場所として使用するディレクトリ | はい |
openvpn_client_users | [] | OpenVPNクライアントのユーザー名のリスト。英数字だけを使用することを推奨します。 | いいえ |
openvpn_port | 1194 | OpenVPNサーバーが動作するポート | はい |
openvpn_protocol | Default: udp 選択肢: tcp または udp | 使用するネットワークプロトコル | はい |
openvpn_server_ip_address | OpenVPNサーバーのIPアドレス | 生成されるクライアント証明書で使われる値 | はい |
openvpn_generated_configurations_local_pool | false (ブーリアン) | 生成されたクライアント設定をローカルプールディレクトリにコピーするかどうか | はい |
openvpn_route_all_traffic | True(ブーリアン) | すべてのインターネットトラフィックをOpenVPNサーバー経由でルーティングするか | はい |
openvpn_use_opendns_public_dns | True(ブーリアン) | クライアントにOpenDNS DNSサーバーをプッシュするか | はい |
openvpn_additional_configs | [] | 追加のOpenVPNサーバー設定。辞書のリスト。各リスト項目はキーと値のペアです。例: openvpn_additional_configs: - push: "topology subnet" - push: "route 192.168.4.5 255.255.255.255" |
はい |
openvpn_default_firewalld_zone | public | Firewalld設定で使用するゾーン名。ELにのみ関連 | はい |
gavika.easy_rsa
とgavika.openvpn
を使用してCAサーバーとOpenVPNサーバーを構築するには、必要に応じてロールを数回実行する必要があります。必要な回数と順序でロールを実行する責任があります。ドキュメントに例があります。一般的には、open-vpn-playbook.yml
を2回、easy-rsa-playbook.yml
を1回実行する必要があります。
プレイブック実行フロー:
フルサイズのフローチャート
プレイブックの実行例:
# openvpn: ローカルプールディレクトリをセットアップし、OpenVPNをインストールし、サーバーリクエストとクライアントリクエストを作成する
ansible-playbook -i my-inventory.yml openvpn-playbook.yml
# easy_rsa: CAサーバーを構築し、リクエストをインポートして署名し、CA証明書を取得する
ansible-playbook -i my-inventory.yml easy-rsa-playbook.yml
# openvpn: 署名されたリクエストを使用し、OpenVPNを設定し、クライアント設定を生成する
ansible-playbook -i my-inventory.yml openvpn-playbook.yml
依存関係
gavika.openvpn
ロールはgavika.easy_rsa
に依存しています。
次のコレクションが必要です:
community.aws
boto3
Pythonライブラリが必要です。
gavika.openvpn
ロールはgavika.easy_rsa
と共に使用する必要があります。
CAサーバーを設定するためのプレイブックの例: easy-rsa-playbook.yml
---
- hosts: ca_server
become: true
vars:
easy_rsa_req_country: "IN"
easy_rsa_req_province: "KA"
easy_rsa_req_city: "バンガロール"
easy_rsa_req_org: "Gavika"
easy_rsa_req_email: "[email protected]"
easy_rsa_req_ou: "Gavika"
easy_rsa_local_pool_directory: /tmp/ca_openvpn_pool # スラッシュ不要
easy_rsa_server_request_to_import: "server.req"
easy_rsa_ca_server_mode: true
roles:
- role: gavika.easy_rsa
OpenVPNサーバーをインストールするためのプレイブックの例: openvpn-playbook.yml
---
- hosts: openvpn_server
become: true
vars:
openvpn_client_users:
- janedoe
- johndoe
easy_rsa_req_country: "IN"
easy_rsa_req_province: "KA"
easy_rsa_req_city: "バンガロール"
easy_rsa_req_org: "私の組織"
easy_rsa_req_email: "[email protected]"
easy_rsa_req_ou: "私の組織単位"
roles:
- role: gavika.easy_rsa
- role: gavika.openvpn
インベントリの例: my-inventory
:
all:
hosts:
placeholder
children:
ca_server:
hosts:
dev-ca-01.example.com:
ansible_become: true
ansible_user: ubuntu
ansible_host: 192.168.3.5
easy_rsa_ca_server_mode: true
ansible_python_interpreter: /usr/bin/python3
openvpn_server:
hosts:
dev-vpn-01.example.com:
ansible_python_interpreter: /usr/bin/python3
ansible_become: true
ansible_user: ubuntu
ansible_host: 192.168.3.6
openvpn_server_ip_address: 192.168.3.6
ライセンス
Apache License, Version 2.0
著者情報
Sudheera Satyanarayana
Gavika: https://www.gavika.com
Twitter: https://www.twitter.com/bngsudheer
Github: https://github.com/bngsudheer