Apakah WireGuard adalah VPN hebat di masa depan?

Apakah WireGuard adalah VPN hebat di masa depan?

Waktunya telah tiba ketika VPN bukan lagi alat eksotik bagi administrator sistem berjanggut. Pengguna mempunyai tugas yang berbeda-beda, namun faktanya setiap orang membutuhkan VPN.

Masalah dengan solusi VPN saat ini adalah sulitnya dikonfigurasi dengan benar, mahal pemeliharaannya, dan penuh dengan kode lama dengan kualitas yang dipertanyakan.

Beberapa tahun yang lalu, spesialis keamanan informasi Kanada Jason A. Donenfeld memutuskan bahwa dia sudah muak dan mulai mengerjakannya WireGuard. WireGuard kini sedang dipersiapkan untuk dimasukkan ke dalam kernel Linux dan bahkan mendapat pujian dari Linus Torvalds ΠΈ Π² Senat AS.

Keunggulan WireGuard yang diklaim dibandingkan solusi VPN lainnya:

  • Mudah digunakan.
  • Menggunakan kriptografi modern: Kerangka protokol kebisingan, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, dll.
  • Kode yang ringkas dan mudah dibaca, lebih mudah diselidiki untuk mengetahui kerentanannya.
  • Performa tinggi.
  • Jelas dan rumit spesifikasi.

Apakah solusi jitu telah ditemukan? Apakah sudah waktunya untuk mengubur OpenVPN dan IPSec? Saya memutuskan untuk menangani hal ini, dan pada saat yang sama saya melakukannya skrip untuk menginstal server VPN pribadi secara otomatis.

Prinsip kerja

Prinsip pengoperasiannya dapat digambarkan seperti ini:

  • Antarmuka WireGuard dibuat dan kunci pribadi serta alamat IP ditetapkan padanya. Pengaturan rekan-rekan lain dimuat: kunci publik mereka, alamat IP, dll.
  • Semua paket IP yang tiba di antarmuka WireGuard dienkapsulasi dalam UDP dan terkirim dengan selamat rekan-rekan lainnya.
  • Klien menentukan alamat IP publik server dalam pengaturan. Server secara otomatis mengenali alamat eksternal klien ketika data yang diautentikasi dengan benar diterima dari mereka.
  • Server dapat mengubah alamat IP publik tanpa mengganggu pekerjaannya. Pada saat yang sama, ia akan mengirimkan peringatan ke klien yang terhubung dan mereka akan memperbarui konfigurasinya dengan cepat.
  • Konsep routing digunakan Perutean Kunci Kripto. WireGuard menerima dan mengirimkan paket berdasarkan kunci publik rekannya. Ketika server mendekripsi paket yang diautentikasi dengan benar, kolom src-nya akan dicentang. Jika cocok dengan konfigurasi allowed-ips rekan yang diautentikasi, paket diterima oleh antarmuka WireGuard. Saat mengirim paket keluar, prosedur yang sesuai terjadi: bidang dst dari paket diambil dan, berdasarkan itu, rekan yang sesuai dipilih, paket ditandatangani dengan kuncinya, dienkripsi dengan kunci rekan dan dikirim ke titik akhir jarak jauh .

Seluruh logika inti WireGuard membutuhkan kurang dari 4 ribu baris kode, sedangkan OpenVPN dan IPSec memiliki ratusan ribu baris. Untuk mendukung algoritma kriptografi modern, diusulkan untuk memasukkan API kriptografi baru di kernel Linux seng. Saat ini sedang terjadi diskusi tentang apakah ini ide yang bagus.

Performa

Keunggulan performa maksimal (dibandingkan OpenVPN dan IPSec) akan terlihat pada sistem Linux, karena WireGuard diimplementasikan sebagai modul kernel di sana. Selain itu, macOS, Android, iOS, FreeBSD, dan OpenBSD juga didukung, tetapi di dalamnya WireGuard berjalan di ruang pengguna dengan semua konsekuensi kinerja yang diakibatkannya. Dukungan Windows diperkirakan akan ditambahkan dalam waktu dekat.

Hasil benchmark dengan situs resmi:

Apakah WireGuard adalah VPN hebat di masa depan?

Pengalaman penggunaan saya

Saya bukan ahli VPN. Saya pernah mengatur OpenVPN secara manual dan itu sangat membosankan, dan saya bahkan tidak mencoba IPSec. Ada terlalu banyak keputusan yang harus diambil, sangat mudah untuk menyalahkan diri sendiri. Oleh karena itu, saya selalu menggunakan skrip yang sudah jadi untuk mengkonfigurasi server.

Jadi, WireGuard, dari sudut pandang saya, secara umum ideal untuk pengguna. Semua keputusan tingkat rendah dibuat dalam spesifikasi, sehingga proses penyiapan infrastruktur VPN pada umumnya hanya membutuhkan waktu beberapa menit. Hampir tidak mungkin untuk melakukan kecurangan dalam konfigurasi.

Proses instalasi dijelaskan secara rinci di situs resminya, saya ingin mencatat secara terpisah yang luar biasa dukungan OpenWRT.

Kunci enkripsi dihasilkan oleh utilitas wg:

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

Selanjutnya, Anda perlu membuat konfigurasi server /etc/wireguard/wg0.conf dengan konten berikut:

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

dan naikkan terowongan dengan skrip wg-quick:

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

Pada sistem dengan systemd Anda dapat menggunakan ini sebagai gantinya sudo systemctl start [email protected].

Di mesin klien, 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 terowongan dengan cara yang sama:

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

Yang tersisa hanyalah mengkonfigurasi NAT di server sehingga klien dapat mengakses Internet, dan selesai!

Kemudahan penggunaan dan kekompakan basis kode dicapai dengan menghilangkan fungsionalitas distribusi utama. Tidak ada sistem sertifikat yang rumit dan semua kengerian perusahaan ini; kunci enkripsi pendek didistribusikan seperti kunci SSH. Namun hal ini menimbulkan masalah: WireGuard tidak akan mudah diterapkan pada beberapa jaringan yang ada.

Di antara kekurangannya, perlu diperhatikan bahwa WireGuard tidak akan berfungsi melalui proxy HTTP, karena hanya protokol UDP yang tersedia sebagai transport. Timbul pertanyaan: apakah mungkin untuk mengaburkan protokol? Tentu saja, ini bukan tugas langsung VPN, tetapi untuk OpenVPN, misalnya, ada cara untuk menyamar sebagai HTTPS, yang membantu penduduk negara totaliter menggunakan Internet sepenuhnya.

Temuan

Singkatnya, ini adalah proyek yang sangat menarik dan menjanjikan, Anda sudah dapat menggunakannya di server pribadi. Apa keuntungannya? Performa tinggi pada sistem Linux, kemudahan pengaturan dan dukungan, basis kode yang ringkas dan mudah dibaca. Namun, masih terlalu dini untuk terburu-buru mentransfer infrastruktur kompleks ke WireGuard, ada baiknya menunggu penyertaannya dalam kernel Linux.

Untuk menghemat waktu saya (dan Anda), saya mengembangkan Pemasang otomatis WireGuard. Dengan bantuannya, Anda dapat mengatur VPN pribadi untuk diri sendiri dan teman Anda tanpa memahami apa pun tentangnya.

Sumber: www.habr.com

Tambah komentar