WireGuard เป็นเทคโนโลยี VPN รุ่นใหม่ที่ได้รับความสนใจอย่างมากในวงการเทคโนโลยี เนื่องจากความเรียบง่าย ความเร็ว และความปลอดภัย ในบทความนี้ เราจะสอนคุณวิธีติดตั้ง WireGuard บน Cloud VPS ของ Dot Enterprise พร้อมคำแนะนำทีละขั้นตอนตั้งแต่การติดตั้งจนถึงการตั้งค่าลูกข่าย (Client)
WireGuard คืออะไร และทำไมต้องใช้งาน
WireGuard เป็น VPN protocol ที่ออกแบบมาให้มีประสิทธิภาพสูง มีเพียง 4,000 บรรทัดโค้ด เมื่อเทียบกับ OpenVPN ที่มีกว่า 100,000 บรรทัด WireGuard ให้ประสิทธิภาพที่ดีกว่า ใช้พลังงานน้อยลง และใช้ cryptography ที่ทันสมัยกว่า (ChaCha20, Poly1305, Curve25519)
ข้อดีของ WireGuard
- เร็ว: ใช้ kernel space โดยตรง ให้ผลต่อ latency ต่ำกว่า OpenVPN
- เบา: ใช้ CPU และหน่วยความจำน้อย เหมาะสำหรับ VPS
- ปลอดภัย: ใช้ modern cryptography ตรวจสอบได้ปลอดภัยจากผู้เชี่ยวชาญ
- ง่ายต่อการใช้: Configuration ไม่ซับซ้อน ยังคงมั่นคงและปลอดภัย
ข้อกำหนดเบื้องต้น
- Cloud VPS ของ Dot Enterprise ที่ใช้ Ubuntu 20.04 หรือ 22.04
- สิทธิ์ root หรือ sudo access
- ความรู้พื้นฐานในการใช้ Terminal/Command Line
ขั้นตอนที่ 1: ติดตั้ง WireGuard บน Server
ขั้นแรก อัปเดต package manager แล้วติดตั้ง WireGuard:
sudo apt update
sudo apt install -y wireguard wireguard-tools
หลังจากติดตั้งเสร็จ ให้ติดตั้ง wg-quick ซึ่งจะช่วยในการจัดการ interface:
sudo apt install -y wireguard-dkms
ขั้นตอนที่ 2: สร้าง Key Pairs สำหรับ Server และ Client
WireGuard ใช้ public-private key cryptography สำหรับการ authentication ให้สร้าง directory สำหรับเก็บ keys:
cd /etc/wireguard
sudo umask 077
sudo wg genkey | tee privatekey | wg pubkey > publickey
ในบรรทัดแรก เราเปลี่ยน directory ไปยัง /etc/wireguard บรรทัดที่สอง ตั้ง umask เป็น 077 เพื่อให้ private key มีสิทธิ์เฉพาะ owner บรรทัดสุดท้าย สร้าง private key และ public key
ตรวจสอบ keys ที่สร้าง:
sudo cat privatekey
sudo cat publickey
ขั้นตอนที่ 3: สร้างไฟล์ Configuration สำหรับ Server
สร้างไฟล์ /etc/wireguard/wg0.conf โดยใช้ editor:
sudo nano /etc/wireguard/wg0.conf
ใส่เนื้อหาต่อไปนี้ (แทนที่ค่าใน [] ด้วยค่าจริง):
[Interface]
PrivateKey = [YOUR_SERVER_PRIVATE_KEY]
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
หมายความว่า:
- PrivateKey: Private key ของ server ที่สร้างไว้
- Address: IP address ของ WireGuard interface (ใช้ subnet 10.0.0.0/24)
- ListenPort: UDP port ที่ WireGuard จะฟังการเชื่อมต่อ (ค่าเริ่มต้น 51820)
- PostUp/PostDown: Rules iptables สำหรับ NAT เพื่อให้ clients สามารถเข้าอินเทอร์เน็ตผ่าน server ได้
ขั้นตอนที่ 4: เปิดใช้งาน IP Forwarding
เพื่อให้ VPN ทำงานได้ดี ต้องเปิดใช้งาน IP forwarding บน Linux kernel:
sudo sysctl -w net.ipv4.ip_forward=1
เพื่อให้สิ่งนี้คงไว้หลังจาก reboot ให้แก้ไข /etc/sysctl.conf:
sudo nano /etc/sysctl.conf
หา line ที่มี #net.ipv4.ip_forward=1 และ uncomment มัน (ลบ # ออก) จากนั้น save และออกจาก editor
ขั้นตอนที่ 5: ตั้งค่า UFW Firewall
หาก Cloud VPS ของคุณ enabled UFW firewall ให้อนุญาต port 51820 (UDP):
sudo ufw allow 51820/udp
sudo ufw reload
ตรวจสอบสถานะ UFW:
sudo ufw status
ขั้นตอนที่ 6: เปิดใช้งาน WireGuard Interface
เปิดใช้งาน WireGuard interface โดยใช้ wg-quick:
sudo wg-quick up wg0
เพื่อให้ WireGuard เปิดใช้งานโดยอัตโนมัติเมื่อ server restart:
sudo systemctl enable wg-quick@wg0
ตรวจสอบว่า interface ทำงาน:
sudo wg show
sudo ip addr show wg0
ขั้นตอนที่ 7: สร้าง Client Configuration
สำหรับแต่ละ client ต้องสร้าง private key และ public key เดียวกันกับ server:
cd /tmp
wg genkey | tee client_privatekey | wg pubkey > client_publickey
ดูค่า keys ที่สร้าง:
cat client_privatekey
cat client_publickey
สร้างไฟล์ configuration สำหรับ client:
[Interface]
PrivateKey = [CLIENT_PRIVATE_KEY]
Address = 10.0.0.2/24
DNS = 8.8.8.8, 8.8.4.4
[Peer]
PublicKey = [SERVER_PUBLIC_KEY]
AllowedIPs = 0.0.0.0/0
Endpoint = [YOUR_SERVER_IP]:51820
PersistentKeepalive = 25
ขั้นตอนที่ 8: เพิ่ม Client ลงใน Server Configuration
กลับไปที่ /etc/wireguard/wg0.conf แล้วเพิ่ม peer block สำหรับ client:
sudo nano /etc/wireguard/wg0.conf
เพิ่มเนื้อหาต่อไปนี้ที่ท้ายไฟล์:
[Peer]
PublicKey = [CLIENT_PUBLIC_KEY]
AllowedIPs = 10.0.0.2/32
Reload WireGuard configuration:
sudo wg syncconf wg0 <(wg-quick strip wg0)
หรือ restart interface:
sudo wg-quick down wg0
sudo wg-quick up wg0
ขั้นตอนที่ 9: ติดตั้ง Client บนอุปกรณ์ต่างๆ
Windows
- ดาวน์โหลด WireGuard จาก wireguard.com
- ติดตั้ง application
- นำเข้า configuration file ที่สร้างไว้
- คลิก "Activate"
macOS
- ติดตั้งผ่าน Homebrew:
brew install wireguard-tools - หรือดาวน์โหลด WireGuard app จาก Mac App Store
iOS / Android
- ดาวน์โหลด WireGuard app จาก App Store หรือ Google Play
- นำเข้า configuration โดยการสแกน QR code หรือเพิ่มด้วยตนเอง
ขั้นตอนที่ 10: ตรวจสอบและ Troubleshooting
ดูสถานะของ WireGuard
sudo wg show
คำสั่งนี้จะแสดง public key, private key (partially), peers, และ bandwidth ที่ใช้
เช็ค DNS Leak
ไป dnsleaktest.com เพื่อตรวจสอบว่า DNS queries ไปผ่าน VPN
ปัญหาไม่สามารถเชื่อมต่อ
- ตรวจสอบ firewall ว่าอนุญาต UDP 51820
- ตรวจสอบว่า Endpoint IP ของ server ถูกต้องใน client config
- ดู server logs:
sudo journalctl -u wg-quick@wg0 -n 20
