Monday, August 08, 2005

Config VPN with OpenVPN

ช่วงนี้กำลังหา solution ในการเชื่อมต่อ ระหว่าง
network ที่บ้าน กับ network ที่ทำงาน
เมื่อก่อนที่ใช้ windows ก็สามารถใช้ CIPE ในการทำ vpn ได้
เนื่องจากมีทั้ง version linux และ win32
(บน win32 ยังมีปัญหาในการติดตั้งบน XP อยู่บ้าง แต่ไม่ยากเกินไปนัก
สามารถหาวิธีแก้ใน mail-archive ได้)
มาตอนนี้เปลี่ยนไปใช้ OS X แล้ว ก็เลยต้องขวนขวายหา solution ใหม่

ตอนแรกก็ดู IPSec ไว้ เพราะว่ามีมาให้กับ Freebsd อยู่แล้ว
แถมใน Tiger ก็มี gui สำหรับ config และเรียกใช้งานด้วย
หลังจากปลุกปล้ำอยู่ 1 วันเต็มๆ ก็ถอดใจ
เนื่องจาก case ที่ config นี้เป็น case dynamic ip
ทั้งฝั่งที่บ้านและฝั่งที่ทำงาน ซึ่งน่าจะเป็น case ที่ config
ยากสุดสำหรับ IPSec

หลังจาก search net ไปมา ก็ไปเจอเข้ากับ OpenVPN
หลังจากอ่านคู่มืออยู่สักพัก ก็พบทางสว่างทันที
ก็เลย load เอา source มา build เอง
ตัว Server ที่ทำงานมี OS เป็น SuSE Enterprise 9
การ build ก็เลยไม่ยาก ขาดเหลือ lib อะไร
ก็เปิดแผ่นเอา
ส่วนการ build ที่ Mac ก็ใช้ fink
ในการ install library lzo เพิ่ม

การ Config ก็ไม่ยากเย็นอะไร เพราะใน distribution
มีตัวอย่าง config file มาให้พร้อมสรรพ
แถมยังมี document ที่อธิบายค่อนข้างละเอียดดีทีเดียว
เริ่มด้วยการ generate พวก Certificate ทั้งหลาย
เนื่องจากในการเชื่อมต่อระหว่าง client กับ server
จะมีการตรวจสอบ Certificate ของกันและกัน
โดยทั้งสองฝ่ายจะยอมรับ connection ต่อเมื่อ
certificate ของทั้งสองฝ่าย ถูก sign โดย
Root CA อันเดียวกัน
(ข้อดีของ OpenVPN ก็คือมันเตรียม shell script
ที่ใช้ในการสร้าง key หรือ sign key ไว้เสร็จสรรพ
ไม่ต้องทรมานไปนั่งอ่านวิธีใช้ openssl อีก)

ในส่วน Server ก็จะมี config เพิ่มในส่วนของ
Route table ที่จะ push ไปให้ Client
เพื่อที่จะกำหนดว่า client มีสิทธิ access subnet
อะไรได้บ้าง

ส่วนการ Config OpenVPN สำหรับ OS X
มีข้อแม้เพิ่มเติมจากพวก Unix ก็คือ
ต้องมีการติดตั้ง tun/tap driver for Mac OS X
ซึ่งเป็น kernel extension ด้วย
อันนี้แหล่ะที่ดูน่ากลัวเล็กน้อย
เพราะว่ากลัวว่าติดตั้งแล้ว จะทำให้ OS ไม่เสถียร
ก็เลยไปหาเอกสารมาอ่านทำความเข้าใจสักหน่อย
ว่าถ้ามีปัญหาแล้วจะ uninstall ยังไง

ในส่วนของ OS X ก็มีคนทำ gui สำหรับเรียกใช้ง่ายๆ
ชื่อ Tunnelblick

โดย download package ของ Tunnelblick มีให้เราครบหมดเลย
ทั้ง tun-tap, openvpn, gui

Note: ในกรณีที่เรา build openvpn เอง แล้วเลือก
install ใน path ที่ไม่ใช่ /usr/local/sbin
จะทำต้องทำ link มาไว้ที่นี่ด้วย เพราะเจ้า
TunnelBlick มันฝัง hardcode ไว้ใน source code
เลยว่า จะเปิด openvpn ได้จากตำแหน่งนี้เท่านั้น

Related link from Roti

No comments: