SSD Nodes Learn RAM 8GB — $66/ปี
คู่มือ Matt Connorโดย Matt Connor · อัปเดตเมื่อ 2026-08-01

WireGuard vs OpenVPN: แบบไหนเหมาะกับการโฮสต์เอง

WireGuard เหมาะกับผู้โฮสต์ VPN เองเกือบทุกกรณี ทั้งความเร็ว ไฟล์ตั้งค่าราว 10 บรรทัด และโค้ดราว 4,000 บรรทัด พร้อม 4 กรณีที่ OpenVPN ยังเหนือกว่า

คำตอบสั้น ๆ

สำหรับบุคคลหนึ่งคนที่ใช้งาน VPN server บน VPS ของตนเอง การเลือกระหว่าง WireGuard กับ OpenVPN ไม่ใช่การแข่งขันที่สูสี: ให้เลือก WireGuard เพราะมีขนาดเล็กกว่า ทำงานภายใน Linux kernel เชื่อมต่อได้ภายในเสี้ยววินาที และ client config ที่ใช้งานได้มีความยาวประมาณ 10 บรรทัด OpenVPN ยังมีงานที่เหมาะสมอยู่ 4 ประการ และหากไม่มีข้อใดตรงกับความต้องการของคุณ คุณก็ไม่จำเป็นต้องใช้ OpenVPN

งานทั้ง 4 ประการนั้น ได้แก่ การเชื่อมต่อออกจาก network ที่อนุญาตเฉพาะ TCP port 443 การเชื่อมต่อเข้ากับ certificate authority ที่มีอยู่ การตรวจสอบสิทธิ์ผู้ใช้ที่ระบุชื่อด้วยรหัสผ่านหรือปัจจัยที่สอง และการ bridge ที่ Layer 2 เนื้อหาต่อไปนี้เป็นหลักฐานประกอบคำแนะนำดังกล่าว รวมถึงระบุอย่างชัดเจนว่าข้อยกเว้นแต่ละกรณีเริ่มเกี่ยวข้องกับคุณเมื่อใด

เหตุผลที่ WireGuard เป็นตัวเลือกของผู้ดูแลเซิร์ฟเวอร์เอง

โค้ดมีขนาดเล็กพอที่จะอ่านได้ โปรเจกต์ WireGuard มีส่วนที่ใช้งานโปรโตคอลประมาณ 4,000 บรรทัด ส่วน OpenVPN มีโค้ดระดับหลักแสนบรรทัดเมื่อรวมไลบรารี OpenSSL ที่ใช้กับการดำเนินการด้านการเข้ารหัสทั้งหมด ขนาดของโค้ดมีความสำคัญ เพราะทุกบรรทัดเพิ่มพื้นที่โจมตี และคุณหรือผู้ตรวจสอบก็ไม่สามารถอ่านโค้ด 100,000 บรรทัดได้ทั้งหมด แต่สามารถอ่าน 4,000 บรรทัดได้

ทำงานใน kernel WireGuard อยู่ใน mainline Linux ตั้งแต่เวอร์ชัน 5.6 ดังนั้น Ubuntu 24.04 และ Debian 13 จึงมี WireGuard มาให้โดยไม่ต้องคอมไพล์อะไรเพิ่มเติม แพ็กเก็ตจะถูกเข้ารหัสในจุดที่แพ็กเก็ตอยู่แล้ว คือใน kernel space โดยไม่ต้องคัดลอกออกไปยังโปรเซสใน userspace แล้วคัดลอกกลับมา ตรวจสอบก่อนทำอย่างอื่น:

sudo modprobe wireguard && echo ok

บน KVM VPS คำสั่งนี้จะแสดง ok ส่วน container virtualisation ที่ใช้ kernel ของโฮสต์ร่วมกัน เช่น OpenVZ หรือ LXC จะล้มเหลวและแสดง Operation not supported เพราะคุณไม่สามารถโหลดโมดูลเข้าสู่ kernel ที่ไม่ได้อยู่ภายใต้การควบคุมของคุณได้

