ข้ามไปยังเนื้อหา

วิธีติดตั้ง WireGuard บน Ubuntu

คู่มือบรรทัดคำสั่งสำหรับ Ubuntu ตั้งแต่ติดตั้งแพ็กเกจ เขียนไฟล์ตั้งค่า เริ่มและตรวจอุโมงค์ จัดการ DNS และเริ่มอัตโนมัติ ไปจนถึงแก้ปัญหา handshake เงียบ

อ่าน 10 นาทีอัปเดตเมื่อ 15 ต.ค. 2569โดย XPASS Editorial Team

วิธีติดตั้ง WireGuard บน Ubuntu

WireGuard เป็นโปรโตคอล VPN ขนาดเล็กและเร็วที่รวมอยู่ในเคอร์เนลของ Linux ทำให้ Ubuntu เป็นหนึ่งในที่ที่ติดตั้งใช้งานง่ายที่สุด ไคลเอนต์ที่ใช้งานได้ต้องการเพียงคำสั่งไม่กี่บรรทัดกับไฟล์ข้อความสั้นๆ หนึ่งไฟล์ ข้อควรระวังคือทุกอย่างทำด้วยมือ ไม่มีแอปให้กดตามขั้นตอน ดังนั้นพิมพ์คีย์หรือที่อยู่ผิดตัวเดียวก็ล้มเหลวแบบเงียบๆ ได้

บทความนี้เป็นขั้นตอนปฏิบัติสำหรับผู้ใช้ Ubuntu ที่มีไฟล์ตั้งค่า WireGuard จากผู้ให้บริการ VPN หรือจากเซิร์ฟเวอร์ที่ตัวเองดูแล ครอบคลุมการติดตั้งเครื่องมือ การเขียนไฟล์ตั้งค่าฝั่งไคลเอนต์ การเริ่มและตรวจอุโมงค์ การตั้งให้ทำงานตอนบูต การจัดการ DNS และการหาสาเหตุเมื่อ handshake ไม่เกิดขึ้น เราไม่เปรียบเทียบโปรโตคอลในบทความนี้ หากสนใจให้อ่าน WireGuard เทียบกับ OpenVPN สำหรับลูกค้า XPASS วิธีเชื่อมต่อที่รองรับคือแอป VPNclient ฟรี หน้า My Pass จะแสดงวิธีที่ใช้ได้กับบัญชีของคุณ และ คู่มือ Linux อธิบายเส้นทางนั้น

สิ่งที่ต้องเตรียมก่อนเริ่ม

รวบรวมของเหล่านี้ไว้ก่อน จะได้ไม่ต้องหยุดกลางคัน

  • เครื่อง Ubuntu รุ่นปัจจุบัน และผู้ใช้ที่ใช้ sudo ได้ คำสั่งด้านล่างใช้ได้กับ Ubuntu 22.04 ขึ้นไปและระบบตระกูล Debian ล่าสุดส่วนใหญ่
  • ไฟล์ตั้งค่า WireGuard จากผู้ให้บริการหรือเซิร์ฟเวอร์ของคุณ อย่างน้อยต้องมีคีย์สาธารณะของเซิร์ฟเวอร์ ที่อยู่และพอร์ต UDP ของเซิร์ฟเวอร์ ที่อยู่ในอุโมงค์ที่กำหนดให้คุณ และเซิร์ฟเวอร์ DNS ที่จะใช้
  • คู่คีย์ของคุณเอง สร้างบนเครื่องนี้ และคีย์ส่วนตัวห้ามออกจากเครื่อง
  • การเชื่อมต่อพื้นฐานที่ใช้ได้ ทดสอบว่าเล่นเว็บปกติได้ก่อนเพิ่มอุโมงค์ จะได้รู้ว่าปัญหาหลังจากนี้เป็นของ VPN หรือไม่

อธิบายตัวเลขที่จะเห็นสักนิด ที่อยู่ในอุโมงค์มักเป็นที่อยู่ส่วนตัวจากช่วงใน RFC 1918 เช่น 10.x.x.x ซึ่งมีอยู่ภายในอุโมงค์เท่านั้น ไม่ใช่ที่อยู่สาธารณะของคุณ เว็บไซต์ของโครงการ WireGuard มีเอกสารการออกแบบและการเข้ารหัส และเอกสารไวต์เปเปอร์อธิบายว่าทำไมไฟล์ตั้งค่าจึงสั้นมาก

