InternetSpeed.online

ภาษา

บทความ

คู่มือปฏิบัติ

วิธีตั้งค่าเซิร์ฟเวอร์ 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 กลับมายังคอมพิวเตอร์

PowerShell หรือ Terminal บนคอมพิวเตอร์ — เข้าด้วยรหัสผ่าน
ssh root@SERVER_IP
PowerShell หรือ Terminal บนคอมพิวเตอร์ — คีย์ SSH ที่มีอยู่
ssh -i ~/.ssh/id_ed25519 root@SERVER_IP
บนเซิร์ฟเวอร์
cat /etc/os-release
exit
หากไม่พบคำสั่ง ssh

Windows: เปิด PowerShell ด้วย Run as administrator แล้วรันคำสั่งด้านล่าง เมื่อติดตั้งเสร็จให้ปิดและเปิด PowerShell ปกติ Ubuntu ใช้คำสั่งสำหรับ Ubuntu ส่วน macOS มีไคลเอนต์ SSH อยู่แล้ว

Windows — ติดตั้งไคลเอนต์ SSH ใน PowerShell ผู้ดูแลระบบ
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

คัดลอกตามนี้ OpenSSH.Client~~~~0.0.1.0 คือรหัสส่วนประกอบ Windows อย่าเปลี่ยนเครื่องหมายตัวหนอนหรือตัวเลข

Ubuntu Desktop — ติดตั้งไคลเอนต์ SSH
sudo apt update
sudo apt install openssh-client

3. ดาวน์โหลดและตรวจดูชุดติดตั้ง

ดาวน์โหลด ZIP แล้วแตกไฟล์ เก็บสคริปต์ทั้งห้าไว้ด้วยกันในโฟลเดอร์ wireguard-guide ทำตามขั้นตอน Windows, Mac หรือ Ubuntu เพียงชุดเดียว

สคริปต์ติดตั้ง WireGuard บน VPS และสร้างโปรไฟล์อุปกรณ์ อาจต้องกรอกรหัสผ่านเซิร์ฟเวอร์หลายครั้ง

ดาวน์โหลดสคริปต์ตั้งค่า (.zip)

4a. ตั้งค่าเซิร์ฟเวอร์จาก Windows

เปิดโฟลเดอร์ wireguard-guide ที่แตกแล้วใน File Explorer พิมพ์ powershell ในแถบที่อยู่แล้ว Enter เพื่อเปิด PowerShell ในโฟลเดอร์นั้น

รันหนึ่งในสองคำสั่ง เปลี่ยน SERVER_IP และพาธคีย์ SSH หากใช้คีย์

windows หลัง -Device คือชื่อโปรไฟล์ คอมพิวเตอร์เครื่องที่สองให้ใช้ชื่ออื่น เช่น laptop แต่ละเครื่องต้องมีโปรไฟล์แยก เพื่อเพิกถอนเครื่องเดียวโดยไม่ตัดเครื่องอื่น

เมื่อเสร็จ พิมพ์ %USERPROFILE%\WireGuard ในแถบที่อยู่ File Explorer เปิดโฟลเดอร์ชื่อเซิร์ฟเวอร์และอุปกรณ์เพื่อหา windows.conf สคริปต์แสดงพาธเต็มด้วย เปิด VPN ในขั้นตอน 5

PowerShell — ยืนยันด้วยรหัสผ่าน
.\Connect-WireGuardServer.ps1 -Server SERVER_IP -Device windows
PowerShell — ยืนยันด้วยคีย์ SSH
.\Connect-WireGuardServer.ps1 -Server SERVER_IP -Device windows -IdentityFile "$HOME\.ssh\id_ed25519"
หาก PowerShell บล็อกสคริปต์

หากแจ้งว่าไฟล์ไม่มีลายเซ็นดิจิทัล ให้รันคำสั่งนี้ในโฟลเดอร์เดิมแล้วลองติดตั้งอีกครั้ง

PowerShell — ปลดบล็อกไฟล์ที่ดาวน์โหลด
Unblock-File -LiteralPath .\Connect-WireGuardServer.ps1

หากแจ้งว่าปิดการรันสคริปต์ ให้รันคำสั่ง ยืนยันข้อความถาม แล้วลองใหม่ การเปลี่ยนแปลงสิ้นสุดเมื่อปิดหน้าต่าง PowerShell นี้

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 สคริปต์แสดงพาธเต็มด้วย

Terminal บน macOS — รหัสผ่าน
bash ./connect-wireguard-server.sh SERVER_IP mac
Terminal บน macOS — คีย์ SSH
bash ./connect-wireguard-server.sh SERVER_IP mac 22 ~/.ssh/id_ed25519

4c. ตั้งค่าเซิร์ฟเวอร์จาก Ubuntu Desktop