ไม่มีสิ่งใดต้องเจรจา WireGuard มี cipher suite แบบตายตัวเพียงชุดเดียว คือ ChaCha20-Poly1305 สำหรับข้อมูล และใช้คีย์ Curve25519 ไม่มีเวอร์ชันให้ลดระดับ และไม่มีตัวเลือกที่อาจตั้งค่าผิด OpenVPN จะเจรจา cipher และ TLS (transport layer security) version กับไคลเอนต์แต่ละราย ซึ่งให้ความยืดหยุ่น และเป็นจุดที่มักเกิดการตั้งค่าผิดพลาด เซิร์ฟเวอร์ที่ยังตั้งค่าเป็น data-ciphers AES-256-GCM:AES-128-CBC จะลดระดับไปใช้ CBC cipher ให้กับไคลเอนต์ที่ไม่มีข้อเสนอที่ดีกว่าโดยอัตโนมัติ และไม่มีข้อความใดใน log ระบุว่านี่เป็นปัญหา

พอร์ตไม่ตอบกลับ แพ็กเก็ต WireGuard ที่ตรวจสอบ message authentication ไม่ผ่านจะถูกทิ้งโดยไม่มีการตอบกลับ ดังนั้น nmap -sU -p 51820 จะส่งคืน open|filtered ไม่ว่าจะมีสิ่งใดกำลัง listen อยู่หรือไม่ก็ตาม เซิร์ฟเวอร์ OpenVPN ในโหมด TCP จะทำ TCP handshake ให้เสร็จก่อนตัดสินใจว่าไม่อนุญาตให้คุณเชื่อมต่อ เพียงเท่านี้ก็เพียงพอให้ scanner ยืนยันได้ว่ามีบริการอยู่ OpenVPN ผ่าน UDP ที่ใช้ tls-crypt จะเงียบเกือบเทียบเท่ากัน ดังนั้นประเด็นนี้จึงเป็นเหตุผลที่ไม่ควรรัน OpenVPN บน TCP มากกว่าจะเป็นเหตุผลคัดค้าน OpenVPN เอง

รองรับการเปลี่ยนเครือข่ายโดยไม่มีค่าใช้จ่ายเพิ่มเติม WireGuard ระบุ peer ด้วย public key ไม่ใช่ address เมื่อแล็ปท็อปของคุณเปลี่ยนจากเครือข่ายที่บ้านไปเป็น mobile hotspot แล้วส่ง handshake จาก address ใหม่ เซิร์ฟเวอร์จะอัปเดต endpoint ที่ใช้ตอบกลับ ไม่มีการเชื่อมต่อใหม่ เพราะการเชื่อมต่อเดิมไม่เคยมีสถานะเป็นการเชื่อมต่อแบบคงอยู่ OpenVPN สามารถทำสิ่งที่คล้ายกันได้ด้วย float แต่โดยปกติไคลเอนต์จะยุติและสร้าง TLS session ใหม่ทั้งหมด จึงสังเกตเห็นช่วงหยุดชั่วคราวเมื่อเปิดฝาเครื่องบน OpenVPN แต่ไม่เกิดขึ้นบน WireGuard

ความเร็วในปี 2026: ช่องว่างแคบลง

หลายปีที่ผ่านมา เหตุผลด้านความเร็วที่อธิบายได้อย่างตรงไปตรงมาคือ OpenVPN คัดลอกแพ็กเก็ตทุกแพ็กเก็ตไปยัง userspace เพื่อเข้ารหัส จากนั้นจึงคัดลอกกลับมา ขณะที่ WireGuard ทำงานอยู่ใน kernel ตลอด แต่ปัจจุบันภาพรวมไม่ได้มีเพียงเท่านี้ และการเปรียบเทียบที่ไม่คำนึงถึงเรื่องนี้ก็ล้าสมัยแล้ว