ติดตั้งแพ็กเกจ

เปิดเทอร์มินัล อัปเดตรายการแพ็กเกจ แล้วติดตั้งเครื่องมือ

sudo apt update
sudo apt install wireguard wireguard-tools resolvconf

บน Ubuntu ปัจจุบัน แพ็กเกจ wireguard จะดึงสิ่งที่ต้องใช้มาให้ และโมดูลอยู่ในเคอร์เนลแล้ว แพ็กเกจ resolvconf ไม่บังคับแต่มีประโยชน์ เพราะ wg-quick เรียกใช้เพื่อตั้ง DNS ตอนอุโมงค์ขึ้น ถ้าคุณใช้ systemd-resolved อยู่แล้วเหมือนค่าเริ่มต้นของ Ubuntu เดสก์ท็อป ให้ติดตั้ง resolvconf ก็ต่อเมื่อพบข้อผิดพลาด DNS ภายหลัง ซึ่งเราอธิบายไว้ในหัวข้อ DNS

ตรวจว่าเครื่องมือพร้อม

wg --version
wg-quick --help

ถ้าทั้งสองคำสั่งตอบกลับ แปลว่าติดตั้งเสร็จ ยังไม่มีอะไรทำงาน จนกว่าคุณจะเริ่มอินเทอร์เฟซ

สร้างคีย์และไฟล์ตั้งค่า

ตัวตนของ WireGuard คือคู่คีย์ สร้างด้วยสิทธิ์ไฟล์ที่เข้มงวดเพื่อให้มีแต่คุณอ่านคีย์ส่วนตัวได้

umask 077
wg genkey | tee ~/privatekey | wg pubkey > ~/publickey
cat ~/publickey

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

จากนั้นสร้างไฟล์ตั้งค่า ชื่อไฟล์จะกลายเป็นชื่ออินเทอร์เฟซ ดังนั้น wg0.conf ให้อินเทอร์เฟซชื่อ wg0

sudo nano /etc/wireguard/wg0.conf

ไฟล์ฝั่งไคลเอนต์หน้าตาแบบนี้ โดยตัวพิมพ์ใหญ่คือค่าที่ต้องแทนด้วยของคุณ

[Interface]
PrivateKey = YOUR_PRIVATE_KEY
Address = 10.0.0.2/32
DNS = 10.0.0.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

แต่ละบรรทัดทำอะไร

  • PrivateKey คือเนื้อหาในไฟล์คีย์ส่วนตัวของคุณ
  • Address คือที่อยู่ในอุโมงค์ที่เซิร์ฟเวอร์กำหนดให้คุณ
  • DNS คือตัวแปลงชื่อที่ใช้ขณะอุโมงค์ทำงาน
  • PublicKey ใต้ Peer คือคีย์สาธารณะของเซิร์ฟเวอร์ ไม่ใช่ของคุณ
  • Endpoint คือที่อยู่และพอร์ต UDP ของเซิร์ฟเวอร์
  • AllowedIPs กำหนดว่าทราฟฟิกใดเข้าอุโมงค์ 0.0.0.0/0, ::/0 ส่งทุกอย่าง ถ้าระบุช่วงแคบลงจะส่งเฉพาะเครือข่ายเหล่านั้น
  • PersistentKeepalive ส่งแพ็กเก็ตเล็กๆ ทุก 25 วินาที เพื่อให้เราเตอร์ที่บ้านเปิดการเชื่อมต่อค้างไว้

แล้วจำกัดสิทธิ์ เพราะไฟล์มีความลับอยู่

sudo chmod 600 /etc/wireguard/wg0.conf

เปิดอุโมงค์และตรวจสอบ

เริ่มอินเทอร์เฟซด้วย wg-quick

sudo wg-quick up wg0

มันจะพิมพ์ทุกขั้นตอนขณะสร้างอินเทอร์เฟซ กำหนดที่อยู่ ตั้ง DNS และเพิ่มเส้นทาง จากนั้นตรวจสถานะ

sudo wg show

ดูสามอย่างในผลลัพธ์

  1. บรรทัด latest handshake ใต้ peer ถ้าขึ้นว่ากี่วินาทีก่อน แปลว่าสองฝั่งคุยกันแล้ว
  2. ตัวนับการรับส่งข้อมูล ควรเพิ่มขึ้นเมื่อคุณเล่นเว็บ ถ้า received เป็นศูนย์ขณะ sent เพิ่ม แปลว่าเซิร์ฟเวอร์ไม่ตอบ
  3. endpoint ตรงตามที่คาด

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

