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.
Sebab WireGuard menjadi pilihan hos kendiri
Kod sumbernya cukup kecil untuk dibaca. Projek WireGuard mempunyai pelaksanaan protokol yang kira-kira 4,000 baris kod. OpenVPN mencecah enam angka apabila anda mengambil kira pustaka OpenSSL yang digunakannya untuk setiap operasi kriptografi. Saiz penting kerana setiap baris ialah permukaan serangan, dan anda atau penyemak anda tidak akan membaca 100,000 baris. Anda boleh membaca 4,000 baris.
Ia berjalan dalam kernel. WireGuard telah berada dalam kernel utama Linux sejak 5.6, jadi Ubuntu 24.04 dan Debian 13 menyertakannya tanpa perlu menyusun apa-apa. Paket disulitkan di tempat asalnya, iaitu dalam ruang kernel, tanpa menyalinnya ke proses ruang pengguna dan kembali semula. Semak perkara ini sebelum yang lain:
sudo modprobe wireguard && echo okPada VPS KVM, arahan ini memaparkan ok. Dalam virtualisasi kontena yang berkongsi kernel hos, seperti OpenVZ atau LXC, arahan ini gagal dengan Operation not supported kerana anda tidak boleh memuatkan modul ke dalam kernel yang bukan milik anda.
Tiada rundingan yang perlu dibuat. WireGuard mempunyai satu suite sifir tetap: ChaCha20-Poly1305 untuk data, dengan kunci Curve25519. Tiada versi yang boleh diturunkan dan tiada pilihan yang boleh tersalah tetapkan. OpenVPN merundingkan sifir dan versi TLS (keselamatan lapisan pengangkutan) dengan setiap klien. Fleksibiliti ini juga menjadi tempat berlakunya salah konfigurasi. Pelayan yang dibiarkan dengan data-ciphers AES-256-GCM:AES-128-CBC akan kembali menggunakan sifir CBC untuk klien yang tidak menawarkan pilihan lebih baik, dan tiada apa-apa dalam log yang menandakan keadaan itu sebagai masalah.
Port itu tidak memberikan respons. Paket WireGuard yang gagal dalam semakan pengesahan mesej akan digugurkan tanpa sebarang balasan. Oleh itu, nmap -sU -p 51820 mengembalikan open|filtered sama ada terdapat sesuatu yang mendengar atau tidak. Pelayan OpenVPN dalam mod TCP melengkapkan jabat tangan TCP sebelum menentukan bahawa anda tidak dibenarkan masuk. Ini sudah cukup untuk membuktikan kepada pengimbas bahawa terdapat sesuatu di situ. OpenVPN melalui UDP dengan tls-crypt hampir sama senyap. Jadi, perkara ini ialah hujah terhadap menjalankan OpenVPN melalui TCP, bukan terhadap OpenVPN itu sendiri.
Perayauan tidak memerlukan kos tambahan. Peer WireGuard dikenal pasti melalui kunci awamnya, bukan alamatnya. Komputer riba anda berpindah dari rangkaian rumah ke hotspot mudah alih, menghantar satu jabat tangan dari alamat baharu, dan pelayan mengemas kini endpoint yang digunakan untuk membalas. Tiada sambungan semula kerana tiada sambungan yang pernah diwujudkan. OpenVPN boleh melakukan sesuatu yang serupa dengan float, tetapi klien biasanya menamatkan dan membina semula sesi TLS penuh. Oleh sebab itu, jeda apabila penutup komputer riba dibuka ketara pada OpenVPN tetapi tidak pada WireGuard.
Kelajuan pada 2026: jurangnya semakin kecil
Selama bertahun-tahun, hujah kelajuan yang tepat ialah OpenVPN menyalin setiap paket ke ruang pengguna, menyulitkannya di situ, kemudian menyalinnya semula, manakala WireGuard tidak pernah keluar dari kernel. Gambaran itu tidak lagi lengkap, dan perbandingan yang mengabaikannya sudah lapuk.
OpenVPN 2.7 dikeluarkan pada Februari 2026 dengan sokongan untuk modul kernel upstream ovpn, yang digabungkan ke dalam Linux 6.16. Ini ialah DCO (pelepasan beban saluran data): saluran kawalan kekal dalam ruang pengguna, manakala laluan data pukal dipindahkan ke kernel. Itulah kira-kira cara WireGuard berfungsi sejak awal. Pada kernel dan OpenVPN yang cukup baharu untuk menggunakannya, kadar pemprosesan berada dalam kelas yang sama, bukan pada tahap yang berbeza. Semak perkara yang sebenarnya tersedia pada sistem anda:
uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3Setakat Julai 2026, Ubuntu 24.04 LTS standard disertakan dengan OpenVPN 2.6, bukan 2.7, dan modul ovpn memerlukan 2.7. Pada keluaran itu, anda hanya mendapat pelepasan beban melalui pakej openvpn-dco-dkms yang lebih lama. Pakej ini membina modul luar pepohon terhadap kernel yang sedang berjalan, lalu perlu dibina semula pada setiap peningkatan kernel. Ini ialah komponen tambahan yang tidak diperlukan oleh WireGuard.
Baca butiran DCO dengan teliti sebelum menganggapnya sebagai alasan untuk terus menggunakan OpenVPN. DCO hanya menyokong terowong Layer 3, hanya menerima sifir AEAD (penyulitan terautentikasi dengan data berkaitan: AES-GCM atau ChaCha20-Poly1305), tidak menyokong pemampatan, dan pada pelayan hanya berfungsi dengan topology subnet. Setiap sekatan ini mengurangkan sebahagian daripada fleksibiliti yang pada asalnya menjadi hujah untuk OpenVPN. OpenVPN yang pantas ialah OpenVPN yang dikonfigurasikan supaya menyerupai WireGuard.
Jangan mempercayai mana-mana angka kadar pemprosesan yang diterbitkan, termasuk angka pada halaman ini. Had maksimum pada VPS biasanya ditentukan oleh peruntukan CPU atau peruntukan rangkaian, bukan protokol. Ukur sistem anda sendiri dengan iperf3 yang dijalankan melalui terowong, kemudian jalankannya semula di luarnya, dan bandingkan kedua-dua keputusan.
Situasi OpenVPN masih berguna
Anda perlu keluar melalui port TCP 443. WireGuard hanya menggunakan UDP, dengan sengaja, dan tiada mod TCP yang akan ditambah. Rangkaian hotel atau proksi korporat yang hanya membenarkan TCP 443 akan membenarkan OpenVPN yang dikonfigurasikan dengan proto tcp-server dan port 443, kerana trafik itu kelihatan seperti sesi TLS biasa. WireGuard memerlukan pembungkus seperti wstunnel atau udp2raw untuk merentasi rangkaian yang sama. Ini menambah satu lagi proses yang perlu dijalankan dan dikemas kini. Ambil perhatian tentang konflik ini: jika pelayan web sudah menggunakan TCP 443 pada alamat IP tersebut, salah satu daripadanya perlu dipindahkan.
Anda sudah menjalankan pihak berkuasa sijil. OpenVPN melakukan pengesahan menggunakan sijil X.509, jadi ia boleh terus digunakan dalam PKI (infrastruktur kunci awam) yang sudah anda kendalikan. Sijil akan tamat tempoh secara automatik. Anda boleh membatalkan sijil dengan menambahkannya pada senarai pembatalan sijil yang dibaca oleh pelayan melalui crl-verify. WireGuard tidak menggunakan sijil, tarikh tamat tempoh atau senarai pembatalan. Untuk mengalih keluar peer, anda perlu mengedit konfigurasi pelayan dan memuatkannya semula. Untuk sepuluh peer, kaedah ini memadai. Untuk empat ratus peer dengan keperluan audit, model sijil memberikan manfaat sebenar.
Anda memerlukan pengguna bernama, bukan kunci sahaja. OpenVPN boleh menyerahkan pengesahan kepada sistem luaran dengan auth-user-pass-verify atau pemalam seperti openvpn-plugin-auth-pam.so. Ini membolehkan anda menambah LDAP atau faktor kedua kata laluan sekali guna. WireGuard langsung tidak mempunyai konsep pengguna. Sesuatu kunci sama ada terdapat dalam konfigurasi atau tidak. Jika keperluan anda ialah "Sara mesti memasukkan kod daripada telefonnya", WireGuard tidak dapat melaksanakannya sendiri.
Anda memerlukan Layer 2 atau klien untuk sistem lama. OpenVPN dengan dev tap menjambatani bingkai Ethernet. Ini penting untuk protokol siaran dan permainan LAN lama. WireGuard hanya menyokong Layer 3 dan akan kekal begitu. OpenVPN juga mempunyai klien untuk perkakasan dan sistem pengendalian yang tidak akan pernah mempunyai aplikasi WireGuard. Kedua-dua sebab ini semakin kurang penting. Selain itu, dev tap tidak serasi dengan DCO, jadi anda perlu menggunakan laluan yang lebih perlahan apabila memilih jambatan.
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 lalai, ya, dan perbezaannya ketara kerana WireGuard menyulitkan data dalam kernel, manakala OpenVPN 2.6 memindahkan setiap paket melalui proses ruang pengguna. Dengan OpenVPN 2.7 dan modul kernel ovpn daripada Linux 6.16, laluan data juga berada dalam kernel dan kedua-duanya berada dalam kelas yang sama. Ukur prestasi anda sendiri menggunakan iperf3 merentasi terowong, bukannya mempercayai angka daripada blog, kerana pada VPS hadnya biasanya ditentukan oleh CPU atau peruntukan lebar jalur anda.
Bolehkah WireGuard berjalan melalui port TCP 443?
Tidak secara langsung. WireGuard direka untuk menggunakan UDP sahaja dan tiada mod TCP yang dirancang. Untuk merentasi rangkaian yang hanya membenarkan TCP 443, bungkus WireGuard dalam terowong seperti wstunnel atau udp2raw. Ini menambah satu proses yang perlu dijalankan dan ditampal pada kedua-dua hujung. Jika sekatan itu merupakan persekitaran kerja biasa anda, OpenVPN dengan proto tcp-server dan port 443 ialah pilihan yang lebih mudah.
Adakah OpenVPN kini tidak selamat?
Tidak. OpenVPN semasa dengan sifir AEAD seperti AES-256-GCM dan tls-crypt yang didayakan ialah VPN yang selamat. Alasan untuk memilih WireGuard terletak pada perkara lain: OpenVPN mengandungi jauh lebih banyak kod dan lebih banyak pilihan. Oleh itu, pentadbir yang keletihan mempunyai lebih banyak cara untuk mengkonfigurasikannya dengan salah. Lebih sedikit pilihan bermaksud lebih sedikit kesilapan konfigurasi.
Yang manakah patut saya pilih untuk VPN peribadi pada VPS?
WireGuard. Satu pasangan kunci bagi setiap peranti, satu fail konfigurasi yang panjangnya kira-kira sepuluh baris, satu port UDP yang dibuka, dan jabat tangan yang selesai sebelum anda menyedari bahawa proses itu telah bermula. Pilih OpenVPN hanya jika anda kerap menyambung dari rangkaian yang menyekat UDP, atau jika anda mesti menggunakan pihak berkuasa sijil atau direktori pengguna yang telah tersedia.