VPN(Virtual Private Network) เป็นการขยาย network ภายในข้ามการใช้งานเครือข่ายภายนอก ให้เราสามารถส่งข้อมูลใดๆจาก public network ไปยังเครือข่ายภายในได้ โดยเครือข่าย VPN จะถูกทำเป็นท่อการเข้ารหัสระหว่างเรากับ VPN Server จากนั้นจะเป็นหน้าที่ของ VPN Server อีกทีว่าจะให้ traffic ดังกล่าวไปทางใด

 

โดยเราสามารถ setup VPN Server ใน Ubuntu 16.04 โดยทำดังนี้

1. ติดตั้ง Required Application

2. สร้าง CA Directory

3. กำหนดค่าการสร้าง certificate ใน vars

กำหนดชื่อของ CA ในการสร้าง

4. สร้าง Certificate Authority

5. สร้าง Server Certificate

สร้าง Diffie-Hellman keys เพื่อใช้ขณะการแลกเปลี่ยน key

สร้าง HMAC Signature เพื่อเพิ่มความแข็งแกร่งให้กับการตรวจสอบของ TLS

6. สร้าง Client Certificate และ key pair สำหรับใช้ authentication

7. Copy Certificate และ key ต่างๆของ Server จาก ~/openvpn-ca/keys/ ไปไว้ที่ /etc/openvpn

8. แตกไฟล์ sample openvpn configuration มาจาก /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz

9. กำหนดใน server.conf ดังนี้

10. กำหนด IP Forwarding และ disable IPv6 ใน sysctl.conf

จากนั้นอ่านและใช้งานไฟล์ sysctl.conf

11. Start VPN

12. ตรวจสอบสถานะของ VPN

13. กำหนดให้ autostart openvpn server

14. สร้าง Configuration File ของ Client

15. สร้าง Client Configuration จาก sample (/usr/share/doc/openvpn/examples/sample-config-files/client.conf)

16. กำหนดรายละเอียดภายใน Configuration

กำหนด server ที่จะใช้ authentication

กำหนด key-direction

17. สร้าง script สำหรับการสร้าง client configuration สำหรับแต่ละ user

18. Run script โดยใช้เป็น

จะได้ไฟล์ configuration สำหรับการเชื่อมต่อโดยใช้ client1 เป็น

19. Copy Configuration client1.ovpn ไปให้กับ Client โดยเส้นทางใดๆ จากนั้นหากเป็น

Windows ให้ติดตั้ง OpenVPN จาก https://openvpn.net/index.php/open-source/downloads.html แล้วทำการนำไฟล์ client1.ovpn ไปไว้ที่

หากเป็น Linux จะใช้เป็น

20. จากนั้นติดต่อไปยัง OpenVPN

Optional

1) ป้องกันการแชร์ cert ระหว่าง client ด้วยการ disconnect user ที่ login มาทีหลังในช่วงเวลาเดียวกัน โดยกำหนดใน Configuration แทนที่จะใช้

กลายเป็น

2) หากต้องการกำหนด routing ให้กับ client เพิ่มเมื่อต่อ vpn ให้ใช้เป็น

3) ทำให้ OpenVPN Client ใดๆที่ต่อเข้ามาสามารถเข้าถึง internal network ได้

4) หากนำ Tutorial นี้ไปใช้ใน Docker จะติดปัญหา “ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)” ให้รันเป็น

5) หากต้องการ certificate ให้กับ client อื่นๆ ให้ทำซ้ำในข้อ 6 และ 18

Source:: DigitalOcean