คู่มือปฏิบัติ
วิธีตั้งค่าเซิร์ฟเวอร์ VPN WireGuard บน Ubuntu ด้วยสคริปต์
เริ่มจากเซิร์ฟเวอร์ Ubuntu ใหม่จนได้ VPN ส่วนตัว พร้อมขั้นตอนตั้งค่า โปรไฟล์อุปกรณ์ และตรวจสอบเส้นทางอินเทอร์เน็ต
ทดสอบการติดตั้งเซิร์ฟเวอร์ การเชื่อมต่อจากคอนเทนเนอร์ Linux และความเร็ว Windows แล้ว ส่วน macOS, Ubuntu Desktop, iPhone และ Android ยังรอทดสอบบนอุปกรณ์จริง
1. เลือกเซิร์ฟเวอร์และเตรียมการเข้าถึง
คู่มือนี้ติดตั้งใหม่บน VPS Ubuntu 26.04 LTS ต้องมี IPv4 สาธารณะและรหัสผ่าน root หรือคีย์ SSH เลือกผู้ให้บริการและภูมิภาคตามความต้องการ
เราใช้ Vultr Shared CPU: 1 vCPU, RAM 1 GB, SSD 25 GB และโควตาทราฟฟิก 1 TB ต่อเดือน
เลือก IPv4 เพื่อเชื่อมต่อจากเครือข่ายที่ไม่มี IPv6 ได้ เซิร์ฟเวอร์ที่มีเพียง IPv6 ต้องตั้งค่าเพิ่มเพื่อเข้าเว็บไซต์ IPv4 เท่านั้น ซึ่งอยู่นอกคู่มือนี้
2. ตรวจสอบการเข้าสู่ระบบผ่าน SSH
Windows: ค้นหา PowerShell ใน Start แล้วเปิด Mac: กด Command+Space พิมพ์ Terminal แล้ว Enter Ubuntu Desktop: กด Ctrl+Alt+T
ทุกคำสั่งให้แทน SERVER_IP ด้วย IPv4 สาธารณะจากแผงควบคุมเซิร์ฟเวอร์ เช่น ssh root@SERVER_IP คือเข้าสู่ระบบด้วย root
เลือกคำสั่งรหัสผ่าน หรือคำสั่งคีย์ SSH ที่มีอยู่แล้ว และเปลี่ยนพาธคีย์ตัวอย่างเป็นของคุณ
ครั้งแรก SSH อาจถามว่าจะเชื่อถือเซิร์ฟเวอร์หรือไม่ ตรวจสอบที่อยู่ VPS พิมพ์ yes แล้ว Enter ใส่รหัสผ่าน root เมื่อถูกถาม ขณะพิมพ์จะไม่เห็นตัวอักษร
เมื่อเข้าได้แล้ว ให้ใช้คำสั่งเซิร์ฟเวอร์ด้านล่างตรวจสอบ Ubuntu จากนั้น exit กลับมายังคอมพิวเตอร์
ssh root@SERVER_IPssh -i ~/.ssh/id_ed25519 root@SERVER_IPcat /etc/os-release
exitหากไม่พบคำสั่ง ssh
Windows: เปิด PowerShell ด้วย Run as administrator แล้วรันคำสั่งด้านล่าง เมื่อติดตั้งเสร็จให้ปิดและเปิด PowerShell ปกติ Ubuntu ใช้คำสั่งสำหรับ Ubuntu ส่วน macOS มีไคลเอนต์ SSH อยู่แล้ว
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0คัดลอกตามนี้ OpenSSH.Client~~~~0.0.1.0 คือรหัสส่วนประกอบ Windows อย่าเปลี่ยนเครื่องหมายตัวหนอนหรือตัวเลข
sudo apt update
sudo apt install openssh-client3. ดาวน์โหลดและตรวจดูชุดติดตั้ง
ดาวน์โหลด ZIP แล้วแตกไฟล์ เก็บสคริปต์ทั้งห้าไว้ด้วยกันในโฟลเดอร์ wireguard-guide ทำตามขั้นตอน Windows, Mac หรือ Ubuntu เพียงชุดเดียว
สคริปต์ติดตั้ง WireGuard บน VPS และสร้างโปรไฟล์อุปกรณ์ อาจต้องกรอกรหัสผ่านเซิร์ฟเวอร์หลายครั้ง
4a. ตั้งค่าเซิร์ฟเวอร์จาก Windows
เปิดโฟลเดอร์ wireguard-guide ที่แตกแล้วใน File Explorer พิมพ์ powershell ในแถบที่อยู่แล้ว Enter เพื่อเปิด PowerShell ในโฟลเดอร์นั้น
รันหนึ่งในสองคำสั่ง เปลี่ยน SERVER_IP และพาธคีย์ SSH หากใช้คีย์
windows หลัง -Device คือชื่อโปรไฟล์ คอมพิวเตอร์เครื่องที่สองให้ใช้ชื่ออื่น เช่น laptop แต่ละเครื่องต้องมีโปรไฟล์แยก เพื่อเพิกถอนเครื่องเดียวโดยไม่ตัดเครื่องอื่น
เมื่อเสร็จ พิมพ์ %USERPROFILE%\WireGuard ในแถบที่อยู่ File Explorer เปิดโฟลเดอร์ชื่อเซิร์ฟเวอร์และอุปกรณ์เพื่อหา windows.conf สคริปต์แสดงพาธเต็มด้วย เปิด VPN ในขั้นตอน 5
.\Connect-WireGuardServer.ps1 -Server SERVER_IP -Device windows.\Connect-WireGuardServer.ps1 -Server SERVER_IP -Device windows -IdentityFile "$HOME\.ssh\id_ed25519"หาก PowerShell บล็อกสคริปต์
หากแจ้งว่าไฟล์ไม่มีลายเซ็นดิจิทัล ให้รันคำสั่งนี้ในโฟลเดอร์เดิมแล้วลองติดตั้งอีกครั้ง
Unblock-File -LiteralPath .\Connect-WireGuardServer.ps1หากแจ้งว่าปิดการรันสคริปต์ ให้รันคำสั่ง ยืนยันข้อความถาม แล้วลองใหม่ การเปลี่ยนแปลงสิ้นสุดเมื่อปิดหน้าต่าง PowerShell นี้
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
Unblock-File -LiteralPath .\Connect-WireGuardServer.ps1หากยังติดนโยบาย ให้หยุดและเก็บข้อความผิดพลาดไว้ตรวจสอบ
4b. ตั้งค่าเซิร์ฟเวอร์จาก Mac
เปิด Terminal พิมพ์ cd ตามด้วยช่องว่าง ลากโฟลเดอร์ wireguard-guide จาก Finder มาใส่ แล้ว Enter
รันหนึ่งคำสั่งรวม bash ด้านหน้า เปลี่ยน SERVER_IP และพาธคีย์ถ้าใช้ mac คือชื่อโปรไฟล์ เครื่องอื่นให้ใช้ชื่อใหม่ เช่น macbook
เมื่อเสร็จ กด Command+Shift+H ใน Finder เพื่อเปิดโฟลเดอร์ผู้ใช้ เปิด WireGuard และโฟลเดอร์เซิร์ฟเวอร์-อุปกรณ์ จะพบ mac.conf สคริปต์แสดงพาธเต็มด้วย
bash ./connect-wireguard-server.sh SERVER_IP macbash ./connect-wireguard-server.sh SERVER_IP mac 22 ~/.ssh/id_ed255194c. ตั้งค่าเซิร์ฟเวอร์จาก Ubuntu Desktop
กด Ctrl+Alt+T พิมพ์ cd และช่องว่าง ลากโฟลเดอร์ wireguard-guide ใส่ Terminal แล้ว Enter
แทน SERVER_IP แล้วรันหนึ่งคำสั่ง ubuntu คือชื่อโปรไฟล์ ไม่ต้องใช้ sudo กับตัวเรียกสคริปต์นี้หรือการเข้าสู่ระบบ SSH
ในตัวจัดการไฟล์ เปิด Home, WireGuard และโฟลเดอร์เซิร์ฟเวอร์-อุปกรณ์ โปรไฟล์อยู่ที่ ~/WireGuard/SERVER_IP-ubuntu/ubuntu.conf โดยใช้ที่อยู่เซิร์ฟเวอร์จริง คู่มือนี้เชื่อมต่อด้วย NetworkManager
bash ./connect-wireguard-server.sh SERVER_IP ubuntubash ./connect-wireguard-server.sh SERVER_IP ubuntu 22 ~/.ssh/id_ed255195a. เชื่อมต่อ Windows หรือ macOS
ติดตั้งแอป WireGuard ทางการ นำเข้าไฟล์ .conf ที่สร้าง อนุญาต VPN แล้วเปิดการเชื่อมต่อ ชื่อเมนูนำเข้าอาจต่างกันตามรุ่นแอป
โปรไฟล์ส่ง IPv4 เข้าอุโมงค์และมีเส้นทางเริ่มต้นของ IPv6 เพื่อไม่ให้ IPv6 วิ่งข้าม VPN เซิร์ฟเวอร์ไม่ให้บริการอินเทอร์เน็ต IPv6 ให้ตรวจสอบผลบนอุปกรณ์ตามด้านล่าง
โปรไฟล์มีคีย์ส่วนตัว ผู้มีสำเนาอาจใช้ตัวตน VPN ของอุปกรณ์ได้ อย่าส่งในคำร้องขอความช่วยเหลือ อัปโหลดไปยังเว็บสร้าง QR หรือใช้ร่วมหลายอุปกรณ์
5b. เชื่อมต่อ Ubuntu Desktop ด้วย NetworkManager
NetworkManager นำเข้าโปรไฟล์ จัดการ DNS และเส้นทางโดยไม่ขึ้นกับรุ่นหน้าต่างกราฟิก รันคำสั่งบนคอมพิวเตอร์ ไม่ใช่ใน SSH ของ VPS ตรวจสอบว่ามี nmcli และ NetworkManager ทำงานก่อน
ubuntu.conf สร้างการเชื่อมต่อชื่อ ubuntu ถ้าชื่อซ้ำ ให้เปลี่ยนชื่ออุปกรณ์และปรับคำสั่ง นำเข้าเพียงครั้งเดียว จากนั้นใช้ up และ down การตั้งค่าด้านล่างปิดการเชื่อมต่ออัตโนมัติตอนเปิดเครื่อง
DNS นี้ให้ VPN เป็นลำดับแรกสำหรับทุกชื่อขณะเชื่อมต่อ DNS ปลอดภัยของเบราว์เซอร์อาจต่างออกไป ตรวจ IP, DNS และ IPv6 ในขั้นตอน 7 วิธีนี้ยังไม่ผ่านการทดสอบบน Ubuntu Desktop จริง ผลคอนเทนเนอร์ไม่ยืนยัน DNS หรือ IPv6 ของเดสก์ท็อป
อย่าเปิดโปรไฟล์เดียวกันด้วย wg-quick พร้อมกัน เพราะเส้นทางอาจชนกัน ใช้ nmcli ตรวจและตัดการเชื่อมต่อได้แม้หน้าจอกราฟิกแสดงต่างกัน
nmcli --version
systemctl is-active NetworkManagersudo nmcli connection import type wireguard file "$HOME/WireGuard/SERVER_IP-ubuntu/ubuntu.conf"
sudo nmcli connection modify ubuntu connection.autoconnect no ipv4.dns-priority -50 ipv4.dns-search "~."sudo nmcli connection up ubuntu
nmcli connection show --activesudo nmcli connection down ubuntu6. เชื่อมต่อ iPhone หรือ Android ด้วย QR
ติดตั้งแอป WireGuard ทางการจากลิงก์ App Store หรือ Google Play ด้านล่าง
บนคอมพิวเตอร์ เข้า VPS อีกครั้งด้วย ssh root@SERVER_IP หรือคำสั่งคีย์ SSH คำสั่งสำหรับโทรศัพท์จะสร้างโปรไฟล์และแสดง QR
ใน WireGuard บนโทรศัพท์ เลือกเพิ่มอุโมงค์ด้วยการสแกน QR สแกนจากคอมพิวเตอร์ ตั้งชื่อ อนุญาต VPN แล้วเปิด
ใช้โปรไฟล์แยกทุกเครื่อง อย่าแชร์ QR เพราะให้สิทธิ์เข้า VPN ถ้าโค้ดตัดบรรทัดผิด ให้ขยาย Terminal แล้วแสดงใหม่
python3 /root/internetspeed-wireguard/manage-client.py add iphone
qrencode -t ANSIUTF8 < /etc/wireguard/clients/iphone.confpython3 /root/internetspeed-wireguard/manage-client.py add android
qrencode -t ANSIUTF8 < /etc/wireguard/clients/android.conf7. ตรวจว่าอินเทอร์เน็ตผ่าน VPN
ก่อนเปิด VPN เปิด My IP จากลิงก์ด้านล่างแล้วจด IP เปิด WireGuard รีเฟรช My IP และเทียบกับ IPv4 สาธารณะของ VPS
ถ้าหน้าเปิดได้และแสดงที่อยู่ VPS การเชื่อมต่อเบราว์เซอร์นั้นผ่าน VPN แล้ว ถ้ายังเป็นที่อยู่เดิม ดูการแก้ปัญหา
นี่ตรวจเฉพาะเบราว์เซอร์ ไม่ใช่ทุกแอปหรือการป้องกันเมื่อ VPN หลุด การตรวจเพิ่มเติมด้านล่างครอบคลุม DNS และ IPv6
เพิ่มเติม: ตรวจ IPv6 และ DNS
IPv6: เปิด Test IPv6 ก่อนเชื่อมต่อและดูว่ามี IPv6 หรือไม่ เปิด VPN แล้วทดสอบซ้ำ การตั้งค่า IPv4 นี้ไม่ควรมีอินเทอร์เน็ต IPv6 ที่ใช้งานได้ ถ้ายังเห็น IPv6 เดิม แสดงว่าวิ่งนอกอุโมงค์ ถ้าเดิมไม่มี IPv6 การทดสอบนี้บอกพฤติกรรมบนเครือข่าย IPv6 ไม่ได้
DNS: ขณะเปิด VPN ใช้ Standard test ใน DNS Leak Test โปรไฟล์ใช้ Cloudflare DNS ถ้าเห็นผู้ให้บริการอินเทอร์เน็ตบ้าน ให้ตรวจ DNS อุปกรณ์ ผู้ให้บริการอื่นอาจมาจาก Secure DNS ของเบราว์เซอร์ จึงยังไม่ใช่หลักฐานรั่วไหลอัตโนมัติ ผลไม่รับรองว่าทุกแอปได้รับการป้องกัน
8. แก้ปัญหาการเชื่อมต่อ
ถ้า My IP ยังเป็นที่อยู่เดิม ตรวจว่าโปรไฟล์ WireGuard เปิดแล้ว ปิดและเปิดหนึ่งครั้ง แล้วรีเฟรช My IP
ถ้าเปิด VPN แล้วเว็บไม่เข้า ปิด VPN แล้วลองหน้าเดิม ถ้ายังไม่ได้ ให้แก้อินเทอร์เน็ตปกติก่อน ถ้าเสียเฉพาะ VPN ให้ตรวจด้านล่าง
เพื่อเปรียบเทียบ ลองต่อคอมพิวเตอร์กับฮอตสปอตโทรศัพท์ หรือปิด Wi-Fi บนโทรศัพท์แล้วใช้ข้อมูลมือถือ อาจมีค่าข้อมูล นี่เป็นการทดสอบชั่วคราว ถ้าใช้ได้เฉพาะมือถือ ปัญหาเกี่ยวข้องกับ Wi-Fi นั้น แต่ยังไม่ระบุสาเหตุแน่ชัด
ถ้าติดตั้งหยุดเพราะข้อผิดพลาด ให้เก็บข้อความสุดท้าย แก้สาเหตุแล้วรันคำสั่งเดิมด้วยชื่ออุปกรณ์เดิม โปรไฟล์เดิมจะยังอยู่
ตรวจว่าเซิร์ฟเวอร์ VPN ทำงาน
เข้า SSH ตามขั้นตอน 2 แล้วรันคำสั่ง ควรได้ active ถ้าเป็น inactive หรือ failed ให้ใช้คำสั่งเริ่มใหม่แล้วตรวจซ้ำ ถ้ายังไม่ active ให้เก็บข้อผิดพลาด
systemctl is-active wg-quick@wg0systemctl restart wg-quick@wg0
systemctl is-active wg-quick@wg0การเริ่มใหม่ตัดอุปกรณ์ที่เชื่อมต่อชั่วครู่
ตรวจว่าอุปกรณ์ถึงเซิร์ฟเวอร์
เปิด VPN และ My IP แล้วรัน wg show บนเซิร์ฟเวอร์ หา latest handshake ใต้รายการอุปกรณ์ เช่น 10 seconds ago หมายถึงเพิ่งสร้างการเชื่อมต่อเข้ารหัส ถ้าไม่มีบรรทัดนี้ ยังไม่บันทึกการเชื่อมต่อสำเร็จของอุปกรณ์
ถ้าไม่มีการเชื่อมต่อใหม่ ตรวจ Endpoint ว่าเป็นที่อยู่ VPS ตามด้วย :51820 เปิด Firewall หรือ Security groups ในแผง VPS ถ้ามีไฟร์วอลล์ผูกอยู่ ต้องอนุญาต UDP ขาเข้าพอร์ต 51820 หน้าจอขึ้นกับผู้ให้บริการ ส่วนไฟร์วอลล์ Ubuntu สคริปต์ตั้งให้แล้ว
ถ้ามี handshake ใหม่แต่เว็บยังไม่เข้า เก็บผลและข้อผิดพลาดหรือบันทึกแอป การสุ่มเปลี่ยนเครือข่ายขั้นสูงทำให้วิเคราะห์ยากขึ้น
wg show9. คาดหวังความเร็วเท่าไร?
การทดสอบ Windows ได้ดาวน์โหลดประมาณ 350–400 Mbps และอัปโหลด 450–500 Mbps ใช้วิธีเดียวกับ VPN อื่นในโครงการ เส้นทาง: ผู้ใช้ San Diego → VPN ใน San Francisco Bay Area → เซิร์ฟเวอร์วัดผล Seattle
Vultr Shared CPU vc2-1c-1gb: 1 vCPU, RAM 1 GB, SSD 25 GB, ทราฟฟิก 1 TB ต่อเดือน ราคา ณ ตอนสร้าง 5 ดอลลาร์สหรัฐต่อเดือน
นี่คือผลของชุดนี้ ความเร็วของคุณขึ้นกับอินเทอร์เน็ต เซิร์ฟเวอร์ และตำแหน่ง ยังไม่ได้เทียบแผน VPS หรือผู้ให้บริการอื่น
10. ค่าใช้จ่าย ความเป็นส่วนตัว และข้อจำกัด
VPN ส่วนตัวให้ควบคุมการตั้งค่าและเลือกทางออกหนึ่งแห่ง คุณรับผิดชอบอัปเดต บิล สิทธิ์อุปกรณ์และการกู้คืน ไม่ทำให้ไม่ระบุตัวตนต่อผู้ให้บริการโฮสติ้ง และไม่แทน HTTPS
การดูเว็บ วิดีโอ ดาวน์โหลด อัปโหลด และทดสอบความเร็วใช้โควตา VPS ตรวจยอดคงเหลือในแผงโฮสติ้ง ใช้เกินอาจมีค่าใช้จ่ายหรือถูกจำกัดตามแผน
ก่อนใช้ P2P อ่านเงื่อนไขปัจจุบันของผู้ให้บริการและกฎหมายที่เกี่ยวข้อง โปรโตคอลกับสิทธิ์เนื้อหาเป็นคนละเรื่อง ดาวน์โหลดและแชร์เฉพาะสิ่งที่มีสิทธิ์ ไม่ใช่ทุกโฮสต์อนุญาต P2P ทุกแบบ
IP ศูนย์ข้อมูลอาจเจอ CAPTCHA ข้อจำกัดบริการหรือสตรีมมิง WireGuard ปกติไม่รับประกันเข้าจากทุกเครือข่ายที่กรองข้อมูล VPS เดียวเป็นจุดขัดข้องจุดเดียว ไม่มีหลายตำแหน่งและเซิร์ฟเวอร์ทดแทนเหมือนผู้ให้บริการรายใหญ่
11. เพิ่มอุปกรณ์ เพิกถอนสิทธิ์ และดูแลเซิร์ฟเวอร์
หนึ่งโปรไฟล์ต่ออุปกรณ์ ถ้าโทรศัพท์หาย ให้ลบ peer ชื่อนั้นบนเซิร์ฟเวอร์และสำเนาโปรไฟล์ที่เหลือ แล้วสร้างใหม่ การลบไฟล์ในโทรศัพท์อย่างเดียวไม่เพิกถอนสิทธิ์บนเซิร์ฟเวอร์
อัปเดตความปลอดภัย Ubuntu และตรวจว่าต้องรีบูตหรือไม่ รีบูตในเวลาที่เหมาะแล้วตรวจ VPN กลับมา ปกป้องบัญชีโฮสติ้งและ SSH เปลี่ยนการยืนยัน SSH แยกขั้นตอนโดยมีทางเข้าอื่นที่ทดสอบแล้ว
สคริปต์ถอนจะหยุด VPN นี้ ลบการตั้งค่าและกฎไฟร์วอลล์ที่มันดูแล แต่คง SSH, UFW และแพ็กเกจไว้ การส่งต่อยังเปิดจนระบบใช้นโยบายหลังรีบูต ถอน VPN ไม่หยุดบิล VPS ให้เก็บข้อมูลจำเป็นแล้วลบเซิร์ฟเวอร์ผ่านผู้ให้บริการเมื่อไม่ใช้
python3 /root/internetspeed-wireguard/manage-client.py remove iphoneapt update
apt list --upgradable
test ! -f /var/run/reboot-required || cat /var/run/reboot-requiredbash /root/internetspeed-wireguard/remove-server.sh --confirm