สร้าง VPN ส่วนตัวด้วย WireGuard + VPS

เคยไหม… ไปทำงานที่ Office แต่อยาก “มุด” VPN กลับไปที่คอมพิวเตอร์ที่บ้าน แต่ (ดื้อ) ไม่อยากใช้บริการพวก cloud remote desktop ที่ทั้งช้าและหน่วง บางครั้งเราแค่ต้องการเข้าไปเอาไฟล์บางอย่าง หรืออยากเชื่อมต่อกลับไปใช้ทรัพยากรในบ้านให้เหมือนนั่งอยู่ตรงนั้นจริง ๆ แต่ก็ไม่อยากเสียเงินเยอะเกินจำเป็น หรือทำอะไรที่ดูซับซ้อนเกินไป
บทความนี้เลยอยากเสนอวิธีที่ตรงกลาง ๆ ใช้ง่าย ไม่ซับซ้อนเกินไป และไม่แพงจนเกินไป (จริง ๆ 5 usd ต่อเดือนบน VPS ก็แทบจะเกินความจำเป็นแล้ว) ซึ่งก็คือการใช้ WireGuard VPN บน VPS คุณจะได้ทั้งความเร็ว ความปลอดภัย และเราควบคุมได้ โดยไม่ต้อง hard mode แต่ยังได้ผลลัพธ์ที่ใช้งานได้จริง
WireGuard คืออะไร
WireGuard คือ VPN protocol ที่ถูกออกแบบมาให้ เบา รวดเร็ว และปลอดภัย โดยใช้ modern cryptography ที่มีประสิทธิภาพสูง เช่น ChaCha20, Poly1305 และ Curve25519 จุดเด่นของ WireGuard คือ code base ขนาดเล็กเพียง ~4,000 บรรทัด เมื่อเทียบกับ OpenVPN หรือ IPSec ที่มีหลักแสน ทำให้ตรวจสอบง่ายและลด attack surface
คุณสมบัติเด่น ๆ :
- ความเร็วสูง เพราะ ใช้ kernel module และ crypto ที่ optimized
- ง่ายต่อการติดตั้ง เพราะ config ไฟล์เพียงไม่กี่บรรทัด
- ปลอดภัย เพราะ ไม่มี legacy crypto ที่เสี่ยง
- Cross-platform เพราะ ใช้งานได้ทั้ง Linux, Windows, macOS, iOS, Android
ทำไมต้องใช้ WireGuard + VPS
- ควบคุมได้เอง ไม่ต้องพึ่งพา provider commercial VPN
- ไม่มีการเก็บ log ที่ไม่พึงประสงค์ (แต่ต้องเชื่อใจ VPS provider ระดับหนึ่ง ก็ไม่ระดับหนึ่งอะ หลายระดับเลย)
- สามารถปรับแต่งได้ตามใจ เช่น redirect traffic ทั้งหมด, split tunnel, หรือทำ mesh network
- เหมาะกับ Red Team / Pentest ใช้เป็น Jump Server หรือ C2 tunnel
- ต้นทุนต่ำ ถ้าเลือก VPS ที่ราคาเริ่มต้นเพียงไม่กี่ดอลลาร์ต่อเดือนนะ

ขั้นตอนการ Setup WireGuard บน VPS (ขอยกตัวอย่างที่เลือกใช้ -> Vultr)
(เหตุผลที่เลือกใช้ Vultr = ไม่มีอะไรเป็นพิเศษ มีพี่แนะนำมาเฉยๆ ดังนั้นเลือกเจ้าที่ชอบได้เลย)
1.Deploy VPS (Vultr)
- สมัคร Vultr
- เลือก OS โดยผมเลือกเป็น Debian
- เลือก plan (เริ่มต้น 5 usd ต่อเดือนก็เพียงพอ มันจะให้หักบัตรแบบเหมา ผมกดไป 10 usd แต่ใช้จริง ประมาณ 2 usd)
- สร้าง instance ของ VPS โดยเลือก spec ที่อยากได้ และจ่ายไหว และก็สร้างโลด
(โดยผมเองใช้ไม่บ่อย แต่ก็เปิด มา 2 สัปดาห์ โดนชาจอยู่ ที่ 1.89 usd)