sudo wg-quick down wg0

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

ตั้งให้อุโมงค์เริ่มตอนบูต

ถ้าต้องการให้เชื่อมต่อกลับมาทุกครั้งที่รีบูต ให้เปิดใช้ยูนิต systemd ที่มากับแพ็กเกจ

sudo systemctl enable --now wg-quick@wg0

ตรวจด้วย systemctl status wg-quick@wg0 ส่วนหลัง @ คือชื่อไฟล์ตั้งค่าของคุณ หากต้องการเปลี่ยนพฤติกรรมภายหลัง ให้แก้ไฟล์แล้วรีสตาร์ตยูนิตด้วย sudo systemctl restart wg-quick@wg0

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

จัดการ DNS บน Ubuntu ให้ถูกต้อง

DNS คือต้นเหตุของรายงาน "ต่อติดแต่ไม่โหลดอะไร" ส่วนใหญ่บน Ubuntu บรรทัด DNS = ในไฟล์ตั้งค่าจะถูก wg-quick นำไปใช้ผ่านเครื่องมือใดก็ตามที่มีอยู่

สถานการณ์ สิ่งที่เกิดขึ้น สิ่งที่ควรทำ
ติดตั้ง resolvconf แล้ว wg-quick ตั้ง DNS ผ่านมัน มักใช้ได้โดยไม่ต้องแก้เพิ่ม
มีแต่ systemd-resolved ไม่มี resolvconf wg-quick อาจตั้ง DNS ไม่ได้หรือแสดงข้อผิดพลาด ติดตั้ง resolvconf หรือตั้ง DNS ด้วย resolvectl
แก้ไข /etc/resolv.conf เอง wg-quick อาจเขียนทับหรือเพิกเฉย สำรองไฟล์และตรวจหลังใช้งาน
ไม่มีบรรทัด DNS ในไฟล์ ระบบใช้ DNS ในพื้นที่เดิม เพิ่มบรรทัด DNS ถ้าต้องการให้คำถาม DNS ตามอุโมงค์ไป

ดูว่าระบบใช้เซิร์ฟเวอร์ใดอยู่จริง

resolvectl status

มองหาอินเทอร์เฟซของอุโมงค์และเซิร์ฟเวอร์ DNS ของมัน ถ้าตัวแปลงชื่อของ Wi-Fi เดิมยังอยู่ลำดับแรกสำหรับทุกอย่าง คำถาม DNS ของคุณอาจข้ามอุโมงค์ไป บทความ DNS leak อธิบายว่าทำไมเรื่องนี้สำคัญและวิธีทดสอบ

ใช้ NetworkManager บนเดสก์ท็อป

บน Ubuntu เดสก์ท็อป คุณนำเข้าไฟล์เดียวกันเข้า NetworkManager และจัดการอุโมงค์จากเมนูเครือข่ายได้ เหมาะกับแล็ปท็อปที่ย้ายที่บ่อย

sudo nmcli connection import type wireguard file /etc/wireguard/wg0.conf
nmcli connection up wg0

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

แก้ปัญหา handshake เงียบ

เมื่อ wg show แสดง peer แต่ไม่มี handshake ให้ไล่ตามลำดับนี้

  1. ตรวจ endpoint ที่อยู่หรือพอร์ตผิดคือข้อผิดพลาดที่พบบ่อยที่สุด ให้คัดลอกจากผู้ให้บริการอีกครั้ง
  2. เทียบคีย์ คีย์สาธารณะของคุณต้องลงทะเบียนไว้บนเซิร์ฟเวอร์ และ PublicKey ในส่วน Peer ต้องเป็นของเซิร์ฟเวอร์ ไม่ใช่ของคุณ
  3. ตรวจนาฬิกา รัน timedatectl นาฬิกาที่คลาดมากอาจทำให้ handshake พัง
  4. ทดสอบว่าถึงพอร์ต UDP เครือข่ายบางแห่งบล็อกพอร์ต UDP ลองเครือข่ายอื่น เช่น ฮอตสปอตมือถือ เพื่อดูว่า handshake ปรากฏหรือไม่
  5. ดูไฟร์วอลล์ UFW ของ Ubuntu หากเปิดอยู่ จะอนุญาตทราฟฟิกขาออกตามค่าเริ่มต้น แต่กฎที่คุณเพิ่มไว้ก่อนอาจบล็อก เราเตอร์หรือเครือข่ายองค์กรก็อาจทิ้งแพ็กเก็ต
  6. ตรวจ MTU ถ้า handshake ทำงานแต่หน้าเว็บใหญ่ค้าง ให้ลองเพิ่ม MTU = 1380 ใต้ Interface แล้วรีสตาร์ตอุโมงค์ ลดค่าลงอีกเฉพาะเมื่ออาการยังอยู่
  7. ตรวจที่อยู่ในอุโมงค์ สองอุปกรณ์ใช้ที่อยู่เดียวกันทำให้เกิดอาการแปลกๆ แต่ละเครื่องต้องมีของตัวเอง

