# 連線至虛擬網路 (OpenVPN)

您可以透過呼叫 FIRERPA 提供的介面，將目前裝置連線至 OpenVPN 網路。FIRERPA 內建 OpenVPN 支援使用憑證登入模式 (CA/CERT/KEY)、使用者名稱密碼登入模式 (CA/使用者/密碼)、憑證 + 使用者名稱密碼登入模式 (CA/CERT/KEY/使用者/密碼) 三選一 (同時也要看您的 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     = "密碼"
```

您可以透過這兩個參數來設定您的 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 伺服器。由於此項設定複雜，我們仍然不建議您自行編寫。請查閱我們自行部署 OpenVPN 伺服器的文件，以了解如何自動產生 properties.local 設定資訊。

## 快速架設 VPN

請前往我們的 `部署 OpenVPN 伺服器` 相關文件，查看如何部署及使用。