2. ติดตั้ง WireGuard
sudo apt update && sudo apt upgrade -y
sudo apt install wireguard -y
3. คำสั่งสร้าง Key Pair สำหรับ Server และ Client
โดยสามารถสร้างที่ VPS ได้เลย
wg genkey | tee server_private.key | wg pubkey > server_public.key
wg genkey | tee client_private.key | wg pubkey > client_public.key
4. สร้าง Config ที่ไฟล์ /etc/wireguard/wg0.conf
[Interface]
PrivateKey =
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = /sbin/sysctl -w net.ipv4.ip_forward=1
PostDown = /sbin/sysctl -w net.ipv4.ip_forward=0
[Peer]
PublicKey =
AllowedIPs = 10.0.0.2/24
[Peer]
PublicKey =
AllowedIPs = 10.0.0.3/24
5. เปิดใช้งาน IP Forwarding
echo “net.ipv4.ip_forward=1” | sudo tee -a /etc/sysctl.conf
sysctl -p
6. Start WireGuard
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
การตั้งค่า Client
บน Windows (Client)
- ดาวน์โหลด WireGuard Client จาก wireguard.com
- Gen key ผ่าน GUI ได้เลย
- สร้าง config:
[Interface]
PrivateKey =
Address = 10.0.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey =
Endpoint = <VPS_IP>:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25
4. Import config เข้า Wireguard
5. เปิด Firewall rule ให้กับ วง IP และ Port ที่อยากให้ผ่านเข้ามา
New-NetFirewallRule -DisplayName “RDP via VPN” -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3389 -RemoteAddress 10.0.0.0/24
6.Activate ผ่าน WireGuard
บน MacOS (Client)
- Install wireguard : brew install wireguard-tools
- Gen key : wg genkey | tee ~/mac_priv.key | wg pubkey > ~/mac_pub.key
- สร้าง Config :
[Interface]
PrivateKey =
Address = 10.0.0.3/24
DNS = 1.1.1.1
[Peer]
PublicKey =
Endpoint = <VPS_IP>:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25
บน iOS/Android (Client)
- ดาวน์โหลด WireGuard App
- Gen key pair ของ iOS/Android
- สร้าง Conf แบบเดียวกันกับข้างบน แต่เปลี่ยน PrivateKey และ Address
- Gen QR code จาก ไฟล์ conf สมมุติว่าอยู่ที่ ~/ios.conf
qrencode -t ansiutf8 < ~/ios.conf
- สแกน QR code ด้วย WireGuard App แล้วกด Connect
ทุกครั้งที่เรา สร้างเพิ่ม เครื่องเข้า Network เราต้องกลับมาแก้ไฟล์ Conf บน VPS
sudo vi /etc/wireguard/wg0.conf (แก้ไขไฟล์ conf โดยการเพิ่ม [Peer] ทุกครั้ง ที่เราเพิ่มเครื่องเข้า Network)wg-quick up wg0
RustDesk + WireGuard
- RustDesk คืออะไร: เป็นโปรแกรม remote desktop แบบ open-source ที่ถูกเขียนด้วยภาษา Rust จุดเด่นคือสามารถ self-host server ได้เอง ไม่ต้องพึ่งบริการกลางของผู้พัฒนา คุณจึงควบคุมข้อมูลได้เต็มมือ
- ดีกว่าเจ้าอื่นอย่างไร:
- Open-source: ไม่มี hidden code สามารถตรวจสอบได้ ต่างจาก TeamViewer/AnyDesk ที่ปิดซอร์ส
- Self-host : คุณตั้ง server เองบน VPS ได้ (เช่น Vultr) เพื่อความเป็นส่วนตัวเต็มที่
- Cross-platform : รองรับ Windows, macOS, Linux, iOS, Android
- Freeeeee **:**ไม่ต้องซื้อ license commercial แบบ TeamViewer
- ฟีเจอร์ครบ : Remote desktop, file transfer, clipboard sync, และเสียง
หลายครั้งที่เราไม่ได้อยากได้แค่ VPN อย่างเดียว แต่ยังอยากจะ remote desktop กลับเข้าไปที่คอมพิวเตอร์ที่บ้านเพื่อเปิดหน้าจอ ควบคุม หรือส่งไฟล์ แต่ดันไม่ได้ใช้ Windows Pro หรือ Enterprise เลยไม่มีโหมด RDP ให้เล่นกัน
RustDesk จึงเข้ามาเติมเต็มการใช้งานนี้ได้อย่างลงตัว โดยใช้ร่วมกับ WireGuard
ทำงานอย่างไรเมื่อใช้คู่กัน:
- WireGuard ทำหน้าที่สร้าง tunnel ที่เข้ารหัสและเชื่อมต่อ network ระหว่าง VPS กับบ้าน
- RustDesk ทำงานบนชั้น application เพื่อ remote desktop ผ่าน tunnel ของเรา ที่ WireGuard สร้างไว้
ข้อดีของการใช้คู่กัน:
- ได้ทั้งการควบคุม traffic ระดับ network (ผ่าน WireGuard)
- และการ remote desktop/ส่งไฟล์ที่ง่าย (ผ่าน RustDesk)
- ไม่ต้องกลัวเรื่อง NAT/Firewall เพราะ WireGuard เปิดเส้นทางไว้แล้ว
โครงสร้างที่ใช้ :
ติดตั้ง RustDesk server บน VPS ตัวเดียวกับ WireGuard และให้ client เชื่อม VPN ก่อน แล้วใช้ RustDesk ผ่าน private IP เอา
Use Cases อื่นกรณีใช้แค่ VPN
- Red Team / Pentest
- ใช้ WireGuard เชื่อม compromised host กลับเข้ามายัง C2 ผ่าน VPS
- Evasion: traffic ดูเหมือน UDP ปกติ
2. Secure Remote Work
- ต่อ VPN แล้วเข้า Home network ได้เหมือนอยู่บ้าน
3. Geo-bypass
- ดู Netflix/เล่นเกมใน region อื่น ๆ ได้ (ว่าไป)
4. IoT/Smart Home Access
- เชื่อมกลับเข้ามาดู CCTV หรือ IoT device ได้อย่างปลอดภัย
5. Mesh VPN
- ทำ peer-to-peer network เชื่อมหลาย site เข้าด้วยกันผ่าน WireGuard
Hardening WireGuard VPN
- เปลี่ยน Port จาก 51820 เป็น random port เพื่อลด fingerprinting
- จำกัด AllowedIPs ไม่ให้ client ถูกใช้เป็น proxy ให้คนอื่น
- ป้องกัน DNS Leak โดยระบุ DNS server ใน config
- Rotate Keys เป็นระยะเพื่อความปลอดภัย
- Firewall VPS ให้เปิดเฉพาะ UDP port ของ WireGuard ก็พอ
Security Consideration บน VPS
แม้คุณจะคุม VPS ได้ แต่ต้องเข้าใจว่า VPS provider สามารถ monitor network traffic ในระดับ hypervisor ได้เสมอ หากต้องการ privacy สูงสุด อาจต้อง chain VPN, proxy หรือใช้ double-hop WireGuard server
แนวทางเพิ่มเติม:
- Patch OS และ WireGuard อยู่เสมอ
- ใช้ Fail2Ban/ufw/nftables กัน brute-force
- Monitor log (journalctl -u wg-quick@wg0)
สรุป
WireGuard + VPS (เช่น Vultr) เป็นโซลูชัน VPN ส่วนตัว Easy Mode ที่ทั้ง ปลอดภัย เร็ว และยืดหยุ่น เหมาะสำหรับการใช้งานทั้งในชีวิตประจำวันและงานด้าน Cyber Security และหากต้องการใช้งาน remote desktop ที่สะดวกและเป็นมิตรกับผู้ใช้ RustDesk คือเครื่องมือที่สามารถทำงานร่วมกันกับ WireGuard ได้อย่างลงตัว คุณจะได้ทั้ง VPN tunnel ที่เร็วและปลอดภัย และระบบ remote desktop ที่ง่ายต่อการใช้งานในคราวเดียว จุดสำคัญคือการ Config อย่างถูกต้อง + Hardening + Monitor จะช่วยให้โครงสร้างนี้ปลอดภัย และตอบโจทย์การใช้งานได้ครบถ้วน