ติดตั้ง WireGuard VPN บน Cloud VPS — คู่มือฉบับสมบูรณ์

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