สร้าง WireGuard VPN Server บน Raspberry Pi
คู่มือสร้าง WireGuard server เล็ก ๆ ที่บ้านบน Raspberry Pi ทีละขั้น ตั้งแต่ตรวจการเข้าถึง คีย์ config ของเซิร์ฟเวอร์และ peer การเปิดพอร์ต การทดสอบ และการดูแล
อ่าน 10 นาทีอัปเดตเมื่อ 15 ต.ค. 2569โดย XPASS Editorial Team

WireGuard server บน Raspberry Pi เป็นหนึ่งในโครงการเครือข่ายเล็ก ๆ ที่ให้ความพึงพอใจมากที่สุด ด้วยราคาบอร์ดพอประมาณ อะแดปเตอร์ไฟ และเวลาหนึ่งเย็น คุณจะได้ประตูส่วนตัวเข้าบ้าน เข้าถึงไฟล์ในเครือข่ายของตัวเองจากร้านกาแฟ ปกป้องโทรศัพท์บน Wi-Fi โรงแรมด้วยการส่งทราฟฟิกกลับบ้านก่อน หรือจัดการอุปกรณ์ที่ไม่มีที่อยู่สาธารณะ โปรโตคอลนี้เบาพอจนบอร์ดรุ่นเก่าก็รับแบนด์วิดท์บ้านปกติได้ดี
คู่มือนี้สร้างเซิร์ฟเวอร์ตั้งแต่ศูนย์ สมมติว่าคุณมี Pi ที่รัน Raspberry Pi OS Lite รุ่นปัจจุบัน ต่อสายแลนเข้าเราเตอร์ และพอคุ้นเทอร์มินัล ที่อยู่ คีย์ และชื่อโฮสต์ทั้งหมดด้านล่างเป็นค่าตัวอย่าง หากยังตัดสินใจระหว่างรันเองกับจ่ายเงินให้บริการ อ่าน VPN ที่โฮสต์เองเทียบกับ VPN เชิงพาณิชย์ ก่อน เพราะสองทางแก้คนละปัญหา
สิ่งที่คุณกำลังสร้าง และสิ่งที่ไม่ได้
ระบุเป้าหมายให้ชัด เพราะมันกำหนดทุกการเลือก
| สิ่งที่ได้ | สิ่งที่ไม่ได้ |
|---|---|
| เส้นทางเข้ารหัสจากโทรศัพท์หรือโน้ตบุ๊กเข้าเครือข่ายบ้าน | วิธีที่ทำให้ดูเหมือนอยู่ในอีกประเทศหนึ่ง |
| เข้าถึงอุปกรณ์ในบ้านด้วยที่อยู่ภายใน | ความเป็นนิรนามจากผู้ให้บริการอินเทอร์เน็ตที่บ้าน |
| การปกป้องบน Wi-Fi ที่ใช้ร่วมกัน เพราะเครือข่ายเห็นแค่อุโมงค์ | การป้องกันฟิชชิง รหัสผ่านอ่อน หรือมัลแวร์ |
| ควบคุมคีย์และซอฟต์แวร์ได้เต็มที่ | บริการที่คนอื่นดูแลให้ |
ทางออกมีจุดเดียวคือการเชื่อมต่อที่บ้าน เว็บไซต์ที่คุณเข้าผ่านอุโมงค์จะเห็นที่อยู่ของบ้าน และความเร็วถูกจำกัดด้วยความเร็วอัปโหลดที่บ้าน เพราะทราฟฟิกจากข้างนอกต้องกลับผ่านมัน สำหรับหลายคนนี่ถูกต้องพอดี สำหรับบางคนเป็นเหตุผลที่จะเลือกบริการเชิงพาณิชย์ในการเดินทาง whitepaper ของ WireGuard อธิบายดีไซน์หากอยากเข้าใจว่าทำไมโปรโตคอลจึงกระชับ