ถ้าอินเทอร์เฟซยังขึ้นแต่เน็ตใช้ไม่ได้ ให้ทดสอบด้วย ping -c 3 10.0.0.1 ไปยังเกตเวย์ของอุโมงค์ แล้ว ping -c 3 1.1.1.1 ด้วยที่อยู่ตัวเลข แล้วค่อยทดสอบด้วยชื่อ ลำดับนี้แยกปัญหาเส้นทางออกจาก DNS ได้ในหนึ่งนาที

นิสัยด้านความปลอดภัยและข้อจำกัด

  • ปกป้องคีย์ส่วนตัว เก็บในไฟล์ที่ root อ่านได้เท่านั้น สำรองอย่างปลอดภัย และสร้างคู่ใหม่หากสงสัยว่ารั่ว
  • หนึ่งอุปกรณ์หนึ่งคู่คีย์ อย่าคัดลอกไฟล์ตั้งค่าไปเครื่องที่สอง
  • เข้าใจ AllowedIPs การส่งทุกอย่างเข้าอุโมงค์เปลี่ยนเส้นทางทราฟฟิกของทั้งเครื่อง การส่งเฉพาะบางเครือข่ายทำให้ส่วนที่เหลืออยู่นอกอุโมงค์
  • อุโมงค์ไม่ใช่ไฟร์วอลล์ WireGuard เข้ารหัสทราฟฟิกระหว่างคุณกับเซิร์ฟเวอร์ แต่ไม่ได้หยุดมัลแวร์หรือฟิชชิง อ่าน สิ่งที่ VPN ปกป้องคุณไม่ได้
  • อัปเดตสำคัญ รัน sudo apt update && sudo apt upgrade เป็นประจำเพื่อให้เคอร์เนลและเครื่องมือทันสมัย
  • ทดสอบความเร็วให้ยุติธรรม หากต้องการวัดประสิทธิภาพ ให้ทำตาม คู่มือทดสอบความเร็ว WireGuard ตัวเลขจะได้มีความหมาย

สรุป

บน Ubuntu ไคลเอนต์ WireGuard มีสามขั้น คือติดตั้งแพ็กเกจ สร้างคู่คีย์และไฟล์ตั้งค่าสั้นๆ แล้วเริ่มด้วย wg-quick up ตรวจ wg show ว่ามี handshake ล่าสุด เปิดยูนิต systemd ถ้าต้องการให้ทำงานตอนบูต และจัดการ DNS อย่างตั้งใจด้วย resolvconf หรือ systemd-resolved เมื่อล้มเหลว สาเหตุที่พบบ่อยคือ endpoint คีย์ นาฬิกา พอร์ต UDP ที่ถูกบล็อก หรือ MTU ไม่ลงตัว

หากคุณอยากใช้แอปแทนบรรทัดคำสั่ง ดู หน้าราคา และใช้แอป VPNclient ฟรีกับพาสแบบเติมเงิน ซึ่งไม่ต้องแก้ไฟล์ตั้งค่าด้วยมือ

คำถามที่พบบ่อย

Ubuntu เวอร์ชันไหนใช้ WireGuard ได้บ้าง

Ubuntu รุ่นปัจจุบันมีการรองรับ WireGuard อยู่ในเคอร์เนลอยู่แล้ว และแพ็กเกจ wireguard จากคลังมาตรฐานจะติดตั้งเครื่องมือบรรทัดคำสั่งให้ รุ่นเก่าอาจต้องติดตั้งแพ็กเกจเพิ่ม จึงควรเช็กเวอร์ชันด้วย lsb_release -a ก่อนเริ่ม

