# 仮想ネットワークへの接続 (OpenVPN)

FIRERPAが提供するインターフェースを呼び出すことで、現在のデバイスをOpenVPNネットワークに接続できます。FIRERPAは、証明書ログインモード（CA/CERT/KEY）、ユーザー名/パスワードログインモード（CA/ユーザー/パスワード）、証明書 + ユーザー名/パスワードログインモード（CA/CERT/KEY/ユーザー/パスワード）の3つのうち1つをサポートしています（これはOpenVPNサーバーの設定にも依存します）。これはシステムプロキシと共存できます。注意点として、この機能はOpenVPNの主要な機能のみを含んでおり、`DNS`設定を除き、サーバーからプッシュされる他の自動設定情報を一時的に適用することはできません。これらの設定には、PACプロキシ、HTTPプロキシ設定などが含まれますが、これらに限定されません。OpenVPNサーバーをインストールする手間を省くため、すぐに使えるOpenVPNのDockerイメージを提供しています。これには、インターフェース呼び出しコードと自動起動設定を生成するスクリプトが付属しています。

## VPNへの接続

この接続設定を自動生成する方法については、まず `OpenVPNサーバーのデプロイ` ドキュメントを参照することをお勧めします。手動で記述すると、間違いが発生する可能性が非常に高くなります。以下では、主要なインターフェースの呼び出し方法のみを紹介します。

```python
profile = OpenVPNProfile()
# ここに自己デプロイしたサーバーから自動生成されたコードを貼り付けます
d.start_openvpn(profile)
```

## VPNの切断

VPNを切断する呼び出し方法も非常に簡単で、これだけでOpenVPNを閉じることができます。

```python
d.stop_openvpn()
```

## 完全なパラメータ

以下は、VPNインターフェースの完全なパラメータ設定情報です。ここでは各パラメータの意味を説明するだけです。このインターフェースのパラメータを自分で記述することはお勧めしません。自己デプロイしたサーバーを通じてコードを生成してください。


グローバルVPNを有効にするかどうか。有効にすると、システム内のすべてのトラフィックがVPNサーバーから出ます。

```python
profile.all_traffic  = False
```

サーバー側で有効になっている接続プロトコルです。`OpenVPNProto.UDP` または `OpenVPNProto.TCP` を選択できます。このオプションはサーバーの設定によって決まります。

```python
profile.proto        = OpenVPNProto.UDP
```

OpenVPNのユーザー名とパスワード認証のためのユーザー名とパスワードの設定です。

```python
profile.login        = "ユーザー名"
profile.password     = "パスワード"
```

これら2つのパラメータを使用して、OpenVPNサーバーのアドレスとポートを設定できます。

```python
profile.host         = サーバーアドレス
profile.port         = サーバーポート
```

サーバー側のチャネル暗号化方式を設定します。インターフェースは `AES_128_GCM`、`AES_256_GCM`、`CHACHA20_POLY1305`、`AES_128_CBC`、`AES_256_CBC` の暗号化方式をサポートしています。

```python
profile.cipher       = OpenVPNCipher.AES_256_GCM
```

OpenVPNのtls-auth関連パラメータを設定します。詳細については、公式ドキュメント [openvpn.net/community-resources/reference-manual-for-openvpn-2-5](https://openvpn.net/community-resources/reference-manual-for-openvpn-2-5/) を参照してください。

```python
profile.tls_encryption = OpenVPNEncryption.TLS_CRYPT
profile.tls_key_direction = OpenVPNKeyDirection.KEY_DIRECTION_NONE
profile.tls_key      = "-----BEGIN OpenVPN Static key V1-----"
```

OpenVPNクライアント証明書、クライアント秘密鍵、サーバー証明書の関連設定です。

```python
profile.ca           = "-----BEGIN CERTIFICATE-----"
profile.cert         = "-----BEGIN CERTIFICATE-----"
profile.key          = "-----BEGIN PRIVATE KEY-----"
```

## VPNへの自動接続

`properties.local` を記述することで、FIRERPA起動時に自動的にVPNサーバーに接続させることができます。この設定は複雑なため、やはり自分で記述することはお勧めしません。`properties.local` 設定情報を自動生成する方法については、自己デプロイOpenVPNサーバーのドキュメントを参照してください。

## VPNのクイックセットアップ

デプロイ方法と使用方法については、`OpenVPNサーバーのデプロイ` 関連ドキュメントを参照してください。