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 ก่อน แล้วนำข้อมูลมากรอกในโปรแกรมติดตั้ง) ตัว pi เองควรตั้ง IP address แบบ static

curl -L https://install.pivpn.io | bash

2. ขั้นที่สอง สร้าง profile

pivpn add

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

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

  1. เปิด port เพิ่มที่ thddns (ถ้ายังไม่ได้ทำ)
  2. ทำ port forward ที่ router
  3. แก้ไฟล์ .ovpn ให้เชื่อมต่อไปยัง domain และ port ที่ได้จาก ddns provider อย่างของ AIS จะเป็น username.thnddns.net และ port ที่ระบบกำหนดมา แบบนี้
    remote username.thddns.net 1111
  4. (เป็น option) โดยปกติแล้วค่า default ของ PiVPN คือจะให้ traffic ทั้งหมดวิ่งผ่าน VPN นี้ แต่ถ้าเราต้องการให้ traffic เฉพาะบางส่วน บางวง IP วิ่งผ่าน VPN และที่เหลือผ่านทางช่องทางหลักของ client เหมือนเดิม หรือที่เรียกว่า split tunnel ให้แก้ไขไฟล์ /etc/openvpn/server.conf โดย comment บรรทัด redirect-gateway และ block-outside-dns ออก และเพิ่ม route ของ local network เข้าไป
    ;push "block-outside-dns"
    ;push "redirect-gateway def1"
    push "route 192.168.0.0 255.255.255.0"

การใช้งาน VPN

1. ติดตั้งโปรแกรม OpenVPN Connect

OpenVPN on play store
OpenVPN on play store

2. copy ไฟล์ .ovpn ใส่โทรศัพท์ แล้ว import เข้า OpenVPN Connect

3. กด connect

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

Video Guides
* OpenVPN Server raspberry pi /w PiVPN

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

แต่ถ้าเลือกทำแบบ split tunnel จะมีเฉพาะ traffic ในวงที่กำหนดเท่านั้นคือวงของ VPN เองและวงที่กำหนดโดย push route ที่จะวิ่งผ่าน VPN ส่วนอื่นจะออกไปทางปกติ 


Spread the love
One Comment

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.