ตรวจว่าบ้านของคุณถูกเข้าถึงได้
ความล้มเหลวที่พบบ่อยที่สุดของเซิร์ฟเวอร์ที่บ้านเกิดก่อนติดตั้งซอฟต์แวร์ใด ๆ คือโลกภายนอกเข้าถึงเราเตอร์ไม่ได้ ตรวจเรื่องนี้ก่อน
- หาที่อยู่ WAN ของเราเตอร์จากหน้าสถานะ
- เปิดหน้าเว็บใดก็ได้ที่แสดง public IP ของคุณแล้วเทียบ ถ้าตรงกัน คุณมีที่อยู่สาธารณะ ถ้าเราเตอร์แสดงเป็น 100.64.x.x ถึง 100.127.x.x หรือช่วงส่วนตัว แปลว่าผู้ให้บริการแบ่งที่อยู่สาธารณะหนึ่งตัวให้ลูกค้าหลายราย เรียกว่า carrier-grade NAT ช่วงที่สงวนไว้อธิบายอยู่ใน RFC 6598 กรณีนี้ port forward จะไปไม่ถึงคุณ
- ถ้าที่อยู่เป็นสาธารณะแต่เปลี่ยนทุกไม่กี่วัน ให้ใช้ชื่อ dynamic DNS เราเตอร์หลายรุ่นมีในตัว และมีโปรแกรมเล็ก ๆ สำหรับ Pi คุณจะใส่ชื่อ ไม่ใช่ตัวเลข ใน config ของไคลเอนต์
- ตรวจว่าเราเตอร์ของคุณอยู่หลังเราเตอร์ตัวอื่นหรือไม่ เช่นกล่องของผู้ให้บริการบวกเราเตอร์ของคุณเอง นั่นคือ double NAT ต้อง forward พอร์ตทั้งสองตัว หรือตั้งตัวแรกเป็นโหมด bridge
- หากคำศัพท์เหล่านี้ใหม่ อ่าน Public IP address คืออะไร
ผู้ให้บริการหลายรายให้ที่อยู่สาธารณะเมื่อขอ บางครั้งมีค่าธรรมเนียม ถ้าทำไม่ได้ เซิร์ฟเวอร์ที่โฮสต์เองเป็นเครื่องมือที่ผิด และบริการที่มีคนโฮสต์ให้เหมาะกว่า
ติดตั้งและสร้างคีย์
อัปเดตและติดตั้งเครื่องมือ
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y wireguard qrencode
สร้างไดเรกทอรีสำหรับคีย์ด้วยสิทธิ์เข้มงวด และสร้างคู่คีย์ของเซิร์ฟเวอร์
sudo -i
umask 077
cd /etc/wireguard
wg genkey | tee server.key | wg pubkey > server.pub
คีย์ส่วนตัวอยู่บน Pi เท่านั้น ส่วนคีย์สาธารณะใส่ในไคลเอนต์แต่ละตัว อย่าวางคีย์ส่วนตัวในแชต ทิกเก็ต หรือภาพหน้าจอ เลือกช่วงอุโมงค์ส่วนตัวที่ไม่ทับกับเครือข่ายบ้าน ถ้าบ้านใช้ 192.168.1.0/24 ให้เลือกอย่าง 10.44.0.0/24 จากบล็อกส่วนตัวใน RFC 1918 เซิร์ฟเวอร์จะเป็น 10.44.0.1 และไคลเอนต์ได้ .2, .3 ต่อไป
เขียน config ของเซิร์ฟเวอร์
สร้าง /etc/wireguard/wg0.conf
[Interface]
Address = 10.44.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = nft add table ip wgnat; nft add chain ip wgnat post '{ type nat hook postrouting priority 100 ; }'; nft add rule ip wgnat post ip saddr 10.44.0.0/24 oifname "eth0" masquerade
PostDown = nft delete table ip wgnat
แทน SERVER_PRIVATE_KEY ด้วยเนื้อหาของ server.key สองบรรทัด hook เพิ่มการแปลที่อยู่เฉพาะขณะอุโมงค์ทำงาน ทำให้ไคลเอนต์ออกอินเทอร์เน็ตและเข้า LAN ผ่าน Pi ได้ โดย Pi จะดูเหมือนคอมพิวเตอร์ธรรมดาเครื่องหนึ่งในเครือข่ายของคุณ ถ้าต้องการให้ไคลเอนต์เข้าถึงเฉพาะตัว Pi เอง ให้ตัดสองบรรทัดนี้ออก
เปิด forwarding ถาวร
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/90-forward.conf
sysctl --system
จากนั้นรันเป็นบริการ ตามแนวทางในคู่มือจัดการ WireGuard ด้วย systemd
systemctl enable --now wg-quick@wg0
wg show
ตอนนี้ wg show จะแสดงอินเทอร์เฟซและยังไม่มี peer ซึ่งเป็นเรื่องปกติ
ตั้ง forward พอร์ตและเปิดไฟร์วอลล์
ที่เราเตอร์ สร้างกฎ port forward ส่ง UDP 51820 ไปที่ที่อยู่คงที่ของ Pi ใช้ UDP ไม่ใช่ TCP เพราะ WireGuard ไม่ใช้ TCP ความเสี่ยงและนิสัยที่เกี่ยวข้องอธิบายอยู่ใน Port Forwarding ของ VPN อธิบาย ซึ่งควรอ่านผ่าน ๆ ตั้งการจอง DHCP ให้ Pi เพื่อไม่ให้ที่อยู่เปลี่ยน
บน Pi ถ้าคุณรันไฟร์วอลล์ ให้อนุญาตเท่าที่จำเป็น คือ SSH จากเครือข่ายภายใน และ UDP 51820 จากทุกที่ ที่เหลือปิดหมด WireGuard เงียบโดยตั้งใจ มันไม่ตอบแพ็กเก็ตจากผู้ส่งที่ไม่มีคีย์ที่ถูกต้อง การสแกนพอร์ตจึงไม่เผยว่ามีเซิร์ฟเวอร์ทำงานอยู่เหมือนที่บริการ VPN แบบอื่นจำนวนมากเผย
เพิ่ม peer โน้ตบุ๊กและโทรศัพท์
แต่ละอุปกรณ์มีคู่คีย์และที่อยู่อุโมงค์ของตัวเอง บน Pi สร้างคีย์สำหรับโทรศัพท์
cd /etc/wireguard
wg genkey | tee phone.key | wg pubkey > phone.pub
ลงทะเบียน peer บนเซิร์ฟเวอร์โดยต่อท้าย wg0.conf ด้วย
[Peer]
PublicKey = PHONE_PUBLIC_KEY
AllowedIPs = 10.44.0.2/32
ใช้โดยไม่ตัดการเชื่อมต่อเดิม
wg syncconf wg0 <(wg-quick strip wg0)
จากนั้นเขียนไฟล์ไคลเอนต์ phone.conf
[Interface]
PrivateKey = PHONE_PRIVATE_KEY
Address = 10.44.0.2/32
DNS = 10.44.0.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = myhome.example.net:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
บรรทัด AllowedIPs คือการตัดสินใจสำคัญ ถ้าใช้ 0.0.0.0/0 ทราฟฟิกทั้งหมดของโทรศัพท์จะกลับบ้าน เหมาะกับ Wi-Fi สาธารณะ ถ้าใช้ 10.44.0.0/24, 192.168.1.0/24 เฉพาะที่อยู่อุโมงค์และที่อยู่ในบ้านเท่านั้นที่ผ่าน ที่เหลือใช้เน็ตของโทรศัพท์เอง บรรทัด DNS ต้องมี resolver ที่เข้าถึงได้ที่ที่อยู่นั้น เช่น resolver เล็ก ๆ บน Pi ไม่เช่นนั้นให้ชี้ไปที่ที่อยู่ของเราเตอร์ แสดง config เป็น QR code และสแกนในแอป WireGuard ทางการ
qrencode -t ansiutf8 < phone.conf
เมื่อเสร็จ ลบ phone.conf และคีย์ส่วนตัวออกจาก Pi หากไม่ต้องการสำรอง โน้ตบุ๊กทำแบบเดียวกัน แต่นำเข้าไฟล์แทนการสแกน