กด Ctrl+Alt+T พิมพ์ cd และช่องว่าง ลากโฟลเดอร์ wireguard-guide ใส่ Terminal แล้ว Enter

แทน SERVER_IP แล้วรันหนึ่งคำสั่ง ubuntu คือชื่อโปรไฟล์ ไม่ต้องใช้ sudo กับตัวเรียกสคริปต์นี้หรือการเข้าสู่ระบบ SSH

ในตัวจัดการไฟล์ เปิด Home, WireGuard และโฟลเดอร์เซิร์ฟเวอร์-อุปกรณ์ โปรไฟล์อยู่ที่ ~/WireGuard/SERVER_IP-ubuntu/ubuntu.conf โดยใช้ที่อยู่เซิร์ฟเวอร์จริง คู่มือนี้เชื่อมต่อด้วย NetworkManager

บน Ubuntu Desktop — รหัสผ่าน
bash ./connect-wireguard-server.sh SERVER_IP ubuntu
บน Ubuntu Desktop — คีย์ SSH
bash ./connect-wireguard-server.sh SERVER_IP ubuntu 22 ~/.ssh/id_ed25519

5a. เชื่อมต่อ Windows หรือ macOS

ติดตั้งแอป WireGuard ทางการ นำเข้าไฟล์ .conf ที่สร้าง อนุญาต VPN แล้วเปิดการเชื่อมต่อ ชื่อเมนูนำเข้าอาจต่างกันตามรุ่นแอป

โปรไฟล์ส่ง IPv4 เข้าอุโมงค์และมีเส้นทางเริ่มต้นของ IPv6 เพื่อไม่ให้ IPv6 วิ่งข้าม VPN เซิร์ฟเวอร์ไม่ให้บริการอินเทอร์เน็ต IPv6 ให้ตรวจสอบผลบนอุปกรณ์ตามด้านล่าง

โปรไฟล์มีคีย์ส่วนตัว ผู้มีสำเนาอาจใช้ตัวตน VPN ของอุปกรณ์ได้ อย่าส่งในคำร้องขอความช่วยเหลือ อัปโหลดไปยังเว็บสร้าง QR หรือใช้ร่วมหลายอุปกรณ์

ดาวน์โหลด WireGuard ทางการ

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 ตรวจและตัดการเชื่อมต่อได้แม้หน้าจอกราฟิกแสดงต่างกัน

Ubuntu Desktop — ตรวจ NetworkManager
nmcli --version
systemctl is-active NetworkManager
Ubuntu Desktop — นำเข้าครั้งเดียวและตั้ง DNS
sudo 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 "~."
Ubuntu Desktop — เชื่อมต่อ
sudo nmcli connection up ubuntu
nmcli connection show --active
Ubuntu Desktop — ตัดการเชื่อมต่อ
sudo nmcli connection down ubuntu

6. เชื่อมต่อ iPhone หรือ Android ด้วย QR

ติดตั้งแอป WireGuard ทางการจากลิงก์ App Store หรือ Google Play ด้านล่าง

บนคอมพิวเตอร์ เข้า VPS อีกครั้งด้วย ssh root@SERVER_IP หรือคำสั่งคีย์ SSH คำสั่งสำหรับโทรศัพท์จะสร้างโปรไฟล์และแสดง QR

ใน WireGuard บนโทรศัพท์ เลือกเพิ่มอุโมงค์ด้วยการสแกน QR สแกนจากคอมพิวเตอร์ ตั้งชื่อ อนุญาต VPN แล้วเปิด

ใช้โปรไฟล์แยกทุกเครื่อง อย่าแชร์ QR เพราะให้สิทธิ์เข้า VPN ถ้าโค้ดตัดบรรทัดผิด ให้ขยาย Terminal แล้วแสดงใหม่

บนเซิร์ฟเวอร์ — สร้างโปรไฟล์ iPhone
python3 /root/internetspeed-wireguard/manage-client.py add iphone
qrencode -t ANSIUTF8 < /etc/wireguard/clients/iphone.conf
บนเซิร์ฟเวอร์ — สร้างโปรไฟล์ Android แยก
python3 /root/internetspeed-wireguard/manage-client.py add android
qrencode -t ANSIUTF8 < /etc/wireguard/clients/android.conf

WireGuard สำหรับ iPhone — App Store

WireGuard สำหรับ Android — Google Play

7. ตรวจว่าอินเทอร์เน็ตผ่าน VPN

ก่อนเปิด VPN เปิด My IP จากลิงก์ด้านล่างแล้วจด IP เปิด WireGuard รีเฟรช My IP และเทียบกับ IPv4 สาธารณะของ VPS

ถ้าหน้าเปิดได้และแสดงที่อยู่ VPS การเชื่อมต่อเบราว์เซอร์นั้นผ่าน VPN แล้ว ถ้ายังเป็นที่อยู่เดิม ดูการแก้ปัญหา

