ติดตั้ง WireGuard VPN บน VPS ทีละขั้นตอน [2026]
สารบัญ
- WireGuard คืออะไร?
- WireGuard vs OpenVPN vs IPsec
- สิ่งที่ต้องเตรียม
- ติดตั้ง WireGuard บน Server (Ubuntu 24.04)
- ตั้งค่า Server Configuration
- เปิด IP Forwarding + Firewall
- ตั้งค่า Client: Windows
- ตั้งค่า Client: macOS
- ตั้งค่า Client: iOS / Android
- ทดสอบการเชื่อมต่อ
- ตั้งให้เริ่มอัตโนมัติ (systemd)
- แก้ปัญหาที่พบบ่อย
- คำถามที่พบบ่อย
ถ้าคุณมี VPS อยู่แล้วและอยากได้ VPN ส่วนตัวที่ เร็ว ปลอดภัย และตั้งง่าย WireGuard คือคำตอบที่ดีที่สุดในปี 2026 ไม่ว่าจะเป็นการปกป้อง traffic บน Wi-Fi สาธารณะ bypass geo-restriction หรือเชื่อมต่อเครือข่ายส่วนตัวระหว่าง VPS หลายเครื่อง คู่มือนี้จะพาคุณตั้งค่าตั้งแต่ต้นจนจบ ทั้ง server side และ client ทุกอุปกรณ์
WireGuard คืออะไร?
WireGuard เป็น VPN protocol รุ่นใหม่ที่ถูกออกแบบมาให้ เร็วกว่า เรียบง่ายกว่า และปลอดภัยกว่า VPN protocol เก่าอย่าง OpenVPN และ IPsec โดยมีจุดเด่นหลักดังนี้:
- Codebase เล็กมาก — ~4,000 บรรทัด (OpenVPN มีกว่า 100,000 บรรทัด) ทำให้ audit ง่ายและมี attack surface น้อยกว่ามาก
- ทำงานใน Linux Kernel Space — ไม่ผ่าน userspace จึงเร็วกว่า OpenVPN อย่างชัดเจน
- Cryptography รุ่นใหม่ — Curve25519 (key exchange), ChaCha20 (encryption), Poly1305 (authentication), BLAKE2 (hashing)
- Perfect Forward Secrecy — session key เปลี่ยนทุก handshake ข้อมูลเก่า decrypt ไม่ได้แม้ private key หลุด
- รองรับทุกแพลตฟอร์ม — Linux, Windows, macOS, iOS, Android, BSD
- ฟรีและ Open Source — GPLv2 ไม่มีค่าลิขสิทธิ์
WireGuard ถูกรวมเข้า Linux Kernel ตั้งแต่ version 5.6 (เมษายน 2020) ทำให้ VPS Linux สมัยใหม่รองรับทันทีโดยไม่ต้องติดตั้ง kernel module เพิ่ม
สรุปสั้น: ทำไมถึงเลือก WireGuard?
เหมาะที่สุดสำหรับคนที่มี VPS และต้องการ VPN ส่วนตัวที่ตั้งง่าย เร็ว และปลอดภัย ค่าใช้จ่ายเดียวคือ VPS (เริ่มต้น ~$3-5/เดือน) ไม่มีค่าสมาชิก VPN รายเดือนอีกต่อไป
WireGuard vs OpenVPN vs IPsec/IKEv2
ก่อนตัดสินใจ ดูตารางเปรียบเทียบข้อเท็จจริงจากแหล่งทางการ (ข้อมูล ณ กันยายน 2026 — ตรวจสอบล่าสุดที่เว็บผู้พัฒนา):
| Feature | WireGuard | OpenVPN | IPsec/IKEv2 |
|---|---|---|---|
| Protocol | UDP เท่านั้น | UDP / TCP | UDP / ESP |
| Port เริ่มต้น | UDP 51820 | UDP/TCP 1194 | UDP 500 / 4500 |
| Codebase | ~4,000 บรรทัด | ~100,000+ บรรทัด | ซับซ้อนมาก |
| Speed | เร็วมาก (kernel) | ปานกลาง (userspace) | เร็ว |
| ตั้งค่า | ง่ายมาก | ปานกลาง | ยาก |
| ทำงานใน Kernel | ใช่ (Linux ≥5.6) | ไม่ (userspace) | บางส่วน |
| Encryption | ChaCha20 | AES-256 / ChaCha20 | AES-256 |
| ค่าใช้จ่าย | ฟรี (OSS) | ฟรี (OSS) | ฟรี (OSS) |
WireGuard เหมาะที่สุดสำหรับการใช้งานทั่วไปและ use case ส่วนตัว จุดอ่อนเดียวคือใช้ UDP เท่านั้น หากเครือข่าย block UDP ทั้งหมด (เช่น firewall เข้มงวดมาก) อาจต้องใช้ OpenVPN แทน
สิ่งที่ต้องเตรียมก่อนเริ่ม
ฝั่ง Server (VPS)
- VPS Linux รัน Ubuntu 22.04 หรือ 24.04 LTS (แนะนำ) หรือ Debian 11/12
- RAM อย่างน้อย 512MB (WireGuard ใช้ทรัพยากรน้อยมาก)
- SSH access (root หรือ sudo user)
- Public IP address (VPS ทุกเจ้าให้มา)
ฝั่ง Client (อุปกรณ์ที่จะเชื่อมต่อ)
- Windows 10/11 — ดาวน์โหลด WireGuard client จาก wireguard.com/install
- macOS — ผ่าน App Store หรือ Homebrew
- iOS / Android — มี official app ใน App Store / Google Play
ยังไม่มี VPS? แนะนำ VPS ไทยจาก AsiaGB หรือ Bangmod Cloud ที่มีเซิร์ฟเวอร์ในไทย หรือเลือก DigitalOcean สำหรับ VPS ต่างประเทศราคาเริ่มต้น $6/เดือน
ขั้นที่ 1: ติดตั้ง WireGuard บน Server
SSH เข้าไปที่ VPS แล้วรันคำสั่งต่อไปนี้:
# อัปเดต package list ก่อน
sudo apt update && sudo apt upgrade -y
# ติดตั้ง WireGuard
sudo apt install -y wireguard wireguard-tools
# ตรวจสอบว่าติดตั้งสำเร็จ
wg --version
ถ้าได้ output ประมาณ wireguard-tools v1.0.xx แสดงว่าติดตั้งสำเร็จ บน Ubuntu 22.04/24.04 kernel มี WireGuard built-in อยู่แล้ว ไม่ต้องติดตั้ง module เพิ่ม
ขั้นที่ 2: สร้าง Key Pairs สำหรับ Server
WireGuard ใช้ระบบ Public/Private Key คล้าย SSH แต่ละ peer (server และ client) ต้องมี key pair ของตัวเอง
# สร้าง private key สำหรับ server
sudo wg genkey | sudo tee /etc/wireguard/server_private.key
# สร้าง public key จาก private key
sudo cat /etc/wireguard/server_private.key | sudo wg pubkey | sudo tee /etc/wireguard/server_public.key
# ตั้ง permission ให้ปลอดภัย
sudo chmod 600 /etc/wireguard/server_private.key
# แสดง key ที่สร้าง (จด public key ไว้ใช้ทีหลัง)
echo "Server Private Key:"
sudo cat /etc/wireguard/server_private.key
echo "Server Public Key:"
sudo cat /etc/wireguard/server_public.key
จด Server Public Key ไว้ เพราะจะต้องใส่ใน config ของ client ทุกเครื่อง
ขั้นที่ 3: สร้าง Client Key Pairs
สร้าง key สำหรับ client แต่ละเครื่อง (ทำซ้ำสำหรับทุก device ที่จะเชื่อมต่อ)
# สร้าง key สำหรับ client ที่ 1 (เช่น laptop ของคุณ)
sudo wg genkey | sudo tee /etc/wireguard/client1_private.key
sudo cat /etc/wireguard/client1_private.key | sudo wg pubkey | sudo tee /etc/wireguard/client1_public.key
sudo chmod 600 /etc/wireguard/client1_private.key
echo "Client1 Private Key:"
sudo cat /etc/wireguard/client1_private.key
echo "Client1 Public Key:"
sudo cat /etc/wireguard/client1_public.key
ขั้นที่ 4: เขียน Server Configuration
สร้างไฟล์ config สำหรับ WireGuard interface wg0:
sudo nano /etc/wireguard/wg0.conf
ใส่เนื้อหาดังนี้ (แทนที่ค่าต่างๆ ด้วยค่าที่คุณได้จากขั้นที่ 2-3):
[Interface]
# IP ของ WireGuard network บน server
Address = 10.0.0.1/24
# Port ที่ WireGuard จะ listen
ListenPort = 51820
# ใส่ Server Private Key ที่ได้จากขั้นที่ 2
PrivateKey = <SERVER_PRIVATE_KEY>
# บังคับ traffic ผ่าน VPN ทั้งหมด (full tunnel)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# ===== Peer = Client 1 =====
[Peer]
# ชื่อเอาไว้อ้างอิง (comment)
# Client 1 - My Laptop
# ใส่ Client1 Public Key ที่ได้จากขั้นที่ 3
PublicKey = <CLIENT1_PUBLIC_KEY>
# IP ที่จะให้ client ใช้ใน VPN network
AllowedIPs = 10.0.0.2/32
หมายเหตุ: eth0 คือชื่อ network interface หลักบน VPS ส่วนใหญ่ บางเจ้าอาจใช้ชื่อต่างกัน เช่น ens3, ens18 ตรวจสอบด้วยคำสั่ง ip link show แล้วแทนที่ eth0 ให้ถูกต้อง
# ตรวจสอบชื่อ interface จริง
ip link show | grep "state UP" | awk -F': ' '{print $2}'
ขั้นที่ 5: เปิด IP Forwarding และตั้งค่า Firewall
เปิด IP Forwarding
IP Forwarding จำเป็นเพื่อให้ server ส่ง traffic ของ client ออกไปยัง internet ได้:
# เปิด IP Forwarding ชั่วคราว
sudo sysctl -w net.ipv4.ip_forward=1
# ตั้งให้คงอยู่หลัง reboot
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
# หรือถ้าไม่มีบรรทัดนั้น เพิ่มเอง:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
เปิด Firewall Port (UFW)
# อนุญาต SSH (สำคัญมาก! อย่าลืม ไม่งั้น lock ตัวเองออก)
sudo ufw allow OpenSSH
# อนุญาต WireGuard UDP port
sudo ufw allow 51820/udp
# เปิด UFW
sudo ufw --force enable
# ตรวจสอบ status
sudo ufw status verbose
เปิด WireGuard Interface
# เริ่ม WireGuard
sudo wg-quick up wg0
# ตรวจสอบสถานะ
sudo wg show
ขั้นที่ 6: ตั้งค่า Client บน Windows
- ดาวน์โหลด WireGuard Installer จาก wireguard.com/install → Windows แล้วติดตั้ง
- เปิดแอป WireGuard → คลิก "Add Tunnel" → "Add empty tunnel"
- ระบบจะสร้าง Public Key ให้อัตโนมัติ — จด Public Key ไว้ เพราะต้องเพิ่มใน server config
- ใส่ config ดังนี้:
[Interface]
# Client Private Key (สร้างอัตโนมัติโดย app)
PrivateKey = <CLIENT_PRIVATE_KEY_จาก_App>
# IP ของ client ใน VPN network
Address = 10.0.0.2/32
# DNS server ที่จะใช้ขณะเชื่อมต่อ VPN
DNS = 1.1.1.1, 8.8.8.8
[Peer]
# ใส่ Server Public Key จากขั้นที่ 2
PublicKey = <SERVER_PUBLIC_KEY>
# IP ของ server (Public IP ของ VPS)
Endpoint = YOUR_VPS_IP:51820
# 0.0.0.0/0 = ส่ง traffic ทั้งหมดผ่าน VPN (full tunnel)
AllowedIPs = 0.0.0.0/0, ::/0
# Keepalive สำหรับ NAT traversal
PersistentKeepalive = 25
หลังใส่ config แล้ว คลิก "Save" แล้วคลิก "Activate" เพื่อเชื่อมต่อ
อย่าลืม! หลังตั้งค่า client แต่ละเครื่องเสร็จ ต้องนำ Public Key ของ client ไปเพิ่มในส่วน [Peer] ของ server config ด้วย แล้วรัน sudo wg addconf wg0 /dev/stdin หรือ restart WireGuard
ขั้นที่ 7: ตั้งค่า Client บน macOS
วิธีที่ 1: ผ่าน Mac App Store (แนะนำ)
- เปิด App Store → ค้นหา "WireGuard" → ติดตั้ง
- เปิดแอป → คลิก "+" → "Add Empty Tunnel"
- ใส่ config เดียวกับ Windows (เปลี่ยน Address เป็น IP ที่ไม่ซ้ำกัน เช่น 10.0.0.3/32)
- คลิก "Save" → คลิก toggle เพื่อเชื่อมต่อ
วิธีที่ 2: ผ่าน Homebrew (command line)
brew install wireguard-tools
# สร้าง config file
sudo mkdir -p /etc/wireguard
sudo nano /etc/wireguard/wg0.conf
# ใส่ config เหมือนด้านบน แล้ว:
sudo wg-quick up wg0
ขั้นที่ 8: ตั้งค่า Client บน iOS และ Android
iOS
- ติดตั้งแอป "WireGuard" จาก App Store
- เปิดแอป → แตะ "+"
- เลือก "Create from scratch" หรือ "Create from QR code"
Android
- ติดตั้งแอป "WireGuard" จาก Google Play
- แตะ "+" → "Create from scratch"
- ใส่ config เหมือนด้านบน โดยเปลี่ยน IP เป็น 10.0.0.4/32
วิธีสร้าง QR Code สำหรับมือถือ (สะดวกกว่า)
แทนที่จะพิมพ์ config บนมือถือ สามารถ generate QR code บน server แล้ว scan ได้เลย:
# ติดตั้ง qrencode บน server
sudo apt install -y qrencode
# สร้างไฟล์ config สำหรับ mobile client ก่อน
cat > /tmp/mobile_client.conf << EOF
[Interface]
PrivateKey = <MOBILE_CLIENT_PRIVATE_KEY>
Address = 10.0.0.4/32
DNS = 1.1.1.1
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = YOUR_VPS_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
EOF
# แสดง QR code บน terminal
qrencode -t ansiutf8 < /tmp/mobile_client.conf
Scan QR code ที่ปรากฏขึ้นด้วยแอป WireGuard บนมือถือได้เลย
ขั้นที่ 9: ทดสอบการเชื่อมต่อ
หลังเชื่อมต่อ VPN บน client แล้ว ทดสอบด้วยวิธีเหล่านี้:
ตรวจสอบ IP Address
เปิด browser ไปที่ whatismyipaddress.com — IP ที่แสดงควรเป็น IP ของ VPS ไม่ใช่ IP บ้านหรือ IP เครือข่าย WiFi
ตรวจสอบบน Server
# ดูสถานะ peer ที่เชื่อมต่ออยู่
sudo wg show
# ควรเห็น "latest handshake" ของ peer ที่เชื่อมต่อ
# ถ้าเห็น "latest handshake: X seconds ago" แปลว่าเชื่อมต่อสำเร็จ
ทดสอบ Ping
# จาก client ping ไปที่ server WireGuard IP
ping 10.0.0.1
# จาก server ping ไปที่ client
ping 10.0.0.2
ขั้นที่ 10: ตั้งให้ WireGuard เริ่มอัตโนมัติหลัง Reboot
# Enable WireGuard service ด้วย systemd
sudo systemctl enable wg-quick@wg0
# เริ่ม service ทันที
sudo systemctl start wg-quick@wg0
# ตรวจสอบ status
sudo systemctl status wg-quick@wg0
หลังจากนี้ WireGuard จะเริ่มทำงานอัตโนมัติทุกครั้งที่ VPS reboot ไม่ต้องมาเริ่มเองทุกครั้ง
แก้ปัญหาที่พบบ่อย
เชื่อมต่อไม่ได้เลย (Handshake timeout)
- ตรวจสอบว่า UFW เปิด UDP 51820 แล้วหรือยัง:
sudo ufw status | grep 51820 - ตรวจสอบว่า VPS provider ไม่ได้ block port ใน Network Firewall/Security Group (ต้องเปิดใน dashboard ของ provider ด้วย ไม่ใช่แค่ UFW)
- ตรวจสอบว่า Public Key ใน server [Peer] ตรงกับ Client Public Key
- ตรวจสอบ endpoint IP ใน client config — ต้องเป็น Public IP ของ VPS ไม่ใช่ private IP
เชื่อมต่อได้แต่ internet ไม่ทำงาน (No internet after VPN)
- ตรวจสอบว่าเปิด IP Forwarding แล้ว:
sysctl net.ipv4.ip_forwardควรได้1 - ตรวจสอบว่า PostUp/PostDown ใน server config ใช้ชื่อ interface ถูกต้อง (ไม่ใช่
eth0ถ้า interface จริงชื่ออื่น) - ตรวจสอบ iptables:
sudo iptables -t nat -L -nควรเห็น MASQUERADE rule
DNS Leak
- ทดสอบที่ dnsleaktest.com — ถ้า DNS leak แสดงว่า DNS requests ไม่ได้ผ่าน VPN
- แก้โดยใส่ DNS ใน Interface section ของ client config:
DNS = 1.1.1.1, 8.8.8.8
เพิ่ม Peer ใหม่โดยไม่ต้อง Restart
# เพิ่ม peer ใหม่แบบ live (ไม่ disconnect คนที่ใช้อยู่)
sudo wg set wg0 peer <NEW_CLIENT_PUBLIC_KEY> allowed-ips 10.0.0.5/32
# บันทึกการเปลี่ยนแปลงลงไฟล์ config
sudo wg-quick save wg0
ยังไม่มี VPS สำหรับรัน WireGuard? เลือก VPS ที่เหมาะกับงบประมาณ
ดู VPS AsiaGB (ไทย) ดู VPS Bangmod Cloudคำถามที่พบบ่อย (FAQ)
0.0.0.0/0 เป็น subnet ที่ต้องการ เช่น 10.0.0.0/24 เพื่อให้เฉพาะ traffic ไป WireGuard network ผ่าน VPN