OpenVPN 2.7 ออกในเดือนกุมภาพันธ์ 2026 พร้อมรองรับโมดูล kernel ต้นทาง ovpn ซึ่งถูกรวมเข้าใน Linux 6.16 แล้ว ฟังก์ชันนี้เรียกว่า DCO (data channel offload): control channel ยังคงทำงานใน userspace ส่วนเส้นทางข้อมูลหลักย้ายไปทำงานใน kernel ซึ่งโดยหลักแล้วเป็นวิธีเดียวกับที่ WireGuard ใช้มาตลอด เมื่อใช้ kernel และ OpenVPN เวอร์ชันใหม่พอที่จะรองรับฟังก์ชันนี้ throughput จะอยู่ในระดับเดียวกัน ไม่ได้แตกต่างกันคนละระดับ ตรวจสอบสิ่งที่ระบบของคุณมีจริง:

uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3

ณ เดือนกรกฎาคม 2026 Ubuntu 24.04 LTS รุ่นมาตรฐานติดตั้ง OpenVPN 2.6 ไม่ใช่ 2.7 และโมดูล ovpn ต้องใช้เวอร์ชัน 2.7 สำหรับรุ่นดังกล่าว คุณจะใช้ offload ได้เฉพาะผ่านแพ็กเกจ openvpn-dco-dkms รุ่นเก่า ซึ่งจะสร้างโมดูล out-of-tree เทียบกับ kernel ที่กำลังใช้งานอยู่ และจึงต้องสร้างใหม่ทุกครั้งที่อัปเกรด kernel นี่คือส่วนประกอบที่ต้องดูแลเพิ่มเติม ซึ่ง WireGuard ไม่มี

อ่านรายละเอียดข้อจำกัดของ DCO ให้ครบถ้วนก่อนจะถือว่าฟังก์ชันนี้เป็นเหตุผลให้เลือกใช้ OpenVPN ต่อไป DCO รองรับเฉพาะ tunnel แบบ Layer 3 รับเฉพาะ AEAD ciphers (การเข้ารหัสที่ยืนยันความถูกต้องพร้อมข้อมูลประกอบ: AES-GCM หรือ ChaCha20-Poly1305) ไม่รองรับ compression และบน server จะทำงานได้เฉพาะกับ topology subnet ข้อจำกัดเหล่านี้ทุกข้อทำให้ความยืดหยุ่นบางส่วนที่เคยเป็นจุดเด่นของ OpenVPN หายไป OpenVPN ที่ทำงานเร็วคือ OpenVPN ที่กำหนดค่าให้มีลักษณะใกล้เคียงกับ WireGuard

อย่าเชื่อค่าความเร็ว throughput ที่ผู้อื่นเผยแพร่ รวมถึงค่าจากหน้านี้ VPS มักมีเพดานจากโควตา CPU หรือโควตาเครือข่าย ไม่ใช่จาก protocol เอง ให้ใช้ iperf3 ทำงานผ่าน tunnel แล้ววัดอีกครั้งนอก tunnel จากนั้นเปรียบเทียบผลลัพธ์ทั้งสองค่า

กรณีที่ OpenVPN ยังคงเหมาะสม

คุณต้องเชื่อมต่อออกผ่าน TCP port 443 WireGuard รองรับเฉพาะ UDP โดยตั้งใจออกแบบเช่นนั้น และจะไม่มีโหมด TCP เครือข่ายโรงแรมหรือพร็อกซีขององค์กรที่อนุญาตเฉพาะ TCP 443 จะส่งต่อ OpenVPN ที่กำหนดค่าด้วย proto tcp-server และ port 443 ได้ เนื่องจากทราฟฟิกลักษณะดังกล่าวเหมือนเซสชัน TLS ทั่วไป WireGuard ต้องใช้ตัวห่อหุ้ม เช่น wstunnel หรือ udp2raw เพื่อข้ามเครือข่ายเดียวกัน ซึ่งทำให้ต้องเรียกใช้และติดตั้งแพตช์ให้กับอีกหนึ่งโปรเซส โปรดระวังความขัดแย้งนี้: หาก web server ใช้ TCP 443 บน IP address นั้นอยู่แล้ว ระบบใดระบบหนึ่งต้องย้ายไปใช้ port อื่น

