# เชื่อมต่อกับเครือข่ายเสมือน (OpenVPN)

คุณสามารถเชื่อมต่ออุปกรณ์ปัจจุบันเข้ากับเครือข่าย OpenVPN ได้โดยการเรียกใช้อินเทอร์เฟซที่ FIRERPA มีให้ FIRERPA รองรับ OpenVPN ในตัว โดยสามารถเลือกใช้โหมดการเข้าสู่ระบบได้ 3 รูปแบบ: โหมดใบรับรอง (CA/CERT/KEY), โหมดชื่อผู้ใช้และรหัสผ่าน (CA/ผู้ใช้/รหัสผ่าน), หรือโหมดใบรับรอง + ชื่อผู้ใช้และรหัสผ่าน (CA/CERT/KEY/ผู้ใช้/รหัสผ่าน) (ทั้งนี้ขึ้นอยู่กับการกำหนดค่าเซิร์ฟเวอร์ OpenVPN ของคุณ) และสามารถทำงานร่วมกับพร็อกซีของระบบได้ โปรดทราบว่าฟังก์ชันนี้ครอบคลุมเฉพาะฟังก์ชันหลักของ OpenVPN เท่านั้น นอกจาก `DNS` แล้ว ยังไม่สามารถใช้ข้อมูลการกำหนดค่าอัตโนมัติอื่นๆ ที่เซิร์ฟเวอร์ส่งมาได้ การกำหนดค่าเหล่านี้รวมถึงแต่ไม่จำกัดเพียง PAC proxy, การกำหนดค่า http proxy เป็นต้น เพื่อลดความยุ่งยากในการติดตั้งเซิร์ฟเวอร์ OpenVPN เราได้จัดเตรียม OpenVPN docker image ที่พร้อมใช้งาน ซึ่งมาพร้อมกับสคริปต์สำหรับสร้างโค้ดเรียกใช้อินเทอร์เฟซและการกำหนดค่าให้เริ่มทำงานอัตโนมัติ

## การเชื่อมต่อ 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
```

ตั้งค่าพารามิเตอร์ที่เกี่ยวข้องกับ `tls-auth` ของ OpenVPN คุณสามารถดูข้อมูลเพิ่มเติมได้จากเอกสารทางการที่ [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 อัตโนมัติ

คุณสามารถทำให้ FIRERPA เชื่อมต่อกับเซิร์ฟเวอร์ VPN โดยอัตโนมัติเมื่อเริ่มต้นทำงานได้โดยการเขียนไฟล์ `properties.local` เนื่องจากการกำหนดค่านี้มีความซับซ้อน เราจึงไม่แนะนำให้เขียนด้วยตนเอง โปรดดูเอกสารเกี่ยวกับการติดตั้งเซิร์ฟเวอร์ OpenVPN ของเราเพื่อเรียนรู้วิธีการสร้างข้อมูลการกำหนดค่า `properties.local` โดยอัตโนมัติ

## การตั้งค่า VPN อย่างรวดเร็ว

โปรดไปที่เอกสาร `การติดตั้งเซิร์ฟเวอร์ OpenVPN` ของเราเพื่อดูวิธีการติดตั้งและใช้งาน