Adakah WireGuard VPN yang hebat pada masa hadapan?

Adakah WireGuard VPN yang hebat pada masa hadapan?

Masanya telah tiba apabila VPN bukan lagi alat eksotik pentadbir sistem berjanggut. Pengguna mempunyai tugas yang berbeza, tetapi hakikatnya semua orang memerlukan VPN.

Masalah dengan penyelesaian VPN semasa ialah ia sukar untuk dikonfigurasikan dengan betul, mahal untuk diselenggara dan penuh dengan kod warisan kualiti yang boleh dipersoalkan.

Beberapa tahun yang lalu, pakar keselamatan maklumat Kanada Jason A. Donenfeld memutuskan bahawa dia sudah cukup dan mula bekerja WireGuard. WireGuard kini sedang disediakan untuk dimasukkan ke dalam kernel Linux malah telah menerima pujian daripada Linus Torvalds dan Senat AS.

Tuntutan kelebihan WireGuard berbanding penyelesaian VPN lain:

  • Mudah untuk digunakan.
  • Menggunakan kriptografi moden: Rangka kerja protokol hingar, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, dsb.
  • Kod padat, boleh dibaca, lebih mudah untuk menyiasat kelemahan.
  • Prestasi tinggi.
  • Jelas dan terperinci spesifikasi.

Adakah peluru perak telah ditemui? Adakah masa untuk mengebumikan OpenVPN dan IPSec? Saya memutuskan untuk menangani perkara ini, dan pada masa yang sama saya melakukannya skrip untuk memasang pelayan VPN peribadi secara automatik.

Prinsip kerja

Prinsip operasi boleh diterangkan seperti ini:

  • Antara muka WireGuard dibuat dan kunci peribadi serta alamat IP diberikan kepadanya. Tetapan rakan sebaya lain dimuatkan: kunci awam mereka, alamat IP, dsb.
  • Semua paket IP yang tiba di antara muka WireGuard dikapsulkan dalam UDP dan dihantar dengan selamat rakan sebaya yang lain.
  • Pelanggan menentukan alamat IP awam pelayan dalam tetapan. Pelayan secara automatik mengenali alamat luaran pelanggan apabila data yang disahkan dengan betul diterima daripada mereka.
  • Pelayan boleh menukar alamat IP awam tanpa mengganggu kerjanya. Pada masa yang sama, ia akan menghantar makluman kepada pelanggan yang disambungkan dan mereka akan mengemas kini konfigurasi mereka dengan cepat.
  • Konsep penghalaan digunakan Penghalaan Cryptokey. WireGuard menerima dan menghantar paket berdasarkan kunci awam rakan sebaya. Apabila pelayan menyahsulit paket yang disahkan dengan betul, medan srcnya diperiksa. Jika ia sepadan dengan konfigurasi allowed-ips rakan sebaya yang disahkan, paket diterima oleh antara muka WireGuard. Apabila menghantar paket keluar, prosedur yang sepadan berlaku: medan dst paket diambil dan, berdasarkannya, rakan sebaya yang sepadan dipilih, paket ditandatangani dengan kuncinya, disulitkan dengan kunci rakan sebaya dan dihantar ke titik akhir jauh .

Semua logik teras WireGuard menggunakan kurang daripada 4 ribu baris kod, manakala OpenVPN dan IPSec mempunyai ratusan ribu baris. Untuk menyokong algoritma kriptografi moden, adalah dicadangkan untuk memasukkan API kriptografi baharu dalam kernel Linux zink. Pada masa ini terdapat perbincangan mengenai sama ada ini idea yang baik.

Produktiviti

Kelebihan prestasi maksimum (berbanding OpenVPN dan IPSec) akan dapat dilihat pada sistem Linux, kerana WireGuard dilaksanakan sebagai modul kernel di sana. Di samping itu, macOS, Android, iOS, FreeBSD dan OpenBSD disokong, tetapi di dalamnya WireGuard berjalan dalam ruang pengguna dengan semua akibat prestasi berikutnya. Sokongan Windows dijangka akan ditambah dalam masa terdekat.

Keputusan penanda aras dengan laman rasmi:

Adakah WireGuard VPN yang hebat pada masa hadapan?

Pengalaman penggunaan saya

Saya bukan pakar VPN. Saya pernah menyediakan OpenVPN secara manual dan ia sangat membosankan, dan saya tidak mencuba IPSec. Terlalu banyak keputusan yang perlu dibuat, sangat mudah untuk menembak kaki sendiri. Oleh itu, saya sentiasa menggunakan skrip sedia untuk mengkonfigurasi pelayan.

Jadi, WireGuard, dari sudut pandangan saya, secara amnya sesuai untuk pengguna. Semua keputusan peringkat rendah dibuat dalam spesifikasi, jadi proses menyediakan infrastruktur VPN biasa hanya mengambil masa beberapa minit. Hampir mustahil untuk menipu dalam konfigurasi.

Proses pemasangan diterangkan secara terperinci di laman web rasmi, saya ingin secara berasingan ambil perhatian yang sangat baik Sokongan OpenWRT.

Kunci penyulitan dijana oleh utiliti wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

Seterusnya, anda perlu membuat konfigurasi pelayan /etc/wireguard/wg0.conf dengan kandungan berikut:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

dan naikkan terowong dengan skrip wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

Pada sistem dengan systemd anda boleh menggunakan ini sebaliknya sudo systemctl start [email protected].

Pada mesin pelanggan, buat konfigurasi /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Π’Π½Π΅ΡˆΠ½ΠΈΠΉ IP сСрвСра
PersistentKeepalive = 25 

Dan naikkan terowong dengan cara yang sama:

sudo wg-quick up /etc/wireguard/wg0.conf

Apa yang tinggal ialah mengkonfigurasi NAT pada pelayan supaya pelanggan boleh mengakses Internet, dan anda sudah selesai!

Kemudahan penggunaan dan kekompakan asas kod ini dicapai dengan menghapuskan fungsi pengedaran utama. Tiada sistem sijil yang kompleks dan semua kengerian korporat ini; kunci penyulitan pendek diedarkan sama seperti kunci SSH. Tetapi ini menimbulkan masalah: WireGuard tidak akan begitu mudah untuk dilaksanakan pada beberapa rangkaian sedia ada.

Antara keburukan, perlu diperhatikan bahawa WireGuard tidak akan berfungsi melalui proksi HTTP, kerana hanya protokol UDP tersedia sebagai pengangkutan. Persoalannya timbul: adakah mungkin untuk mengaburkan protokol? Sudah tentu, ini bukan tugas langsung VPN, tetapi untuk OpenVPN, sebagai contoh, terdapat cara untuk menyamar sebagai HTTPS, yang membantu penduduk negara totalitarian menggunakan Internet sepenuhnya.

Penemuan

Untuk meringkaskan, ini adalah projek yang sangat menarik dan menjanjikan, anda sudah boleh menggunakannya pada pelayan peribadi. Apa untungnya? Prestasi tinggi pada sistem Linux, kemudahan persediaan dan sokongan, asas kod yang padat dan boleh dibaca. Walau bagaimanapun, masih terlalu awal untuk tergesa-gesa untuk memindahkan infrastruktur yang kompleks kepada WireGuard; ia patut menunggu untuk dimasukkan ke dalam kernel Linux.

Untuk menjimatkan masa saya (dan anda), saya membangunkan Pemasang automatik WireGuard. Dengan bantuannya, anda boleh menyediakan VPN peribadi untuk diri sendiri dan rakan anda tanpa memahami apa-apa tentangnya.

Sumber: www.habr.com

Tambah komen