คุณมี certificate authority ที่ใช้งานอยู่แล้ว OpenVPN ตรวจสอบสิทธิ์ด้วยใบรับรอง X.509 จึงนำไปใช้กับ PKI (public key infrastructure) ที่คุณดูแลอยู่แล้วได้ ใบรับรองจะหมดอายุเอง และคุณเพิกถอนใบรับรองได้โดยเพิ่มใบรับรองนั้นลงใน certificate revocation list ซึ่ง server จะอ่านผ่าน crl-verify WireGuard ไม่มีใบรับรอง ไม่มีวันหมดอายุ และไม่มี certificate revocation list การนำ peer ออกหมายถึงการแก้ไข server config แล้ว reload เมื่อมี peer 10 ราย การดำเนินการนี้ไม่ยุ่งยาก แต่เมื่อมี 400 รายและมีข้อกำหนดด้านการตรวจสอบ ระบบใบรับรองจะช่วยจัดการงานดังกล่าวได้อย่างมีประสิทธิภาพ

คุณต้องการผู้ใช้ที่ระบุชื่อได้ ไม่ใช่ใช้เฉพาะ key OpenVPN สามารถส่งต่อการตรวจสอบสิทธิ์ไปยังระบบภายนอกด้วย auth-user-pass-verify หรือ plugin เช่น openvpn-plugin-auth-pam.so ซึ่งช่วยให้เพิ่ม LDAP หรือการตรวจสอบสิทธิ์แบบปัจจัยที่สองด้วยรหัสผ่านใช้ครั้งเดียวได้ WireGuard ไม่มีแนวคิดเรื่องผู้ใช้เลย key จะอยู่ใน config หรือไม่อยู่ หากข้อกำหนดของคุณคือ “Sara ต้องป้อนรหัสจากโทรศัพท์ของเธอ” WireGuard ไม่สามารถรองรับเงื่อนไขนี้ได้ด้วยตัวเอง

คุณต้องใช้ Layer 2 หรือจำเป็นต้องใช้ client สำหรับระบบรุ่นเก่า OpenVPN ที่ใช้ dev tap จะ bridge Ethernet frame ซึ่งมีความสำคัญต่อโปรโตคอล broadcast และเกม LAN รุ่นเก่า WireGuard รองรับเฉพาะ Layer 3 และจะยังคงเป็นเช่นนั้นเสมอ OpenVPN ยังมี client สำหรับ hardware และ operating system ที่จะไม่มีแอป WireGuard ให้ใช้งาน เหตุผลทั้งสองข้อนี้มีความจำเป็นลดลงเรื่อย ๆ และ dev tap ไม่เข้ากันได้กับ DCO ดังนั้นเมื่อใช้ bridge คุณจะต้องใช้เส้นทางการประมวลผลที่ช้ากว่า

ต้นทุนจริงของการตั้งค่าทั้งสองแบบ

ตัวตนของ WireGuard ใช้คำสั่งเดียว วงเล็บมีความสำคัญ เพราะวงเล็บกำหนด file mode ก่อนที่จะสร้าง key:

(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.key

ส่วนเทียบเท่าของ OpenVPN คือ certificate authority ที่คุณต้องดูแลเองตลอดระยะเวลาที่ VPN ยังใช้งานอยู่:

sudo apt install -y easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server

รายการทั้งสองแบบไม่ได้กล่าวเกินจริง CA ช่วยให้กำหนดวันหมดอายุและเพิกถอน certificate ได้ แต่คุณต้องปกป้อง private key เป็นเวลาหลายปี ต้องจำกำหนดการต่ออายุ และต้องสร้างระบบใหม่หากทำ key สูญหาย หากคุณไม่ได้ใช้ประโยชน์จากความสามารถเหล่านี้ เท่ากับต้องรับภาระโดยไม่ได้ประโยชน์ ขั้นตอน WireGuard ฉบับเต็ม ซึ่งรวมการทำ forwarding, NAT (network address translation) และการแก้ handshake failures ที่อาจทำให้เสียเวลาทั้งบ่าย อยู่ใน คู่มือการโฮสต์ WireGuard VPN บน VPS ของคุณเอง

แต่ละรายการต้องตั้งค่าใดในไฟร์วอลล์ของคุณ

WireGuard ต้องใช้กฎขาเข้าเพียง 1 รายการสำหรับ UDP ที่พอร์ตใน ListenPort:

sudo ufw allow 51820/udp
sudo ufw status verbose

โดยค่าเริ่มต้น OpenVPN ต้องใช้ UDP 1194 หรือใช้ TCP 443 หากคุณเลือกเส้นทางนั้น จากนั้นทั้งสองโปรโตคอลต้องเปิดใช้การส่งต่อ IP และต้องมีกฎ source NAT เนื่องจากระบบ Linux จะทิ้งแพ็กเก็ตที่ไม่ได้ส่งมายังระบบนั้น ส่วนนี้เหมือนกันสำหรับทั้งสองโปรโตคอล และเป็นสาเหตุของรายงานส่วนใหญ่ที่ระบุว่า “อุโมงค์เชื่อมต่อแล้ว แต่ไม่มีอินเทอร์เน็ต” หากคุณยังไม่คุ้นเคยกับ ufw ให้เริ่มจาก พื้นฐานของไฟร์วอลล์ ufw บน VPS และโปรดทราบว่าผู้ให้บริการส่วนใหญ่มีไฟร์วอลล์เครือข่ายอีกชั้นหนึ่งในแผงควบคุม: กฎที่คุณเพิ่มบนเซิร์ฟเวอร์จะไม่มีผล หากแพ็กเก็ตไม่เคยมาถึงเซิร์ฟเวอร์ การทำความเข้าใจ พอร์ตคืออะไรและ Linux รับฟังพอร์ตอย่างไร จะช่วยให้ตรวจสอบทั้งสองส่วนได้รวดเร็วยิ่งขึ้น

วิธีเลือกในย่อหน้าเดียว

ให้ใช้ WireGuard เว้นแต่คุณจะระบุได้อย่างชัดเจนว่ามีสิ่งใดที่ WireGuard ไม่สามารถทำให้คุณได้ หากต้องใช้ TCP 443 เพื่อออกจากเครือข่ายที่มีข้อจำกัด ให้ใช้ OpenVPN บนพอร์ตดังกล่าว และพิจารณาใช้งานทั้งสองระบบร่วมกัน เนื่องจากทั้งสองระบบใช้พอร์ตต่างกันและทำงานอยู่บนเซิร์ฟเวอร์เดียวกันได้โดยไม่ขัดแย้งกัน หากต้องการบัญชีผู้ใช้แยกตามรายบุคคลหรือการยืนยันตัวตนแบบปัจจัยที่สอง อย่าพยายามบังคับให้ WireGuard จัดการเรื่องนี้ ให้เพิ่มชั้นข้อมูลประจำตัวไว้ด้านบนแทน เซิร์ฟเวอร์ควบคุม Headscale ที่โฮสต์ด้วยตนเอง ใช้ WireGuard เป็นกลไกเบื้องหลัง และเพิ่มรูปแบบบัญชี การแจกจ่ายคีย์ และการอนุมัติอุปกรณ์ ซึ่ง WireGuard แบบพื้นฐานจะปล่อยให้คุณจัดการเอง

การย้ายจาก OpenVPN โดยไม่ให้บริการหยุดชะงัก

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

ให้ย้ายระบบแบบขนานแทนการสลับระบบ WireGuard ที่ใช้ UDP 51820 และ OpenVPN ที่ใช้ 1194 สามารถทำงานบนเครื่องเดียวกันพร้อมกันได้ ดังนั้นให้เริ่มการทำงานของ wg0 ยืนยันการทำงานด้วย sudo wg show โดยตรวจสอบรายการ latest handshake ล่าสุด จากนั้นย้ายลูกค้าทีละราย เมื่อรายการเพียร์ของ OpenVPN ไม่มีการเปลี่ยนแปลงแล้ว ให้หยุดบริการด้วย sudo systemctl disable --now openvpn-server@server เก็บไฟล์ CA ไว้จนกว่าจะมั่นใจ เนื่องจากไม่สามารถสร้างลูกค้าที่ถูกเพิกถอนขึ้นใหม่โดยใช้ CA ที่ลบไปแล้วได้

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

FAQ

WireGuard เร็วกว่า OpenVPN หรือไม่

บนเซิร์ฟเวอร์ Ubuntu 24.04 ที่ใช้การตั้งค่ามาตรฐาน คำตอบคือเร็วกว่าอย่างมาก เนื่องจาก WireGuard เข้ารหัสข้อมูลใน kernel ขณะที่ OpenVPN 2.6 ส่งทุกแพ็กเก็ตผ่านโพรเซสใน userspace ส่วน OpenVPN 2.7 ที่ใช้โมดูล kernel ovpn จาก Linux 6.16 จะประมวลผลเส้นทางข้อมูลใน kernel เช่นกัน ทำให้ประสิทธิภาพอยู่ในระดับเดียวกัน ควรทดสอบด้วย iperf3 ผ่าน tunnel ของคุณเอง แทนการเชื่อตัวเลขจากบล็อก เนื่องจากบน VPS ข้อจำกัดมักอยู่ที่ CPU หรือโควตาแบนด์วิดท์ของคุณ

WireGuard ทำงานผ่าน TCP port 443 ได้หรือไม่

ทำไม่ได้ด้วยตัวเอง WireGuard รองรับเฉพาะ UDP ตามการออกแบบ และไม่มีแผนรองรับโหมด TCP หากต้องผ่านเครือข่ายที่อนุญาตเฉพาะ TCP 443 คุณต้องห่อหุ้ม WireGuard ใน tunnel เช่น wstunnel หรือ udp2raw ซึ่งเพิ่มโพรเซสที่ต้องเรียกใช้และอัปเดตแพตช์ที่ปลายทางทั้งสองด้าน หากข้อจำกัดนี้เป็นสภาพแวดล้อมการทำงานปกติของคุณ OpenVPN ที่ใช้ proto tcp-server และ port 443 เป็นตัวเลือกที่ง่ายกว่า

OpenVPN ไม่ปลอดภัยแล้วหรือไม่

ไม่ใช่ OpenVPN รุ่นปัจจุบันที่ใช้ AEAD cipher เช่น AES-256-GCM และเปิดใช้ tls-crypt เป็น VPN ที่มีความปลอดภัยเหมาะสม เหตุผลที่เลือก WireGuard อยู่ที่ประเด็นอื่น OpenVPN มีโค้ดและตัวเลือกจำนวนมากกว่ามาก จึงเปิดโอกาสให้ผู้ดูแลระบบที่เหนื่อยล้าตั้งค่าผิดพลาดได้หลายรูปแบบ ตัวเลือกที่น้อยลงหมายถึงข้อผิดพลาดที่น้อยลง

ควรเลือกตัวใดสำหรับ VPN ส่วนตัวบน VPS

WireGuard ใช้ key pair 1 ชุดต่ออุปกรณ์ ไฟล์การตั้งค่า 1 ไฟล์ที่มีประมาณ 10 บรรทัด เปิด UDP port 1 port และทำ handshake เสร็จก่อนที่คุณจะทันสังเกตว่าเริ่มทำงาน เลือก OpenVPN เฉพาะเมื่อคุณเชื่อมต่อจากเครือข่ายที่บล็อก UDP เป็นประจำ หรือต้องใช้ certificate authority หรือไดเรกทอรีผู้ใช้ที่มีอยู่แล้ว