นี่ตรวจเฉพาะเบราว์เซอร์ ไม่ใช่ทุกแอปหรือการป้องกันเมื่อ VPN หลุด การตรวจเพิ่มเติมด้านล่างครอบคลุม DNS และ IPv6

ตรวจ IP สาธารณะ

เพิ่มเติม: ตรวจ IPv6 และ DNS

IPv6: เปิด Test IPv6 ก่อนเชื่อมต่อและดูว่ามี IPv6 หรือไม่ เปิด VPN แล้วทดสอบซ้ำ การตั้งค่า IPv4 นี้ไม่ควรมีอินเทอร์เน็ต IPv6 ที่ใช้งานได้ ถ้ายังเห็น IPv6 เดิม แสดงว่าวิ่งนอกอุโมงค์ ถ้าเดิมไม่มี IPv6 การทดสอบนี้บอกพฤติกรรมบนเครือข่าย IPv6 ไม่ได้

DNS: ขณะเปิด VPN ใช้ Standard test ใน DNS Leak Test โปรไฟล์ใช้ Cloudflare DNS ถ้าเห็นผู้ให้บริการอินเทอร์เน็ตบ้าน ให้ตรวจ DNS อุปกรณ์ ผู้ให้บริการอื่นอาจมาจาก Secure DNS ของเบราว์เซอร์ จึงยังไม่ใช่หลักฐานรั่วไหลอัตโนมัติ ผลไม่รับรองว่าทุกแอปได้รับการป้องกัน

เปิด Test IPv6

เปิด DNS Leak Test

8. แก้ปัญหาการเชื่อมต่อ

ถ้า My IP ยังเป็นที่อยู่เดิม ตรวจว่าโปรไฟล์ WireGuard เปิดแล้ว ปิดและเปิดหนึ่งครั้ง แล้วรีเฟรช My IP

ถ้าเปิด VPN แล้วเว็บไม่เข้า ปิด VPN แล้วลองหน้าเดิม ถ้ายังไม่ได้ ให้แก้อินเทอร์เน็ตปกติก่อน ถ้าเสียเฉพาะ VPN ให้ตรวจด้านล่าง

เพื่อเปรียบเทียบ ลองต่อคอมพิวเตอร์กับฮอตสปอตโทรศัพท์ หรือปิด Wi-Fi บนโทรศัพท์แล้วใช้ข้อมูลมือถือ อาจมีค่าข้อมูล นี่เป็นการทดสอบชั่วคราว ถ้าใช้ได้เฉพาะมือถือ ปัญหาเกี่ยวข้องกับ Wi-Fi นั้น แต่ยังไม่ระบุสาเหตุแน่ชัด

ถ้าติดตั้งหยุดเพราะข้อผิดพลาด ให้เก็บข้อความสุดท้าย แก้สาเหตุแล้วรันคำสั่งเดิมด้วยชื่ออุปกรณ์เดิม โปรไฟล์เดิมจะยังอยู่

ตรวจว่าเซิร์ฟเวอร์ VPN ทำงาน

เข้า SSH ตามขั้นตอน 2 แล้วรันคำสั่ง ควรได้ active ถ้าเป็น inactive หรือ failed ให้ใช้คำสั่งเริ่มใหม่แล้วตรวจซ้ำ ถ้ายังไม่ active ให้เก็บข้อผิดพลาด

บนเซิร์ฟเวอร์ — ตรวจ WireGuard
systemctl is-active wg-quick@wg0
บนเซิร์ฟเวอร์ — เริ่ม WireGuard ใหม่หากไม่ทำงาน
systemctl 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 ใหม่แต่เว็บยังไม่เข้า เก็บผลและข้อผิดพลาดหรือบันทึกแอป การสุ่มเปลี่ยนเครือข่ายขั้นสูงทำให้วิเคราะห์ยากขึ้น

บนเซิร์ฟเวอร์ — แสดงสถานะ VPN
wg show

9. คาดหวังความเร็วเท่าไร?

การทดสอบ 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 ให้เก็บข้อมูลจำเป็นแล้วลบเซิร์ฟเวอร์ผ่านผู้ให้บริการเมื่อไม่ใช้

บนเซิร์ฟเวอร์ — เพิกถอนโปรไฟล์ iPhone
python3 /root/internetspeed-wireguard/manage-client.py remove iphone
บนเซิร์ฟเวอร์ — ตรวจอัปเดตและความจำเป็นต้องรีบูต
apt update
apt list --upgradable
test ! -f /var/run/reboot-required || cat /var/run/reboot-required
บนเซิร์ฟเวอร์ — ลบการตั้งค่า VPN (ตัดทุกไคลเอนต์)
bash /root/internetspeed-wireguard/remove-server.sh --confirm