
WireGuard VPN: ติดตั้งและตั้งค่า VPN ที่เร็วกว่า OpenVPN
WireGuard เป็น VPN protocol รุ่นใหม่ที่ออกแบบมาให้เร็วกว่า ง่ายกว่า และปลอดภัยกว่า OpenVPN และ IPSec code base มีแค่ ~4,000 บรรทัด (เทียบกับ OpenVPN ~100,000 บรรทัด) ทำให้ audit ง่าย มี attack surface น้อย WireGuard ถูก merge เข้า Linux kernel 5.6 ในปี 2020 แสดงว่า Linus Torvalds เองก็ยอมรับคุณภาพ
ในการทดสอบ performance WireGuard เร็วกว่า OpenVPN 3-4 เท่า และ latency ต่ำกว่ามาก เหมาะสำหรับ remote access VPN, site-to-site VPN และ mobile VPN บทความนี้จะสอนวิธีติดตั้งและตั้งค่า WireGuard ตั้งแต่ต้น พร้อมเปรียบเทียบกับ OpenVPN
WireGuard vs OpenVPN vs IPSec
| คุณสมบัติ | WireGuard | OpenVPN | IPSec/IKEv2 |
|---|---|---|---|
| Code Base | ~4,000 lines | ~100,000 lines | ~400,000 lines |
| Speed | เร็วมาก | ปานกลาง | เร็ว |
| Latency | ต่ำมาก | ปานกลาง | ต่ำ |
| Encryption | ChaCha20, Curve25519 | OpenSSL (เลือกได้) | AES, SHA (เลือกได้) |
| Setup | ง่ายมาก | ปานกลาง | ซับซ้อน |
| Protocol | UDP only | UDP/TCP | UDP (500, 4500) |
| NAT Traversal | ดี | ดีมาก (TCP fallback) | ดี (NAT-T) |
| Mobile Support | ดีมาก (fast roaming) | ดี | ดี |
| Firewall Bypass | ปานกลาง (UDP only) | ดีมาก (TCP 443) | ปานกลาง |
| Kernel Space | ใช่ (Linux 5.6+) | ไม่ (userspace) | ใช่ |
วิธีติดตั้ง WireGuard Server (Ubuntu)
Step 1: ติดตั้ง WireGuard
บน Ubuntu 20.04+ WireGuard อยู่ใน official repository แล้ว ติดตั้งด้วย apt install wireguard สร้าง server key pair ด้วย wg genkey | tee server_private.key | wg pubkey > server_public.key
Step 2: สร้าง Configuration File
สร้างไฟล์ /etc/wireguard/wg0.conf กำหนด Interface section: Address (VPN IP ของ server เช่น 10.0.0.1/24), ListenPort (เช่น 51820), PrivateKey (server private key) กำหนด PostUp และ PostDown rules สำหรับ NAT (iptables MASQUERADE) เพื่อให้ clients เข้าถึง internet ผ่าน VPN ได้
Step 3: เพิ่ม Client (Peer)
สร้าง client key pair บน client เครื่อง เพิ่ม [Peer] section ใน wg0.conf ของ server กำหนด PublicKey (client public key), AllowedIPs (IP ที่ client จะใช้ เช่น 10.0.0.2/32)
Step 4: Start WireGuard
เปิด WireGuard ด้วย wg-quick up wg0 ตั้งให้ start อัตโนมัติ ด้วย systemctl enable wg-quick@wg0 ตรวจสอบสถานะด้วย wg show
ตั้งค่า Client
Linux Client
ติดตั้ง wireguard บน client สร้าง /etc/wireguard/wg0.conf กำหนด Interface: Address (10.0.0.2/24), PrivateKey (client private key), DNS (1.1.1.1) กำหนด Peer: PublicKey (server public key), Endpoint (server_ip:51820), AllowedIPs (0.0.0.0/0 สำหรับ full tunnel หรือ 10.0.0.0/24 สำหรับ split tunnel) เพิ่ม PersistentKeepalive = 25 ถ้า client อยู่หลัง NAT
Windows / macOS / Mobile
ดาวน์โหลด WireGuard app จาก wireguard.com สำหรับ Windows, macOS, iOS, Android import configuration file หรือสร้าง tunnel ผ่าน app UI scan QR code สำหรับ mobile (สร้าง QR code จาก config ด้วย qrencode)
Use Cases สำหรับ WireGuard
Remote Access VPN
ให้พนักงาน work from home เชื่อมต่อกลับ office network ผ่าน WireGuard เร็วกว่า OpenVPN มาก roaming ดี (เปลี่ยน Wi-Fi/4G ไม่หลุด) battery ใช้น้อยบน mobile
Site-to-Site VPN
เชื่อมต่อ สาขา กับ HQ ผ่าน WireGuard ตั้งค่าง่ายกว่า IPSec มาก performance ดี latency ต่ำ เหมาะสำหรับ SME ที่ไม่มี enterprise router/firewall
VPN สำหรับ Cloud Server
เชื่อมต่อ cloud server (AWS, DigitalOcean, Vultr) กับ on-premise ผ่าน WireGuard ราคาถูก (ไม่ต้องจ่ายค่า VPN gateway ของ cloud provider) ตั้งค่าเร็ว (5-10 นาที)
WireGuard Security
Cryptography
WireGuard ใช้ modern cryptography ที่ไม่ให้เลือก algorithm (ต่างจาก OpenVPN/IPSec) Noise protocol framework สำหรับ key exchange Curve25519 สำหรับ ECDH ChaCha20 สำหรับ symmetric encryption Poly1305 สำหรับ authentication BLAKE2s สำหรับ hashing การไม่ให้เลือก algorithm เป็นข้อดี เพราะป้องกัน misconfiguration ที่อาจทำให้ไม่ปลอดภัย
ข้อจำกัดด้าน Privacy
WireGuard เก็บ peer IP address ใน memory ตลอดเวลาที่ tunnel active ต่างจาก OpenVPN ที่ลบ IP เมื่อ disconnect สำหรับ VPN providers ที่ advertise “no-log” อาจเป็นปัญหา แก้ไขด้วย userspace implementation ที่ลบ IP หลัง timeout (เช่น WireGuard ของ Mullvad VPN)
Best Practices
ใช้ Port ที่ไม่ถูก Block
Default port 51820 อาจถูก firewall block ในบาง network พิจารณาใช้ port 443 (HTTPS) หรือ 53 (DNS) ที่ไม่ค่อยถูก block แต่ WireGuard เป็น UDP เท่านั้น ถ้า network block UDP ทั้งหมด WireGuard จะใช้ไม่ได้ (ต้องใช้ OpenVPN TCP แทน)
Key Rotation
เปลี่ยน key pairs เป็นประจำ (ทุก 90 วัน) ถ้า client key ถูก compromise เปลี่ยน key pair ของ client นั้นทันที ลบ peer ออกจาก server config
ทิ้งท้าย: WireGuard คืออนาคตของ VPN
WireGuard เป็น VPN protocol ที่ดีที่สุดในปัจจุบันสำหรับ use cases ส่วนใหญ่ เร็วกว่า ง่ายกว่า ปลอดภัยกว่า OpenVPN ยกเว้นกรณีที่ต้อง bypass strict firewalls (ต้องใช้ TCP) ลองติดตั้งดู ใช้เวลาไม่ถึง 30 นาที
อ่านเพิ่มเติมเกี่ยวกับ Site-to-Site VPN และ Network Security ที่ siamlancard.com หรือจาก icafeforex.com และ siam2r.com