WireGuard vs OpenVPN: Mana Sesuai Dihos Sendiri?
WireGuard lebih pantas, konfigurasinya sekitar 10 baris dan permukaan audit lebih kecil. OpenVPN masih unggul untuk TCP 443, kata laluan, CA dan Layer 2.
Jawapan ringkas
WireGuard berbanding OpenVPN, untuk seorang pengguna yang menjalankan pelayan VPN pada VPS milik sendiri, bukanlah perbandingan yang seimbang: pilih WireGuard. Saiznya lebih kecil, ia berjalan dalam kernel Linux, ia bersambung dalam pecahan saat, dan konfigurasi klien yang berfungsi hanya kira-kira sepuluh baris. OpenVPN masih mempunyai empat kegunaan sebenar. Jika tiada satu pun daripadanya diperlukan oleh anda, anda tidak memerlukannya.
Empat kegunaan itu ialah keluar daripada rangkaian yang hanya membenarkan port TCP 443, disepadukan dengan pihak berkuasa sijil sedia ada, mengesahkan pengguna bernama menggunakan kata laluan atau faktor kedua, dan merapatkan rangkaian pada Layer 2. Semua kandungan di bawah ialah bukti bagi cadangan itu serta titik tepat apabila setiap pengecualian mula terpakai kepada anda.
Mengapa WireGuard menjadi pilihan untuk self-hoster
Kod sumbernya cukup kecil untuk dibaca. Projek WireGuard meletakkan implementasi protokolnya pada kira-kira 4,000 baris kod. OpenVPN mencecah enam angka jika anda mengambil kira pustaka OpenSSL yang digunakan untuk setiap operasi kriptografi. Saiz adalah penting kerana setiap baris kod merupakan permukaan serangan, dan anda mahupun penyemak kod anda tidak akan membaca 100,000 baris. Anda mampu membaca 4,000 baris.
Ia berjalan di dalam kernel. WireGuard telah berada dalam mainline Linux sejak versi 5.6, jadi Ubuntu 24.04 dan Debian 13 menyertakannya tanpa perlu melakukan kompilasi. Paket disulitkan di tempat asalnya, iaitu di dalam ruang kernel, tanpa perlu disalin keluar ke proses userspace dan kembali semula. Semak perkara ini sebelum yang lain:
sudo modprobe wireguard && echo okPada KVM VPS, ia akan memaparkan ok. Pada virtualisasi kontena yang berkongsi kernel hos, seperti OpenVZ atau LXC, ia akan gagal dengan Operation not supported, kerana anda tidak boleh memuatkan modul ke dalam kernel yang bukan milik anda.
Tiada rundingan (negotiation) yang berlaku. WireGuard mempunyai satu suite sifir tetap: ChaCha20-Poly1305 untuk data, dengan kunci Curve25519. Tiada versi untuk diturun taraf dan tiada pilihan yang boleh disalah konfigurasi. OpenVPN merundingkan sifir dan versi TLS (transport layer security) dengan setiap klien; ini memberikan fleksibiliti, tetapi di sinilah berlakunya salah konfigurasi. Pelayan yang dibiarkan dengan data-ciphers AES-256-GCM:AES-128-CBC akan dengan mudah beralih kepada sifir CBC untuk klien yang tidak menawarkan pilihan yang lebih baik, dan log tidak menandakan sifir yang lebih lemah itu sebagai satu masalah. Apabila offload saluran data tersedia, OpenVPN mencetak nota bahawa entri CBC telah mematikan offload, yang merupakan amaran tentang kelajuan, bukan tentang keselamatan.
Port tidak memberi respons. Paket WireGuard yang gagal dalam semakan pengesahan mesej akan digugurkan tanpa sebarang balasan, jadi nmap -sU -p 51820 tidak dapat membezakan pelayan WireGuard daripada port yang digugurkan secara senyap oleh firewall anda: kedua-duanya akan memberikan hasil open|filtered. Hanya port yang tidak ditapis dan tiada servis yang mendengar akan mendedahkan dirinya, kerana kernel akan membalas dengan ICMP port unreachable dan nmap akan melaporkannya sebagai closed. Pelayan OpenVPN dalam mod TCP akan melengkapkan jabat tangan (handshake) TCP sebelum ia memutuskan bahawa anda tidak dialu-alukan, yang sudah cukup untuk membuktikan kepada pengimbas bahawa terdapat sesuatu di sana. OpenVPN melalui UDP dengan tls-crypt hampir sama senyap, jadi ini adalah hujah terhadap menjalankan OpenVPN pada TCP, bukannya terhadap OpenVPN itu sendiri.
Roaming adalah percuma. Peer WireGuard dikenal pasti melalui kunci awamnya, bukan melalui alamatnya. Komputer riba anda berpindah dari rumah ke hotspot mudah alih, menghantar satu jabat tangan dari alamat baharu, dan pelayan mengemas kini titik akhir (endpoint) yang dibalasnya. Tiada sambungan yang perlu dibuat semula kerana tiada sambungan yang pernah terputus. OpenVPN boleh melakukan sesuatu yang serupa dengan float, tetapi klien biasanya akan mematikan dan membina semula sesi TLS penuh, itulah sebabnya jeda semasa membuka penutup komputer riba dapat dirasai pada OpenVPN tetapi tidak pada WireGuard.
Kelajuan pada tahun 2026: jurang semakin mengecil hanya dengan kernel offload
Selama bertahun-tahun, hujah kelajuan yang jujur adalah bahawa OpenVPN menyalin setiap paket ke dalam userspace, menyulitkannya di sana, dan menyalinnya semula, manakala WireGuard tidak pernah meninggalkan kernel. Pada pelayan Ubuntu 24.04 standard, gambaran ini masih tepat, dan WireGuard jauh lebih pantas. Perkara yang berubah pada tahun 2026 ialah OpenVPN kini boleh memindahkan laluan datanya ke dalam kernel juga, apabila kedua-dua kernel dan versi OpenVPN menyokongnya, dan perbandingan yang mengabaikan perkara ini adalah ketinggalan zaman.
OpenVPN 2.7 dilancarkan pada Februari 2026 dengan sokongan untuk modul kernel ovpn, yang telah digabungkan ke dalam Linux 6.16. Ini adalah DCO (data channel offload): saluran kawalan kekal dalam userspace, dan laluan data pukal berpindah ke dalam kernel, yang secara kasarnya adalah apa yang sentiasa dilakukan oleh WireGuard. Pada kernel dan OpenVPN yang cukup baharu untuk menggunakannya, daya pemprosesan (throughput) berada dalam kelas yang sama dan bukannya kelas yang berbeza. Semak apa yang anda sebenarnya miliki:
uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3Sehingga Oktober 2026, Ubuntu 24.04 LTS standard membekalkan OpenVPN 2.6, bukan 2.7, dan modul ovpn memerlukan versi 2.7. Pada keluaran tersebut, anda hanya mendapat offload melalui pakej openvpn-dco-dkms yang lebih lama, yang membina modul di luar pokok (out-of-tree) terhadap kernel anda yang sedang berjalan dan oleh itu perlu dibina semula pada setiap naik taraf kernel. Itu adalah komponen tambahan yang tidak dimiliki oleh WireGuard. Ubuntu 26.04 LTS membekalkan OpenVPN 2.7.0 dan kernel Linux 7.0, kedua-duanya cukup baharu untuk ovpn, jadi pada keluaran tersebut, baris modinfo di atas adalah yang perlu disemak.
Baca butiran terperinci mengenai DCO sebelum anda menganggapnya sebagai alasan untuk kekal. Ia hanya menyokong terowong Layer 3, ia hanya menerima cipher AEAD (authenticated encryption with associated data: AES-GCM atau ChaCha20-Poly1305), ia tidak menyokong pemampatan, dan pada pelayan ia hanya berfungsi dengan topology subnet. Setiap sekatan tersebut menghilangkan sebahagian daripada fleksibiliti yang menjadi hujah utama OpenVPN pada mulanya. OpenVPN yang pantas ialah OpenVPN yang dikonfigurasikan agar kelihatan seperti WireGuard.
Jangan percaya pada mana-mana angka daya pemprosesan yang diterbitkan, termasuk halaman ini. Had pada VPS biasanya adalah peruntukan CPU atau peruntukan rangkaian dan bukannya protokol itu sendiri. Ukur kelajuan anda sendiri dengan iperf3 yang dijalankan merentasi terowong, kemudian sekali lagi di luarnya, dan bandingkan kedua-duanya.
Di mana OpenVPN masih relevan
Anda perlu keluar melalui port TCP 443. WireGuard hanya menggunakan UDP secara sengaja, dan tiada mod TCP yang akan disediakan. Rangkaian hotel yang menapis trafik berdasarkan nombor port biasanya akan membenarkan OpenVPN yang dikonfigurasikan dengan proto tcp-server dan port 443. Jangan tersilap menganggap ini sebagai penyamaran: OpenVPN melalui TCP menggunakan pembingkaian paketnya sendiri dan bukannya sesi TLS biasa, jadi firewall atau proksi korporat yang memeriksa atau menamatkan HTTPS masih boleh mengenal pasti dan menyekatnya. WireGuard memerlukan pembungkus seperti wstunnel atau udp2raw untuk merentasi rangkaian yang sama, yang bermaksud satu lagi proses perlu dijalankan dan dikemaskini. Ambil perhatian tentang konflik ini: jika pelayan web sudah menggunakan TCP 443 pada alamat IP tersebut, salah satu daripadanya perlu dialihkan.
Anda sudah mengendalikan pihak berkuasa sijil (certificate authority). OpenVPN mengesahkan identiti menggunakan sijil X.509, jadi ia boleh terus digunakan dalam PKI (infrastruktur kunci awam) yang anda sedia kendalikan. Sijil akan tamat tempoh secara automatik, dan anda boleh membatalkan sijil dengan menambahkannya ke dalam senarai pembatalan sijil yang dibaca oleh pelayan melalui crl-verify. WireGuard tidak mempunyai sijil, tiada tarikh tamat tempoh dan tiada senarai pembatalan. Membuang peer bermaksud menyunting konfigurasi pelayan dan memuat semula konfigurasi tersebut. Bagi sepuluh peer, ini tidak menjadi masalah. Bagi empat ratus peer, dengan keperluan audit, model sijil memberikan nilai kerja yang sebenar untuk anda.
Anda memerlukan pengguna bernama, bukan sekadar kunci. OpenVPN boleh menyerahkan pengesahan kepada sistem luaran dengan auth-user-pass-verify atau pemalam seperti openvpn-plugin-auth-pam.so, iaitu cara untuk menambah LDAP atau faktor kedua kata laluan sekali guna (OTP). WireGuard tidak mempunyai konsep pengguna sama sekali. Kunci sama ada berada dalam konfigurasi atau tidak. Jika keperluan anda adalah "Sara mesti memasukkan kod daripada telefonnya", WireGuard tidak boleh melaksanakannya secara sendirian.
Anda memerlukan Layer 2, atau klien untuk sistem lama. OpenVPN dengan dev tap menjambatankan bingkai Ethernet, yang penting untuk protokol siaran (broadcast) dan permainan LAN lama. WireGuard hanya berfungsi pada Layer 3 dan akan kekal begitu. OpenVPN juga mempunyai klien pada perkakasan dan sistem pengendalian yang tidak akan menyokong aplikasi WireGuard. Kedua-dua sebab ini semakin kurang relevan, dan dev tap tidak serasi dengan DCO, jadi anda akan menggunakan laluan yang lebih perlahan apabila memilih mod bridge.
Kos sebenar yang perlu anda tanggung bagi kedua-dua persediaan
Identiti WireGuard hanya memerlukan satu arahan. Tanda kurung penting kerana menetapkan mod fail sebelum kunci wujud:
(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.keyPadanan OpenVPN ialah certificate authority yang kini anda miliki selagi VPN itu wujud:
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 serverKedua-dua senarai ini adil. CA memberikan tempoh luput dan pembatalan, tetapi anda perlu melindungi private key selama bertahun-tahun, mengingati pembaharuan dan membina semula sistem jika kunci itu hilang. Jika anda tidak menggunakan manfaat yang diberikannya, anda hanya menanggung kos tanpa faedah. Prosedur WireGuard lengkap, termasuk pemajuan, NAT (network address translation) dan kegagalan handshake yang boleh membuang masa berjam-jam, terdapat dalam panduan mengehos sendiri VPN WireGuard pada VPS anda.
Perkara yang diperlukan oleh setiap protokol daripada tembok api anda
WireGuard memerlukan tepat satu peraturan masuk, untuk UDP pada port dalam ListenPort:
sudo ufw allow 51820/udp
sudo ufw status verboseOpenVPN memerlukan UDP 1194 secara lalai, atau TCP 443 jika anda memilih laluan itu. Kedua-duanya kemudian memerlukan pemajuan IP diaktifkan dan peraturan NAT sumber, kerana kotak Linux menggugurkan paket yang tidak dialamatkan kepadanya. Bahagian itu sama untuk kedua-dua protokol, dan di situlah kebanyakan laporan "terowong bersambung tetapi tiada internet" berpunca. Jika ufw masih baharu bagi anda, mulakan dengan asas tembok api ufw pada VPS, dan ingat bahawa kebanyakan penyedia menjalankan tembok api rangkaian kedua dalam panel kawalan mereka: peraturan yang anda tambahkan pada pelayan tidak memberi kesan jika paket itu tidak pernah sampai ke pelayan. Memahami apa itu port dan cara Linux mendengar pada port menjadikan kedua-dua pemeriksaan itu lebih cepat.
Cara memilih, dalam satu perenggan
Jalankan WireGuard kecuali anda boleh menyatakan perkara khusus yang tidak dapat dilakukannya untuk anda. Jika anda memerlukan TCP 443 untuk melepasi rangkaian yang ketat, jalankan OpenVPN pada port itu dan pertimbangkan untuk menjalankan kedua-duanya: kedua-duanya menggunakan port yang berbeza dan boleh berfungsi bersama pada satu pelayan tanpa konflik. Jika anda memerlukan akaun bagi setiap pengguna atau faktor kedua, jangan cuba memaksa WireGuard menyediakannya. Sebaliknya, letakkan lapisan identiti di atasnya. Pelayan kawalan Headscale yang dihoskan sendiri menggunakan WireGuard pada lapisan asas dan menambah model akaun, pengedaran kunci serta kelulusan peranti yang perlu anda uruskan sendiri jika menggunakan WireGuard biasa.
Berhijrah daripada OpenVPN tanpa gangguan
Tiada proses penukaran. PKI OpenVPN tidak menjadi kunci WireGuard kerana WireGuard tidak mempunyai sijil untuk ditukar. Setiap klien mendapat pasangan kunci baharu yang dijana dengan cara yang sama seperti pada pelayan.
Lakukan penghijrahan secara selari dan bukannya dengan menukar sistem secara serta-merta. WireGuard pada UDP 51820 dan OpenVPN pada 1194 boleh berjalan pada kotak yang sama pada masa yang sama. Oleh itu, aktifkan wg0, sahkannya dengan sudo wg show dengan menyenaraikan latest handshake yang terkini, kemudian pindahkan klien satu demi satu. Apabila senarai peer OpenVPN tidak lagi berubah, hentikan perkhidmatan dengan sudo systemctl disable --now openvpn-server@server. Simpan fail CA sehingga anda benar-benar pasti kerana anda tidak boleh membina semula klien yang telah dibatalkan pada CA yang telah dipadam.
Satu perkara yang sememangnya tidak dapat dipindahkan ialah akaun nama pengguna dan kata laluan anda serta rekod pembatalan yang berkaitan dengannya. Tentukan tempat penyimpanannya sebelum anda mematikan pelayan lama, bukan selepas itu.
FAQ
Adakah WireGuard lebih pantas daripada OpenVPN?
Pada pelayan Ubuntu 24.04 standard, ya, dengan perbezaan yang ketara, kerana WireGuard melakukan penyulitan di dalam kernel manakala OpenVPN 2.6 menghantar setiap paket melalui proses userspace. Dengan OpenVPN 2.7 dan modul kernel ovpn daripada Linux 6.16, laluan data juga berada di dalam kernel dan kedua-duanya berada dalam kelas yang sama. Ukur prestasi anda sendiri dengan iperf3 merentasi terowong tersebut daripada mempercayai angka daripada blog, kerana pada VPS, hadnya biasanya adalah CPU atau kuota lebar jalur anda.
Bolehkah WireGuard berjalan melalui port TCP 443?
Tidak secara sendirinya. WireGuard direka bentuk untuk menggunakan UDP sahaja, dan tiada mod TCP dirancang. Untuk merentasi rangkaian yang hanya membenarkan TCP 443, anda perlu membungkusnya dalam terowong seperti wstunnel atau udp2raw, yang menambah satu proses untuk dijalankan dan ditampal pada kedua-dua hujung. Jika sekatan tersebut adalah persekitaran kerja biasa anda, OpenVPN dengan proto tcp-server dan port 443 adalah jawapan yang lebih mudah pada rangkaian yang menapis mengikut port sahaja, walaupun proksi yang memeriksa HTTPS masih boleh mengesan dan menyekatnya.
Adakah OpenVPN tidak selamat sekarang?
Tidak. OpenVPN semasa dengan cipher AEAD seperti AES-256-GCM dan tls-crypt diaktifkan adalah VPN yang kukuh. Kelebihan WireGuard terletak pada perkara lain: OpenVPN membawa kod yang jauh lebih banyak dan pilihan yang jauh lebih banyak, jadi ia menawarkan pentadbir yang keletihan banyak cara untuk mengkonfigurasinya dengan salah. Pilihan yang lebih sedikit bermakna lebih sedikit kesilapan yang boleh dilakukan.
Yang mana patut saya pilih untuk VPN peribadi pada VPS?
WireGuard. Satu pasangan kunci bagi setiap peranti, satu fail konfigurasi yang mengandungi kira-kira sepuluh baris, satu port UDP yang dibuka, dan jabat tangan (handshake) yang selesai sebelum anda sedar ia bermula. Pilih OpenVPN hanya jika anda kerap menyambung dari rangkaian yang menyekat UDP, atau jika anda perlu mematuhi pihak berkuasa sijil (certificate authority) atau direktori pengguna yang sedia ada.