Apakah WireGuard VPN Luar Biasa untuk Masa Depan?


Waktunya telah tiba ketika VPN bukan lagi semacam alat eksotis untuk administrator sistem berjanggut. Pengguna memiliki tugas yang berbeda, tetapi kenyataannya adalah semua orang membutuhkan VPN.


Masalah dengan solusi VPN saat ini adalah bahwa mereka sulit untuk dikonfigurasikan dengan benar, mahal untuk dipelihara, dan mereka juga memiliki banyak kode warisan dengan kualitas yang meragukan.


Beberapa tahun yang lalu, spesialis keamanan informasi Kanada Jason A. Donenfeld memutuskan bahwa ia harus menanggungnya dan mulai mengerjakan WireGuard . Sekarang WireGuard sedang bersiap untuk dimasukkan dalam kernel Linux, bahkan menerima pujian dari Linus Torvalds dan di Senat AS .


Keuntungan yang dinyatakan dari WireGuard dibandingkan solusi VPN lainnya:


  • Mudah digunakan.
  • Menggunakan kriptografi modern: Kerangka protokol suara, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, dll.
  • Kode yang mudah dibaca, lebih mudah untuk menyelidiki kerentanannya.
  • Performa tinggi.
  • Spesifikasi yang jelas dan terperinci.

Apakah peluru perak ditemukan? Apakah sudah waktunya menggali di OpenVPN dan IPSec? Saya memutuskan untuk menangani ini, dan pada saat yang sama saya membuat skrip untuk secara otomatis menginstal server VPN pribadi .


Prinsip kerja


Prinsip-prinsip operasi dapat dijelaskan sebagai berikut:


  • Antarmuka WireGuard dibuat, itu diberikan kunci pribadi dan alamat IP. Pengaturan rekan lain dimuat: kunci publik, alamat IP, dll.
  • Semua paket IP yang tiba di antarmuka WireGuard dienkapsulasi dalam UDP dan dikirim dengan aman ke rekan-rekan lain.
  • Klien mengatur alamat IP publik dari server dalam pengaturan. Server secara otomatis mengenali alamat eksternal klien ketika data yang diautentikasi dengan benar berasal dari mereka.
  • Server dapat mengubah alamat IP publik tanpa mengganggu pekerjaan. Pada saat yang sama, ia akan mengirimkan peringatan ke klien yang terhubung dan mereka akan memperbarui konfigurasi mereka dengan cepat.
  • Konsep Cryptokey Routing digunakan . WireGuard menerima dan mengirim paket berdasarkan kunci publik dari peer. Ketika server mendekripsi paket yang diautentikasi dengan benar, bidang src-nya diperiksa. Jika cocok dengan allowed-ips terotentikasi, maka paket tersebut diterima oleh antarmuka WireGuard. Saat mengirim paket keluar, prosedur yang sesuai terjadi: bidang pertama dari paket diambil dan rekan yang sesuai dipilih berdasarkan itu, paket ditandatangani dengan kunci sendiri, dienkripsi dengan kunci rekan dan dikirim ke titik akhir jarak jauh.

Semua logika inti dari WireGuard membutuhkan kurang dari 4 ribu baris kode, sementara OpenVPN dan IPSec memiliki ratusan ribu baris. Untuk mendukung algoritma kriptografi modern, diusulkan untuk memasukkan API kriptografi Zinc baru di kernel Linux. Saat ini, ada diskusi tentang seberapa bagus ide ini.


Performa


Keuntungan kinerja maksimum (dibandingkan dengan OpenVPN dan IPSec) akan terlihat pada sistem Linux, karena di sana WireGuard diimplementasikan sebagai modul kernel. Selain itu, macOS, Android, iOS, FreeBSD dan OpenBSD didukung, tetapi WireGuard berjalan di userspace dengan semua implikasi kinerja yang dihasilkan. Windows berjanji untuk menambah dukungan dalam waktu dekat.


Hasil patok banding dari situs web resmi :



Pengalaman penggunaan saya


Saya bukan ahli pengaturan VPN. Setelah saya mengkonfigurasi OpenVPN dengan pegangan dan itu sangat suram, tetapi IPSec bahkan tidak mencoba. Terlalu banyak keputusan harus dibuat, sangat mudah untuk menembak diri sendiri. Oleh karena itu, saya selalu menggunakan skrip yang sudah jadi untuk mengkonfigurasi server.


Jadi, WireGuard, dari sudut pandang saya, umumnya ideal untuk pengguna. Semua keputusan tingkat rendah dibuat dalam spesifikasi, sehingga proses mempersiapkan infrastruktur VPN khas hanya membutuhkan beberapa menit. Hampir tidak mungkin untuk mengakumulasi dalam konfigurasi.


Proses instalasi dijelaskan secara rinci di situs web resmi, saya ingin menyebutkan dukungan yang sangat baik untuk 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 server config /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 sudo systemctl start wg-quick@wg0.service .


Pada 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 angkat terowongan dengan cara yang sama:


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

Tetap mengkonfigurasi NAT di server sehingga klien dapat mengakses Internet, dan Anda selesai!


Kemudahan penggunaan dan kekompakan basis kode ini dicapai karena penolakan fungsi distribusi utama. Tidak ada sistem sertifikat yang rumit dan semua horor perusahaan ini, kunci enkripsi pendek didistribusikan kira-kira seperti kunci SSH. Namun sehubungan dengan ini, muncul masalah: WireGuard tidak akan begitu mudah diimplementasikan di beberapa jaringan yang ada.


Dari kekurangannya, perlu dicatat bahwa WireGuard tidak akan bekerja melalui proxy HTTP, karena hanya ada protokol UDP sebagai transport. Pertanyaannya adalah, apakah mungkin untuk mengaburkan protokol? Tentu saja, ini bukan tugas VPN langsung, tetapi untuk OpenVPN, misalnya, ada cara untuk menyamar sebagai HTTPS, yang membantu penduduk negara totaliter untuk sepenuhnya menggunakan Internet.


Kesimpulan


Kesimpulannya, ini adalah proyek yang sangat menarik dan menjanjikan, Anda sekarang dapat menggunakannya di server pribadi. Apa untungnya? Kinerja 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, perlu menunggu untuk dimasukkan dalam kernel Linux.


Untuk menghemat waktu saya (dan Anda), saya mengembangkan installer WireGuard otomatis . Dengan itu, Anda dapat meningkatkan VPN pribadi untuk diri sendiri dan teman Anda tanpa memahami apa pun tentang hal itu.

Source: https://habr.com/ru/post/id432686/


All Articles