
22/02/2026 | อ. บอม (Bom) | SiamCafe.net Since 2000-2026
วิดีโอประกอบการเรียนรู้ | YouTube @icafefx
ถ้าคุณเคยตั้ง OpenVPN มาก่อนคุณจะรู้ว่ามันซับซ้อนต้องสร้าง CA, Certificate, DH Parameters และ Config ยาวเป็นหน้าๆ WireGuard เปลี่ยนเกมนี้ทั้งหมดสร้าง VPN Server ได้ภายใน 5 นาที Config แค่ 15 บรรทัดและเร็วกว่า OpenVPN 3-4 เท่า
WireGuard ถูกออกแบบมาให้ง่ายเร็วและปลอดภัยใช้ Modern Cryptography อย่าง Curve25519, ChaCha20-Poly1305 ซึ่งเป็น State-of-the-Art และถูกรวมเข้า Linux Kernel ตั้งแต่ Version 5.6 ทำให้ Performance อยู่ในระดับ Kernel Space ไม่ใช่ User Space แบบ OpenVPN
ในบทความนี้ผมจะพาตั้ง WireGuard VPN Server บน Ubuntu ตั้งแต่ศูนย์ครอบคลุม Config สำหรับทุก Platform ทั้ง Windows, Mac, มือถือพร้อม Script อัตโนมัติสำหรับเพิ่ม Client ใหม่ครับ
WireGuard เป็น VPN Protocol รุ่นใหม่ที่ออกแบบโดย Jason A. Donenfeld สิ่งที่ทำให้มันพิเศษ:
| Feature | WireGuard | OpenVPN |
|---|---|---|
| Code Lines | ~4,000 | ~100,000+ |
| Protocol | UDP เท่านั้น | UDP + TCP |
| Encryption | ChaCha20-Poly1305 | AES-256-GCM (configurable) |
| Key Exchange | Curve25519 | RSA/ECDH |
| Handshake | 1-RTT | Multiple RTT |
| Throughput | ~900 Mbps | ~250 Mbps |
| Latency | ต่ำมาก | สูงกว่า 2-3x |
| Runs in | Kernel Space | User Space |
เหตุผลที่ WireGuard เร็วกว่าคือมันรันใน Linux Kernel โดยตรงไม่ต้อง Copy Packet จาก Kernel Space ไป User Space แล้วกลับมาแบบที่ OpenVPN ต้องทำแค่นี้ก็ลด Latency ไปมหาศาลแล้ว
Code เพียง 4,000 บรรทัดหมายความว่า Security Audit ง่ายมากนักวิจัยสามารถอ่านจบได้ภายในวันเดียวต่างจาก OpenVPN ที่ต้องใช้ทีมทั้งทีม Audit เป็นสัปดาห์
# Ubuntu 22.04+ มี WireGuard ใน Kernel แล้ว แค่ติดตั้ง Tools
sudo apt update
sudo apt install -y wireguard wireguard-tools qrencode
# ตรวจสอบ
wg --version
# wireguard-tools v1.0.20210914
# ตรวจว่า Kernel Module โหลดแล้ว
sudo modprobe wireguard
lsmod | grep wireguard
# wireguard 94208 0
WireGuard ใช้ Public/Private Key Pair เหมือน SSH ไม่ต้องมี Certificate Authority:
# สร้าง Key Pair สำหรับ Server
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
# ตั้ง Permission
chmod 600 /etc/wireguard/server_private.key
# ดู Key
cat /etc/wireguard/server_private.key
# kHx2Hx8L...= (Private Key — ห้ามแชร์!)
cat /etc/wireguard/server_public.key
# a7B2c3D4...= (Public Key — แชร์ได้)
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>
# NAT — ให้ Client ออก Internet ผ่าน Server
PostUp = iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -A FORWARD -o wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -o wg0 -j ACCEPT
# Client 1 — Laptop
[Peer]
PublicKey = <CLIENT1_PUBLIC_KEY>
AllowedIPs = 10.0.0.2/32
# Client 2 — มือถือ
[Peer]
PublicKey = <CLIENT2_PUBLIC_KEY>
AllowedIPs = 10.0.0.3/32
# เปิด IP Forwarding
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# เริ่ม WireGuard
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
# ตรวจสอบ
sudo wg show
# interface: wg0
# public key: a7B2c3D4...=
# private key: (hidden)
# listening port: 51820
sudo ufw allow 51820/udp# สร้าง Key Pair สำหรับ Client
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
# สร้าง Client Config
cat > client1.conf << EOF
[Interface]
PrivateKey = $(cat client1_private.key)
Address = 10.0.0.2/24
DNS = 1.1.1.1, 8.8.8.8
[Peer]
PublicKey = $(cat /etc/wireguard/server_public.key)
Endpoint = YOUR-SERVER-IP:51820
AllowedIPs = 0.0.0.0/0 # Full Tunnel — ส่ง Traffic ทั้งหมดผ่าน VPN
PersistentKeepalive = 25
EOF
# สร้าง QR Code สำหรับมือถือ
qrencode -t ansiutf8 < client1.conf
# จะแสดง QR Code ใน Terminal
# เปิด WireGuard App บนมือถือ → Import → Scan QR Code
PersistentKeepalive = 25 สำคัญมากสำหรับ Client ที่อยู่หลัง NAT (เช่นมือถือหรือ WiFi ตามบ้าน) มันจะส่ง Keepalive Packet ทุก 25 วินาทีเพื่อให้ NAT Table ไม่หมดอายุsudo wg-quick up client1.conf หรือ Import ผ่าน NetworkManagerทุก Platform มี Kill Switch ในตัว App ให้เปิดปิดได้ไม่ต้อง Config เพิ่ม
Full Tunnel — ส่ง Traffic ทั้งหมดผ่าน VPN ปลอดภัยสุด:
# Client Config
AllowedIPs = 0.0.0.0/0, ::/0
Split Tunnel — เฉพาะ Traffic ไป Internal Network ผ่าน VPN เร็วกว่า:
# Client Config — เฉพาะ Network ภายใน
AllowedIPs = 10.0.0.0/24, 192.168.1.0/24
Split Tunnel เหมาะสำหรับตอนทำงานจากบ้านต้องการเข้า Server ที่ออฟฟิศแต่ไม่ต้องการให้ YouTube หรือ Netflix วนผ่าน VPN ซึ่งจะทำให้ช้าลง
ถ้า VPN หลุด Traffic จะออก Internet ตรงๆโดยไม่เข้ารหัส Kill Switch จะ Block Traffic ทั้งหมดเมื่อ VPN ไม่ทำงาน:
# เพิ่มใน Client Config ใต้ [Interface]
PostUp = iptables -I OUTPUT ! -o wg0 -m mark ! --mark $(wg show wg0 fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o wg0 -m mark ! --mark $(wg show wg0 fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
วิธีที่ง่ายกว่าสำหรับ Client App: บน Windows/macOS WireGuard App มี Toggle "Block untunneled traffic (kill-switch)" เปิดได้เลย
#!/bin/bash
# add-wg-client.sh — สร้าง WireGuard Client อัตโนมัติ
set -e
CLIENT_NAME=$1
if [ -z "$CLIENT_NAME" ]; then
echo "Usage: $0 <client-name>"
exit 1
fi
WG_DIR="/etc/wireguard"
SERVER_PUB=$(cat $WG_DIR/server_public.key)
SERVER_IP="YOUR-SERVER-IP"
SERVER_PORT="51820"
# หา IP ถัดไปที่ว่าง
LAST_IP=$(grep -oP 'AllowedIPs = 10\.0\.0\.\K\d+' $WG_DIR/wg0.conf | sort -n | tail -1)
NEXT_IP=$((LAST_IP + 1))
# สร้าง Key Pair
PRIV=$(wg genkey)
PUB=$(echo "$PRIV" | wg pubkey)
PSK=$(wg genpsk)
# เพิ่ม Peer ใน Server Config
cat >> $WG_DIR/wg0.conf << EOF
# $CLIENT_NAME
[Peer]
PublicKey = $PUB
PresharedKey = $PSK
AllowedIPs = 10.0.0./32
EOF
# สร้าง Client Config
CLIENT_CONF="$WG_DIR/clients/.conf"
mkdir -p $WG_DIR/clients
cat > "$CLIENT_CONF" << EOF
[Interface]
PrivateKey = $PRIV
Address = 10.0.0./24
DNS = 1.1.1.1
[Peer]
PublicKey = $SERVER_PUB
PresharedKey = $PSK
Endpoint = :
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF
# Reload WireGuard
wg syncconf wg0 <(wg-quick strip wg0)
# แสดง QR Code
echo ""
echo "✅ Client '$CLIENT_NAME' created — IP: 10.0.0."
echo "Config: $CLIENT_CONF"
echo ""
echo "=== QR Code (scan with WireGuard App) ==="
qrencode -t ansiutf8 < "$CLIENT_CONF"
# ใช้งาน
chmod +x add-wg-client.sh
sudo ./add-wg-client.sh laptop-bom
sudo ./add-wg-client.sh phone-bom
sudo ./add-wg-client.sh tablet-bom
WireGuard ทำ Site-to-Site VPN ได้ง่ายมากแค่ตั้ง WireGuard ทั้ง 2 ฝั่งแล้วเพิ่ม Route ของ Network อีกฝั่ง:
# สำนักงาน A (192.168.1.0/24)
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <SITE_A_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT
[Peer]
PublicKey = <SITE_B_PUBLIC_KEY>
Endpoint = SITE-B-PUBLIC-IP:51820
AllowedIPs = 10.0.0.2/32, 192.168.2.0/24 # ← Network ของสำนักงาน B
PersistentKeepalive = 25
# สำนักงาน B (192.168.2.0/24)
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.2/24
ListenPort = 51820
PrivateKey = <SITE_B_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT
[Peer]
PublicKey = <SITE_A_PUBLIC_KEY>
Endpoint = SITE-A-PUBLIC-IP:51820
AllowedIPs = 10.0.0.1/32, 192.168.1.0/24 # ← Network ของสำนักงาน A
PersistentKeepalive = 25
เมื่อ WireGuard ทั้ง 2 ฝั่ง Connect กันคอมพิวเตอร์ใน Network 192.168.1.x จะ Ping หา 192.168.2.x ได้โดยตรงเหมือนอยู่ Network เดียวกันเหมาะกับบริษัทที่มีสาขาหลายแห่ง
IP Forwarding ไม่ได้เปิดหรือ iptables NAT Rule ไม่ถูกตรวจ sysctl net.ipv4.ip_forward ว่าเป็น 1 และ PostUp/PostDown ใน Server Config ว่า Interface Name ถูกต้อง (eth0, ens3, etc.)
Firewall Block UDP Port ตรวจ sudo ufw status หรือ Cloud Provider Security Group ว่าเปิด Port 51820 UDP แล้ว
เพิ่ม DNS = 1.1.1.1 ใน Client Config ใต้ [Interface] ถ้าใช้ systemd-resolved อาจต้อง resolvectl dns wg0 1.1.1.1
เพิ่ม PersistentKeepalive = 25 ใน Peer Config ของ Client เพื่อให้ NAT Table ไม่หมดอายุ
WireGuard เร็วกว่า OpenVPN และ IPSec อย่างเห็นได้ชัดเพราะ 3 เหตุผลหลักเหตุผลแรกคือ WireGuard ทำงานใน Linux kernel space ตั้งแต่ Linux 5.6 เป็นต้นมาในขณะที่ OpenVPN ทำงานใน user space ทำให้ต้อง context switch ระหว่าง kernel และ user space ทุกครั้งที่มี packet ผ่านซึ่งเป็น overhead ที่สะสมมากเมื่อ traffic สูง WireGuard ไม่มี overhead นี้เลยเพราะทุกอย่างอยู่ใน kernel
เหตุผลที่สองคือ WireGuard ใช้ cryptographic primitives ที่ทันสมัยและเร็วได้แก่ ChaCha20 สำหรับ symmetric encryption Poly1305 สำหรับ authentication Curve25519 สำหรับ key exchange BLAKE2s สำหรับ hashing และ SipHash24 สำหรับ hashtable keys algorithm เหล่านี้ถูกออกแบบมาให้ทำงานเร็วบน hardware ทั่วไปโดยเฉพาะ ARM processor ที่ไม่มี AES-NI instruction ทำให้ WireGuard เร็วกว่า OpenVPN บนมือถือและ Raspberry Pi อย่างเห็นได้ชัด
เหตุผลที่สามคือ codebase ที่เล็กมาก WireGuard มี code เพียง 4000 บรรทัดในขณะที่ OpenVPN มีมากกว่า 100000 บรรทัด code ที่น้อยกว่าหมายถึง attack surface ที่น้อยกว่า audit ง่ายกว่าและ bug น้อยกว่า Linus Torvalds เองยังชมว่า WireGuard เป็น work of art เมื่อเทียบกับ IPSec ที่เขาเรียกว่า horror ผลทดสอบ throughput บน server ที่มี 1Gbps network WireGuard ทำได้ 900 ถึง 950 Mbps ในขณะที่ OpenVPN ทำได้แค่ 200 ถึง 300 Mbps ต่างกันถึง 3 เท่าสำหรับ use case ที่ต้องการ throughput สูงเช่น backup ข้าม site หรือ replication ระหว่าง data center WireGuard เป็นตัวเลือกที่ดีที่สุดในปี 2026
| Criteria | WireGuard ✅ | OpenVPN |
|---|---|---|
| Setup Time | 5 นาที | 30-60 นาที |
| Config Lines | 15 บรรทัด | 50+ บรรทัด |
| Speed | 900 Mbps | 250 Mbps |
| Battery (มือถือ) | ดีมาก | กินแบตมากกว่า |
| TCP Fallback | ❌ ไม่มี | ✅ มี |
| Plugin System | ❌ ไม่มี | ✅ มี |
| Obfuscation | ต้องใช้ Tool เสริม | ✅ รองรับ |
| In Kernel | ✅ Linux 5.6+ | ❌ User Space |
สรุป: ถ้าไม่ต้องการ TCP Fallback หรือ Obfuscation ให้เลือก WireGuard เร็วกว่าง่ายกว่าปลอดภัยกว่า
WireGuard ไม่ได้เหมาะแค่สำหรับ personal VPN เท่านั้นแต่ใช้งานในองค์กรได้ดีเยี่ยมสำหรับ site-to-site VPN ที่เชื่อมต่อ 2 สำนักงานเข้าด้วยกัน WireGuard ทำได้ง่ายมากแค่ตั้ง peer ให้ทั้ง 2 ฝั่ง route traffic ข้าม tunnel ทำให้เครื่องใน office A เข้าถึง server ใน office B ได้เหมือนอยู่ network เดียวกันสำหรับ remote access ที่ให้พนักงานเชื่อมต่อจากบ้าน WireGuard client มีให้ทุก platform ทั้ง Windows macOS Linux iOS และ Android ตั้งค่าง่ายมากแค่ scan QR code
สำหรับองค์กรที่มีพนักงาน remote มากกว่า 50 คนผมแนะนำใช้ WireGuard ร่วมกับ configuration management เช่น Ansible เพื่อ automate การสร้าง peer config และ distribute ให้พนักงานแต่ละคนลดงาน manual ลงได้มากนอกจากนี้ควรมี monitoring ด้วย Prometheus เพื่อดูว่า tunnel ไหนขาด bandwidth usage เท่าไหร่และ latency เป็นอย่างไร
เรื่อง security สำหรับ WireGuard ในองค์กรควร rotate key pair เป็นประจำอย่างน้อยทุก 90 วัน revoke peer ทันทีเมื่อพนักงานลาออกใช้ firewall rules จำกัดว่า VPN user เข้าถึง resource ไหนได้บ้างไม่ควรให้เข้าถึงทุกอย่างในเครือข่ายผมแนะนำ combine WireGuard กับ SSH Security Hardening เพื่อ defense in depth สำหรับ server ที่อยู่หลัง VPN ด้วยครับสำหรับคนที่ต้องการเปรียบเทียบกับ OpenVPN แบบละเอียดอ่านได้ที่ OpenVPN Server Setup
💡 อ่านเพิ่มเติม: iCafeForex.com — แหล่งความรู้ Forex และ Gold Trading จากผู้เชี่ยวชาญ | XMSignal.com/th — สัญญาณเทรด XM
📚 แนะนำ: SiamLancard.com — รีวิวอุปกรณ์ IT | iCafeForex สอนเทรด Forex
นอกจาก personal VPN และ corporate remote access แล้ว WireGuard ยังมี use cases ที่น่าสนใจอีกหลายรูปแบบรูปแบบแรกคือ mesh VPN ที่เชื่อมต่อ server หลายตัวเข้าด้วยกันโดยไม่ต้องมี central VPN server ใช้ tools เช่น Tailscale หรือ Netmaker ที่สร้างอยู่บน WireGuard protocol ทำให้ server ทุกตัวเชื่อมต่อหากันได้โดยตรงเหมาะสำหรับ distributed system ที่มี server อยู่หลาย data center หรือหลาย cloud provider
รูปแบบที่สองคือ container networking ใช้ WireGuard เชื่อมต่อ Kubernetes cluster ที่อยู่คนละ data center เข้าด้วยกันทำให้ pod ใน cluster A สามารถ communicate กับ pod ใน cluster B ได้เหมือนอยู่ network เดียวกันเหมาะสำหรับ multi-cluster deployment ที่ต้องการ disaster recovery หรือ geographic distribution
รูปแบบที่สามคือ IoT device management ใช้ WireGuard เชื่อมต่อ IoT device ที่อยู่หลัง NAT เข้ากับ management server ได้ง่ายเพราะ WireGuard ใช้ resource น้อยมากสามารถรันบน Raspberry Pi หรือ embedded device ที่มี RAM แค่ 64 MB ได้สบายช่วยให้ remote manage device ที่อยู่หลัง firewall ได้โดยไม่ต้อง port forward
รูปแบบที่สี่คือ gaming VPN ที่ต้องการ low latency WireGuard มี overhead น้อยกว่า OpenVPN มากทำให้ ping เพิ่มขึ้นแค่ 1 ถึง 2 ms ในขณะที่ OpenVPN อาจเพิ่ม 5 ถึง 10 ms สำหรับเกมที่ต้องการ response time เร็วเช่น FPS หรือ fighting games ทุก millisecond มีความหมาย WireGuard จึงเป็นตัวเลือกที่ดีที่สุดสำหรับ gaming VPN
สิ่งที่ต้องระวังเมื่อใช้ WireGuard คือ WireGuard ไม่มี built-in user management ไม่มี dynamic IP assignment ที่ซับซ้อนและไม่มี TCP fallback ถ้าต้องการ feature เหล่านี้ต้องใช้ tools เสริมเช่น wg-easy สำหรับ web UI management หรือ Firezone สำหรับ SSO integration อย่างไรก็ตามสำหรับ use case ส่วนใหญ่ WireGuard ที่ตั้งค่าตามบทความนี้เพียงพอสำหรับทั้ง personal และ small business ใช้งานครับ
นอกจาก personal VPN และ corporate remote access แล้ว WireGuard ยังมี use cases ที่น่าสนใจอีกหลายรูปแบบรูปแบบแรกคือ mesh VPN ที่เชื่อมต่อ server หลายตัวเข้าด้วยกันโดยไม่ต้องมี central VPN server ใช้ tools เช่น Tailscale หรือ Netmaker ที่สร้างอยู่บน WireGuard protocol ทำให้ server ทุกตัวเชื่อมต่อหากันได้โดยตรงเหมาะสำหรับ distributed system ที่มี server อยู่หลาย data center หรือหลาย cloud provider
รูปแบบที่สองคือ container networking ใช้ WireGuard เชื่อมต่อ Kubernetes cluster ที่อยู่คนละ data center เข้าด้วยกันทำให้ pod ใน cluster A สามารถ communicate กับ pod ใน cluster B ได้เหมือนอยู่ network เดียวกันเหมาะสำหรับ multi-cluster deployment ที่ต้องการ disaster recovery หรือ geographic distribution
รูปแบบที่สามคือ IoT device management ใช้ WireGuard เชื่อมต่อ IoT device ที่อยู่หลัง NAT เข้ากับ management server ได้ง่ายเพราะ WireGuard ใช้ resource น้อยมากสามารถรันบน Raspberry Pi หรือ embedded device ที่มี RAM แค่ 64 MB ได้สบายช่วยให้ remote manage device ที่อยู่หลัง firewall ได้โดยไม่ต้อง port forward
รูปแบบที่สี่คือ gaming VPN ที่ต้องการ low latency WireGuard มี overhead น้อยกว่า OpenVPN มากทำให้ ping เพิ่มขึ้นแค่ 1 ถึง 2 ms ในขณะที่ OpenVPN อาจเพิ่ม 5 ถึง 10 ms สำหรับเกมที่ต้องการ response time เร็วเช่น FPS หรือ fighting games ทุก millisecond มีความหมาย WireGuard จึงเป็นตัวเลือกที่ดีที่สุดสำหรับ gaming VPN
สิ่งที่ต้องระวังเมื่อใช้ WireGuard คือ WireGuard ไม่มี built-in user management ไม่มี dynamic IP assignment ที่ซับซ้อนและไม่มี TCP fallback ถ้าต้องการ feature เหล่านี้ต้องใช้ tools เสริมเช่น wg-easy สำหรับ web UI management หรือ Firezone สำหรับ SSO integration อย่างไรก็ตามสำหรับ use case ส่วนใหญ่ WireGuard ที่ตั้งค่าตามบทความนี้เพียงพอสำหรับทั้ง personal และ small business ใช้งานครับ
WireGuard เปลี่ยนวิธีที่เราใช้ VPN จากสิ่งที่ซับซ้อนต้องอ่านคู่มือยาวๆมาเป็นสิ่งที่ตั้งได้ใน 5 นาทีด้วย Code แค่ 4,000 บรรทัดที่ Audit ได้ง่าย Crypto ที่ทันสมัยและ Performance ระดับ Kernel Space
สิ่งที่ผมแนะนำ: ตั้ง WireGuard Server บน VPS ราคาถูกใช้ Script เพิ่ม Client แล้วส่ง QR Code ให้ทุกู้คืนในทีมใช้เวลาทั้งหมดไม่ถึง 10 นาทีก็ได้ VPN Server ส่วนตัวที่ปลอดภัยและเร็วที่สุดในโลก
สนใจต่อยอดทักษะ IT สู่การลงทุน? iCafeForex.com สอน Forex ตั้งแต่เริ่มต้นมี EA Trading อัตโนมัติ เหมือนตั้ง VPN Server ครั้งเดียวแล้วทำงานให้ตลอด
รับ สัญญาณเทรด Forex ฟรีจาก XMSignal — ไม่มีค่าใช้จ่ายเหมือน WireGuard ที่ฟรีแต่ทรงพลัง
อ่านเพิ่มเติม: สอนเทรด Forex | XM Signal | IT Hardware | อาชีพ IT