OpenVPN access server using Raspberry Pi

Spread the love

พอดีว่ามีความจำเป็นต้องทำช่องทางเข้าใช้งาน network ที่บ้านเวลาอยู่ข้างนอก โดยใช้งานผ่าน 3G/4G ตอนแรกที่ดูไว้คือทำ L2TP/IPsec VPN ด้วย Mikrotik Routerboard แต่เนื่องจาก L2TP/IPsec จำเป็นต้องใช้ TCP port อย่างน้อย 3 port และเปลี่ยนเบอร์ port ไม่ได้ด้วย ทำให้ solution นี้ตกไป เพราะว่าเน็ตที่บ้านใช้ AIS Fibre ซึ่งเขาทำ CGNAT บน IPv4 และให้ dynamic DNS service มาแบบที่เปลี่ยนเลข port ไม่ ได้ (thddns.net)

ด้วยเหตุนี้เลยต้องมองไปที่ SSL VPN แทน เพราะมันจะใช้แค่ port เดียว และเลือกเบอร์ port ได้ ซึ่ง OpenVPN เป็น software ทำ SSL VPN ที่ใช้งานได้ฟรี และมี client software ทั้งบน android, iOS, Windows, OS X, Linux

แล้วจะติดตั้ง OpenVPN server อย่างไร

PiVPN คือคำตอบ (pivpn.io)

ตอนแรกว่าจะใช้ Mikrotik ทำ OpenVPN server แต่พอลองหาข้อมูลเพิ่มเติมดูว่ามีทางเลือกอื่นอีกไหม ก็เจอว่าทำด้วย Raspberry Pi ก็ได้ แถมใช้แค่ 2 คำสั่ง เลยเปลี่ยนใจมาใช้ Pi แทน

  1. ขั้นแรกติดตั้ง (เปิด port เพิ่มที่ thddns ก่อน แล้วนำข้อมูลมากรอกในโปรแกรมติดตั้ง)
  2. curl -L https://install.pivpn.io | bash

  3. ขั้นที่สอง สร้าง profile
  4. pivpn add

จะได้ไฟล์ .ovpn มา ซึ่งจะใช้ในการเชื่อมต่อจากโทรศัพท์มือถือ

เมื่อติดตั้งใน Pi เสร็จแล้วต้องทำอีก 2 อย่าง

  1. เปิด port เพิ่มที่ thddns (ถ้ายังไม่ได้ทำ)
  2. ทำ port forward ที่ router

การใช้งาน VPN

  1. ติดตั้งโปรแกรม OpenVPN Connect
  2. OpenVPN on play store
    OpenVPN on play store
  3. copy ไฟล์ .ovpn ใส่โทรศัพท์ แล้ว import เข้า OpenVPN Connect
  4. กด connect

Links:
Articles / Blogs
* Create your own VPN server with the Raspberry Pi

Video Guides
* OpenVPN Server raspberry pi /w PiVPN

Traffic วิ่งยังไง
เมื่อ connect VPN ด้วยมือถือ ช่อง VPN นี้จะกลายเป็น default route Traffic ทั้งหมดจะถูกออกทางช่องนี้ ทั้ง destination ที่เป็น home network และ internet เมื่อ pi ได้รับ packet จาก remote client แล้ว packet นั้นจะถูกทำ srcnat เป็น IP address ของ PI ออกไปยัง network ที่บ้าน


Spread the love

Add a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.