Configuration examples: OpenVPN Multi-site โดยที่ Local Device ใน Client Site สามารถเชื่อมต่อกันได้
ในการสร้าง VPN Tunnel เรามักสร้างเพื่อต้องการสร้างการเชื่อมต่อให้ Client ใน OpenVPN ของคุณสามารถเข้าถึงอุปกรณ์ที่อยู่ในเครือข่ายส่วนตัว (LAN) ของอุปกรณ์ VPN Server (Client to Site) หรือต้องการให้อุปกรณ์ที่อยู่ในเครือข่ายส่วนตัว (LAN) ของ Client ใน OpenVPN สามารถเข้าถึงอุปกรณ์ที่อยู่ในเครือข่ายส่วนตัว (LAN) ของอุปกรณ์ VPN Server (Site-to-Site)
และอีกการเชื่อมต่อที่มีลูกค้าถามกันเข้ามามากเลยก็คือการเชื่อมต่อ VPN แบบ multi-site โดยที่ต้องให้อุปกรณ์ที่อยู่ในเครือข่ายส่วนตัว (LAN) ของ Client ใน OpenVPN แต่ละ Site สามารถเชื่อมต่อกันได้ด้วยสามารถทำได้ไหม ต้องทำอย่างไร วันนี้เรามาดูตัวอย่างการตั้งค่ากันค่ะ
Diagram
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 1 Multi-site OpenVPN](https://iiot.riverplus.com/wp-content/uploads/2021/10/OpenVPN-Multi-site-Diagram_2-1024x541.jpg)
อุปกรณ์ที่ใช้
Teltonika RUT955 จำนวน 3 ตัว ตั้งค่าเป็น VPN Server 1 ตัว และอีก 2 ตัวเป็น VPN Client
Computer 3 เครื่อง เป็นอุปกรณ์ที่อยู่ในเครือข่ายส่วนตัว (LAN) ของ VPN ทั้ง 3 ฝั่ง
Public IP Address สำหรับ VPN Server เพื่อการเชื่อมต่อของ VPN Client ทั้ง 2 ฝั่ง
การตั้งค่า
1. Create TLS certificates สำหรับการเชื่อมต่อตามวิธีการนี้ >> การสร้าง OpenVPN TLS certificate<<
โดย run คำสั้ง Create Client Certificates & Key ตามจำนวน VPN client ที่ต้องการนำมาเชื่อมต่อ และแน่นอนถ้าจะทำ VPN แบบ Site-to-Site ก็ run คำสั้ง Create Client Certificates & Key เพียงครั้งเดียว ไฟล์ Certificates และ Keys ที่ใช้ในการตั้งค่าทั้งหมดในตัวอย่างนี้จะมีดังต่อไปนี้
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 2 TLS Cetificate & Key](https://iiot.riverplus.com/wp-content/uploads/2021/10/Cetificate-Key-sample-file-1024x158.jpg)
2.ตั้งค่า Router ที่ทำหน้าที่เป็น VPN Server โดยไปที่แถบ Menu Service → VPN → OpenVPN (IP WAN ของ RUT Router ที่ทำหน้าที่เป็น VPN Server ต้องเป็น Public IP)
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 3 9bc47363 8bd3 47f6 9e8d 00095a1d729b#media blob url=true&id=1023669d 3c56 469a 82d1 36432a559bb8&collection=contentId 2250900276&contextId=2250900276&mimeType=image%2Fpng&name=image 20210824 062941](blob:https://riverplus.atlassian.net/9bc47363-8bd3-47f6-9e8d-00095a1d729b#media-blob-url=true&id=1023669d-3c56-469a-82d1-36432a559bb8&collection=contentId-2250900276&contextId=2250900276&mimeType=image%2Fpng&name=image-20210824-062941.png&size=78518&width=1738&height=519&alt=)
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 4 Create VPN Server](https://iiot.riverplus.com/wp-content/uploads/2021/10/Create-VPN-Server-1024x330.jpg)
จากนั้นไปที่ Add New Instance ตั้งชื่อ VPN Server ใน New Configuration Name และเลือก Role เป็น Server จากนั้นกดปุ่ม Add
หลังจาก Add เข้ามาแล้ว VPN Server Configuration ที่เราสร้างขึ้นจะแสดงอยู่ด้านบนของส่วน Add New Instance ให้ Click ที่รูปดินสอ เพื่อเข้าสู่หน้า Setting ค่าฝั่ง VPN Server
VPN Server Setting
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 5 SetVPNType](https://iiot.riverplus.com/wp-content/uploads/2021/10/Setting-Type-1024x428.png)
ในส่วนแรก ให้ Enable การทำงาน
- เลือก Mode การเชื่อมต่อเป็น TUN(tunnel) >>อ่านเพิ่มเติม OpenVPN TUN vs TAP<<
- เลือก Protocol /Port ตามต้องการ (และในฝั่ง Clients ต้องตั้งค่า ให้เหมือนกัน (same authentication, same port, same protocol, etc.)
- Authentication เลือกเป็น TLS (การทำ VPN แบบ multi-site ต้องใช้ TLS)
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 6 Virtual Network IP](https://iiot.riverplus.com/wp-content/uploads/2021/10/image-20210824-063034-1024x388.png)
ในส่วนนี้ตั้งค่าตามตัวอย่างนี้ได้เลย ในส่วนของ
- Client-to-Client เป็นส่วนสำคัญที่จะเปิดให้ Local Device ในฝั่ง Client Site สามารถเชื่อมต่อกันได้
- Virtual Network IP เป็น Virtual IP ที่การเชื่อมต่อ OpenVPN ใช้ในระบบสามารถตั้งได้ตามความต้องการ User ไม่ได้ใช้ IP นี้ในการเข้าถึงอุปกรณ์จริง
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 7 image 20210824 063055](https://iiot.riverplus.com/wp-content/uploads/2021/10/image-20210824-063055.png)
- Push option เป็นการ add route ให้ใส่ route IP subnet ฝั่ง Lan Local ของ RUT ทุกตัว ทั้งที่ทำหน้าที่เป็น Server และ Client
ในส่วนอื่นๆ ตั้งค่าต่างๆ ดังภาพ
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 8 Add Certificate](https://iiot.riverplus.com/wp-content/uploads/2021/10/image-20210824-063232-1024x296.png)
แนบไฟล์ TSL Certification และ Key ที่ฝั่ง Server ต้องการดังภาพ
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 9 TLS Client](https://iiot.riverplus.com/wp-content/uploads/2021/10/image-20211015-094545-1024x420.png)
TLS Client เป็นการระบุตัวตน ของ Client ด้วย Common Names (CN) ซึ่งอยู่ใน client certificate file ใช้ในการผูก VPN Address ที่ VPN client ได้รับจาก VPN Server เข้ากับ LAN addresses ของ Client ทำให้ VPN Server รู้จัก LAN IP address ของ Client
Virtual Local Endpoint เป็น Client’s local address ใน virtual network ที่ VPN Server แจกให้ VPN Client
Virtual Remote Endpoint เป็น Client’s remote address ใน virtual network ที่ VPN Server แจกให้ VPN Client เปรียบเสมือน IP ของ Gateway ในฝั่ง virtual network
ทั้ง Virtual Local Endpoint และ Virtual Remote Endpoint เราสามารถกำหนดให้กับ Client ไว้ได้เลย เมื่อ Client ตาม Common Name(CN) นั้น เชื่อมต่อเข้ามาก็จะได้รับ Virtual IP ดังกล่าว
- โดยแต่ละ Client virtual ห้ามซ้ำกัน
- และ IP ของ Virtual Gateway (Virtual Remote Endpoint) ต้องเป็นเลข IP ที่อยู่ก่อน Virtual Local Endpoint จึงแนะนำให้ใช้คู่เลข IP ที่อยู่ติดกันดังภาพตัวอย่างด้านบน
การตั้งค่าทั้งหมดเหล่านี้ เมื่อ VPN client เชื่อมต่อเข้ามาจะมีการ Add Route ไปด้วย ทำให้การเชื่อมต่อไปยัง เครือข่ายส่วนตัว (LAN) ภายใต้ Client จะเชื่อมต่อได้ในทันที ไม่ต้อง Add Route หรือตั้งค่า firewall เพิ่ม
- สามารถสร้างเพิ่มขึ้นได้เท่ากับจำนวน Client ในระบบ โดยตั้งชื่อและ Add ในส่วน Add New Instance
VPN Client Setting
สำหรับการตั้งค่าในฝั่งของ Client เริ่มจากแถบ Menu Service → VPN → OpenVPN เช่นเดียวกับ Server แต่เลือก Role เป็น Client
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 10 vpnClient1](https://iiot.riverplus.com/wp-content/uploads/2021/10/vpnClient1-1024x281.png)
VPN Client1 Setting
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 11 Client1 Setting](https://iiot.riverplus.com/wp-content/uploads/2021/10/Client1MainSeting1-1024x512.png)
ในส่วนแรก ให้ Enable การทำงาน
- เลือก Mode การเชื่อมต่อเป็น TUN(tunnel)
- ตั้งค่าทุกอย่างให้เหมือนกันฝั่ง Server
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 12 Remote Host](https://iiot.riverplus.com/wp-content/uploads/2021/10/RemoteIPClient-1024x385.jpg)
ในส่วนที่ 2 ตั้งค่าดังภาพ
- Remote host/IP Address คือ WAN IP ที่ต้องเป็น Public IP ของฝั่ง Server
- Remote network IP Address คือ LAN Subnet ของฝั่ง Server
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 13 ClientCertificate](https://iiot.riverplus.com/wp-content/uploads/2021/10/ClientCertificate.png)
ในส่วนที่ 3 ของ Client กำหนดค่าดังภาพ และแนบไฟล์ Certificate และ Client1 Certificate & Key ไฟล์ เป็นอันเสร็จสิ้น การ Setting สำหรับ Client1 สามารถ Save & Apply ได้เลย
VPN Client2 Setting
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 14 Client2](https://iiot.riverplus.com/wp-content/uploads/2021/10/VPNClient2-1024x298.png)
สำหรับการตั้งค่าที่ฝั่งของ Client2 การ Setting สามารถตั้งค่าทุกอย่างเหมือน Client1 ได้เลย ต่างกันเพียง
- Name
- Certificate & Key ต้องใช้ของที่เราสร้างมาสำหรับ Client2
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 15 Client2 Certificate](https://iiot.riverplus.com/wp-content/uploads/2021/10/Certificate-1024x260.png)
เมื่อ Save & Apply ในส่วนของการ Setting Client แต่ละตัวแล้วสามารถตรวจสอบสถานะการเชื่อมต่อของ Client ได้จากหน้า OpenVPN Configuration รอไม่เกิน 3 นาที Status จะเปลี่ยนจาก Disconnected เป็น Connected
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 16 VPN Client Status](https://iiot.riverplus.com/wp-content/uploads/2021/10/VPN-ClientStatus-1024x54.jpg)
![การตั้งค่า Multi-site VPN ให้ Local Device ในแต่ละ Site สามารถเชื่อมต่อกันได้ ด้วย OpenVPN 14 Client2](https://iiot.riverplus.com/wp-content/uploads/2021/10/VPNClient2-1024x298.png)
เพียงทำตามขั้นตอนทั้งหมดนี้คุณก็จะได้ Multi-site VPN โดยที่ Local Device ใน Client Site และ Server Site สามารถเชื่อมต่อกันได้ เสมือนกับว่าอยู่ในเครือข่ายเดียวกัน