ทดสอบและแก้ปัญหา
เปิดอุโมงค์จากโทรศัพท์ขณะใช้เน็ตมือถือ ไม่ใช่ Wi-Fi ที่บ้าน เพราะเฉพาะกรณีนั้นที่การทดสอบข้ามอินเทอร์เน็ตจริง แล้วตรวจ
| อาการ | สาเหตุที่น่าจะเป็น | สิ่งที่ต้องทำ |
|---|---|---|
ไม่มี handshake ใน wg show |
พอร์ตไปไม่ถึง Pi, endpoint ผิด หรือ CGNAT | ตรวจกฎ forward ชื่อ และที่อยู่สาธารณะอีกครั้ง |
| มี handshake แต่ไม่มีเน็ตผ่านอุโมงค์ | forwarding หรือ NAT หายไป | ยืนยัน ip_forward เป็น 1 และตาราง nft มีอยู่ |
| มี handshake แต่เข้าอุปกรณ์ในบ้านไม่ได้ | AllowedIPs ไม่มีช่วงของบ้าน หรืออุปกรณ์บล็อกช่วงอุโมงค์ | เพิ่มช่วง ตรวจไฟร์วอลล์ของอุปกรณ์ |
| บางเว็บค้าง บางเว็บโหลด | MTU สูงเกินสำหรับสายของคุณ | เพิ่ม MTU = 1380 ที่ไคลเอนต์แล้วทดสอบ |
| ใช้ได้หลายวันแล้วล้ม | ที่อยู่แบบไดนามิกเปลี่ยน | ตรวจการอัปเดต dynamic DNS |
| ใช้ได้บนเน็ตมือถือ แต่ล้มที่ร้านกาแฟหนึ่งร้าน | เครือข่ายนั้นจำกัด UDP | ลองเน็ตมือถือหรือเครือข่ายอื่น |
ใช้ wg show บน Pi เพื่อดู handshake ล่าสุดและตัวนับข้อมูลต่อ peer ทำให้เห็นทันทีว่าอุปกรณ์ไหนทำงาน บทความ ทดสอบความเร็ว WireGuard อธิบายวิธีวัดอัตราส่งข้อมูลโดยไม่หลอกตัวเอง
เสริมความปลอดภัยและดูแลรักษา
เซิร์ฟเวอร์บนอินเทอร์เน็ตเป็นความรับผิดชอบ แม้จะเล็กก็ตาม
- อัปเดต Pi สม่ำเสมอ อัปเดตทุกเดือน และเปิดอัปเดตความปลอดภัยอัตโนมัติถ้าชอบ
- ใช้คีย์ SSH และปิดการล็อกอินด้วยรหัสผ่าน อย่า forward SSH ออกอินเทอร์เน็ตถ้าไม่จำเป็นจริง ๆ
- ให้แต่ละอุปกรณ์มี peer ของตัวเอง ลบรายการของอุปกรณ์ที่ขายหรือทำหาย แล้วใช้การเปลี่ยนแปลง
- สำรองคีย์ส่วนตัวของเซิร์ฟเวอร์และ config ไว้ที่ออฟไลน์และเข้ารหัส หากไม่มี คุณต้องออกใหม่ให้ไคลเอนต์ทุกตัว
- หมุนคีย์ถ้าสงสัยว่ารั่ว สร้างคู่ใหม่ อัปเดตทั้งสองฝั่ง และลบคู่เก่า
- ดูแลไฟเลี้ยงและที่เก็บข้อมูล การ์ดที่กำลังเสียจะพาเซิร์ฟเวอร์และการเข้าถึงระยะไกลของคุณไปด้วย
- จำไว้ว่าคุณคือผู้ดูแล หากคนอื่นใช้เซิร์ฟเวอร์ของคุณ คุณรับผิดชอบสิ่งที่พวกเขาทำผ่านเน็ตบ้านของคุณ รายชื่อ peer จึงควรสั้นและไว้ใจได้
ข้อผิดพลาดที่พบบ่อย
- ข้ามการตรวจการเข้าถึง แล้วไปไล่แก้ซอฟต์แวร์ทั้งชั่วโมง
- forward TCP แทน UDP
- ใช้คีย์ไคลเอนต์เดียวกับหลายอุปกรณ์ ทำให้แย่งเซสชันเดียวกัน
- เลือกช่วงอุโมงค์ที่ทับกับเครือข่ายบ้านหรือร้านกาแฟ
- วางคีย์ส่วนตัวในข้อความแชต
- คาดว่าเซิร์ฟเวอร์จะซ่อนกิจกรรมจากผู้ให้บริการอินเทอร์เน็ตของตัวเอง
- ลืมว่าความเร็วถูกจำกัดด้วยอัปโหลดของบ้าน
สรุป
การสร้าง WireGuard server บน Raspberry Pi มีห้าขั้น ยืนยันว่าบ้านเข้าถึงได้ สร้างคีย์ เขียน config เซิร์ฟเวอร์เล็ก ๆ ที่มี forwarding และการแปลที่อยู่ ตั้ง forward พอร์ต UDP หนึ่งพอร์ต และเพิ่มแต่ละอุปกรณ์เป็น peer ของตัวเอง ทดสอบจากเน็ตมือถือ อัปเดต Pi เสมอ และปฏิบัติต่อไฟล์คีย์เป็นความลับ ผลคือเส้นทางส่วนตัวกลับเข้าเครือข่ายของคุณที่คุณควบคุมเองทั้งหมด
หากไม่อยากดูแลปลายทางอีกฝั่งเอง หน้าราคา แสดงพาสแบบเติมเงินที่ใช้กับแอป VPNclient ฟรี ตามที่อธิบายใน คู่มือติดตั้งบน Linux
คำถามที่พบบ่อย
ต้องมี public IP ที่บ้านเพื่อรัน WireGuard server ไหม
ต้องมีที่อยู่ที่โลกภายนอกเข้าถึงได้ ถ้าผู้ให้บริการให้ลูกค้าหลายรายใช้ที่อยู่ร่วมกัน (carrier-grade NAT) การ port forward จะไม่ทำงานจากข้างนอก และต้องใช้วิธีอื่น เช่นรีเลย์ที่คุณควบคุมเอง ให้เทียบที่อยู่ WAN ของเราเตอร์กับที่อยู่ที่เว็บตรวจ IP แสดง
WireGuard ใช้พอร์ตอะไร
ค่าเริ่มต้นที่นิยมคือ UDP 51820 แต่เป็นเพียงธรรมเนียม คุณเลือกพอร์ต UDP อื่นได้ในบรรทัด ListenPort และตั้ง forward พอร์ตเดียวกันที่เราเตอร์
เซิร์ฟเวอร์เห็นทราฟฟิกของฉันแค่ไหน
Raspberry Pi ของคุณเองเป็นปลายอีกด้านของอุโมงค์ จึงอยู่ในการควบคุมของคุณ ทราฟฟิกที่ออกจากอุโมงค์ไปอินเทอร์เน็ตจะดูเหมือนมาจากเน็ตบ้านของคุณ ซึ่งเหมาะกับการเข้าถึงบ้านจากข้างนอก แต่ไม่ได้ซ่อนคุณจากผู้ให้บริการอินเทอร์เน็ตที่บ้าน
เพิ่มโทรศัพท์ได้อย่างไร
สร้างคู่คีย์และไฟล์ config ของไคลเอนต์บน Pi เพิ่มโทรศัพท์เป็น peer ที่มีที่อยู่อุโมงค์ของตัวเอง แล้วแสดง config เป็น QR code ด้วย qrencode และสแกนในแอป WireGuard จากนั้นลบไฟล์ config ทิ้ง
แบบนี้เหมือน VPN เชิงพาณิชย์ไหม
ไม่เหมือน เซิร์ฟเวอร์ที่โฮสต์เองให้การเข้าถึงเครือข่ายบ้านและเส้นทางปลอดภัยจาก Wi-Fi สาธารณะ แต่มีทางออกคงที่เพียงจุดเดียวคือบ้านของคุณ บริการเชิงพาณิชย์มีคนอื่นดูแลและมีข้อแลกเปลี่ยนต่างกัน ซึ่งบทความเปรียบเทียบอธิบายไว้
แหล่งอ้างอิง
เกี่ยวกับผู้เขียน