ทำไม wg show เห็น peer แต่ไม่มี handshake

handshake จะปรากฏหลังมีการแลกเปลี่ยนแพ็กเก็ตแรกเท่านั้น ถ้าไม่ปรากฏ ให้ตรวจที่อยู่และพอร์ตของ endpoint คีย์สาธารณะทั้งสองฝั่ง นาฬิกาเครื่อง และไฟร์วอลล์หรือเราเตอร์ที่อาจบล็อกพอร์ต UDP ระหว่างคุณกับเซิร์ฟเวอร์

ต้องใช้สิทธิ์ root กับ wg-quick หรือไม่

ต้องใช้ เพราะการสร้างอินเทอร์เฟซเครือข่ายและเปลี่ยนเส้นทางต้องใช้สิทธิ์ผู้ดูแล ให้รัน wg-quick ด้วย sudo และไฟล์ตั้งค่าควรอ่านได้เฉพาะ root เพราะมีคีย์ส่วนตัวอยู่ข้างใน

จะหยุดไม่ให้อุโมงค์เริ่มตอนบูตได้อย่างไร

รัน sudo systemctl disable wg-quick@wg0 เพื่อไม่ให้เริ่มตอนบูต และ sudo systemctl stop wg-quick@wg0 เพื่อปิดอุโมงค์ทันที โดยเปลี่ยน wg0 เป็นชื่อไฟล์ตั้งค่าของคุณ

ใช้ไฟล์ตั้งค่าเดียวกันบนมือถือและแล็ปท็อปได้หรือไม่

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

เกี่ยวกับผู้เขียน

Bob Kanokphon Thongdee ผู้ก่อตั้ง XPASS VPN

Bob Kanokphon Thongdee

  • ผู้ก่อตั้ง XPASS VPN
  • ผู้ร่วมก่อตั้ง eSIMonline.asia
  • ประสบการณ์ด้านการตลาดออนไลน์มากกว่า 7 ปี
  • ผู้ก่อตั้ง Cojourney Visa และ Cojourney Travel

ต้องใช้ VPN ช่วงเดินทางหรือช่วงงานยุ่ง?

XPASS ขายแพ็กเกจแบบเติมเงินตามจำนวนวัน จ่ายครั้งเดียว ไม่มีการต่ออายุอัตโนมัติ

ดูแพ็กเกจ

อ่านต่อ

ความปลอดภัยของ VPN

WireGuard กับ OpenVPN ต่างกันอย่างไร

WireGuard และ OpenVPN สร้างอุโมงค์เข้ารหัสเหมือนกัน แต่ต่างกันที่การออกแบบ ความซับซ้อน และความยืดหยุ่น บทความนี้เปรียบเทียบให้เข้าใจง่าย

อ่าน 9 นาที

พื้นฐาน VPN

โปรโตคอล VPN คืออะไร

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

อ่าน 9 นาที

ความปลอดภัยของ VPN

VPN Handshake คืออะไร? มีขั้นตอนใดบ้าง

Handshake คือสิ่งที่เกิดขึ้นในช่วงระหว่างกดเชื่อมต่อกับเห็นไอคอนเชื่อมต่อแล้ว บทความนี้แยกขั้นตอน ต้นทุนเป็นรอบการส่ง สิ่งที่ผู้สังเกตเห็นได้ และวิธีวินิจฉัยความล้มเหลวแต่ละแบบ

อ่าน 10 นาที

แก้ปัญหา

ทดสอบ WireGuard ต้องวัดค่าอะไรบ้าง

ปริมาณข้อมูลเป็นเพียงหนึ่งในหกสิ่งที่ควรวัดบนอุโมงค์ WireGuard บทความนี้มีวิธีทดสอบที่ทำซ้ำได้ ตัวอย่างคำนวณ และกับดักที่ทำให้ผลเพี้ยน

อ่าน 10 นาที

ความปลอดภัยของ VPN

DNS leak คืออะไร

DNS leak เกิดเมื่ออุปกรณ์ถามหาที่อยู่ของเว็บไซต์นอกอุโมงค์ VPN มาดูว่าทำไมจึงเกิด ทดสอบอย่างไร และต้องทำอย่างไร

อ่าน 10 นาที