Bob Kanokphon Thongdee
- ผู้ก่อตั้ง XPASS VPN
- ผู้ร่วมก่อตั้ง eSIMonline.asia
- ประสบการณ์ด้านการตลาดออนไลน์มากกว่า 7 ปี
- ผู้ก่อตั้ง Cojourney Visa และ Cojourney Travel
ต้องใช้ VPN ช่วงเดินทางหรือช่วงงานยุ่ง?
XPASS ขายแพ็กเกจแบบเติมเงินตามจำนวนวัน จ่ายครั้งเดียว ไม่มีการต่ออายุอัตโนมัติ
ดูแพ็กเกจอ่านต่อ

คู่มือการเลือกซื้อ
ตั้ง VPN เองกับสมัครบริการ VPN แบบไหนดีกว่า
เซิร์ฟเวอร์ที่บ้านกับบริการ VPN สำเร็จรูปแก้ปัญหาคนละแบบ เปรียบเทียบ VPN บน Raspberry Pi หรือ NAS กับบริการสำเร็จรูป รวมถึง CGNAT การดูแลรักษา และความปลอดภัย
อ่าน 9 นาที

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

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

พื้นฐาน VPN
Public IP address คืออะไร
Public IP address คือที่อยู่ที่เว็บไซต์เห็นเมื่อคุณเชื่อมต่อ บทความนี้อธิบายว่ามีที่มาอย่างไร ต่างจาก private address ในบ้านอย่างไร และบอกอะไรได้หรือไม่ได้บ้าง
อ่าน 9 นาที

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