Cara Mengatur Server dan Klien VPN WireGuard di Ubuntu 20.04

Siapkan VPN yang dihosting sendiri menggunakan Wireguard

Sebuah VPN (Virtual Private Network) memungkinkan pengguna untuk terhubung ke jaringan pribadi jarak jauh seolah-olah komputer pengguna langsung terhubung ke jaringan pribadi. Teknologi ini awalnya dikembangkan untuk memungkinkan akses jarak jauh ke jaringan pribadi internal perusahaan, untuk karyawan yang tidak benar-benar hadir di lokasi jaringan internal.

Server VPN disebarkan di lokasi jaringan internal. Server ini berada di jaringan publik dan dapat diakses menggunakan klien VPN oleh karyawan. Otentikasi diperlukan untuk terhubung ke Server VPN. Komunikasi antara VPN Server dan VPN Client diamankan menggunakan protokol tunneling. Perhatikan bahwa komunikasi ini mungkin atau mungkin tidak dienkripsi, tetapi biasanya di sebagian besar protokol VPN, komunikasi ini dienkripsi.

Penggunaan VPN lainnya adalah untuk mendapatkan anonimitas saat mengakses Internet atau untuk menghindari pembatasan geografis yang diberlakukan saat mengakses beberapa situs web. Dalam kasus seperti itu, jaringan yang ingin disambungkan pengguna bukanlah jaringan pribadi, melainkan Internet.

Banyak protokol VPN telah dikembangkan selama bertahun-tahun. Protokol ini menggunakan protokol tunneling dan algoritma enkripsi yang berbeda untuk komunikasi antara server dan klien.

Salah satu protokol tersebut, yang mulai digunakan secara luas baru-baru ini, adalah Wireguard. Wireguard lebih ringan, lebih sederhana, dan lebih berperforma daripada protokol VPN yang digunakan secara tradisional seperti OpenVPN, IPSec. Ini sudah diimplementasikan untuk Windows, Mac OS dan sejumlah besar distribusi Linux. Di Linux, ini diimplementasikan sebagai modul kernel. Ini tersedia di repositori resmi Ubuntu 20.04.

Pada artikel ini, kita akan melihat cara mengatur Server dan Klien VPN Wireguard di Ubuntu 20.04.

Instalasi

Untuk artikel ini, saya menyiapkan Server Wireguard di Ubuntu 20.04 Linode dan Wireguard Client di mesin lokal saya dengan Ubuntu 20.04.

Paket wireguard menginstal Wireguard Server dan Client. Jalankan perintah berikut pada mesin Server dan mesin Klien.

sudo apt install wireguard

Konfigurasi Server

Kunci Keamanan

Kita perlu membuat satu set pasangan kunci publik/pribadi untuk mengotentikasi dan mengamankan koneksi Wireguard. Ini dapat dilakukan dengan menggunakan perintah berikut:

sudo su cd /etc/wireguard umask 077 wg genkey | tee private_key | wg pubkey > public_key

Perhatikan bahwa kita melakukan semua tugas konfigurasi sebagai pengguna super. Alasannya adalah bahwa akses ke direktori /etc/wireguard dicegah untuk pengguna normal, dan akses direktori tidak dapat diperoleh hanya dengan hak sudo untuk pengguna normal.

Selanjutnya, kita mengatur topeng pembuatan file ke 077. Ini berarti bahwa setiap kali file baru dibuat di folder ini oleh proses apa pun, izinnya akan secara otomatis ditutup dengan 077. Mis. jika file dibuat dalam folder ini dengan izin 777, maka secara otomatis ditutup dan izin secara efektif menjadi 700. Hal ini dilakukan agar hanya pemilik file yang memiliki semua izin pada file tersebut, dan semua orang tidak memiliki izin.

Pada baris berikutnya, kita membuat pasangan kunci publik/pribadi untuk server. Mereka disimpan dalam file private_key dan public_key. Untuk melihat kunci, jalankan:

kucing private_key kucing public_key

Salin kunci pribadi, kita membutuhkannya di langkah berikutnya.

Catatan: Jangan pernah membagikan kunci pribadi Anda secara publik!

File Konfigurasi

Mari kita buat file konfigurasi untuk Server Wireguard. Anda dapat memilih nama apa saja untuk file tersebut. Kita akan membuat file wg0.conf dalam contoh ini.

vim wg0.conf

Tambahkan yang berikut ini ke file.

[Antarmuka] Alamat = 10.20.43.1/24 SaveConfig = true ListenPort = 51190 PrivateKey = <Server Private Key yang dibuat sebelumnya> PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o <INTERFACE_NAME> -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D MAJU -i wg0 -j TERIMA; ip6tables -t nat -D POSTROUTING -o <INTERFACE_NAME> -j MASQUERADE

Paste Private Key yang tadi kita copy ke baris 5 pada kode di atas.

Kita harus mengkonfigurasi Wireguard pada subnet (virtual) yang berbeda dari Alamat IP server. Di sini, saya telah menggunakan 10.20.43.1 untuk server dan akan menggunakan 10.20.43.2 untuk klien. Setiap subnet dapat digunakan di sini. Untuk mendapatkan Alamat IP server dan antarmuka, jalankan:

ifconfig

Bagian yang disorot adalah Alamat IP

Perhatikan Alamat IP server. Ini diperlukan selama konfigurasi klien.

Antarmuka yang digunakan oleh server, seperti yang terlihat pada gambar di atas, adalah eth0. Nama antarmuka dapat berbeda berdasarkan jaringan pengguna, dapat berupa wlan0 atau wlp2s0 jika pengguna terhubung ke jaringan WiFi menggunakan kartu nirkabel.

Ganti <INTERFACE_NAME> di PostUp dan PostDown dengan antarmuka Anda; dalam contoh ini adalah eth0. Direktif PostUp dan PostDown digunakan untuk menentukan perintah mana yang harus dijalankan ketika server mulai dan berhenti secara berurutan. Dalam contoh kita, kita menggunakan perintah iptables untuk menetapkan aturan IP sedemikian rupa sehingga Alamat IP server dibagikan oleh klien. Aturan akan turun setelah server berhenti.

Simpan dan keluar dari file. Saat menggunakan vim, tekan Esc, lalu ketik :wq dan tekan Enter untuk menyimpan dan keluar.

Jika Anda menggunakan firewall ufw di server, kita perlu mengizinkan koneksi UDP ke port untuk server VPN, 51190.

ufw izinkan 51190/udp

Memulai Layanan

Sekarang setelah konfigurasi selesai, kita dapat memulai layanan Wireguard VPN.

Untuk mengaktifkan layanan untuk memulai saat boot, jalankan:

systemctl aktifkan [ dilindungi email ]

Perhatikan bahwa di sini wg0 adalah nama file konfigurasi.

Untuk memulai layanan, jalankan:

layanan [ dilindungi email ] mulai

Verifikasi bahwa layanan telah berhasil dimulai:

status layanan [ dilindungi email ]

Verifikasi bahwa antarmuka yang kita buat di file konfigurasi telah dimulai, menggunakan perintah IP.

ip a show wg0

Server VPN Wireguard sekarang telah disiapkan dan dijalankan. Mari konfigurasikan klien sekarang.

Konfigurasi Klien

Konfigurasi Klien untuk Wireguard kurang lebih sama dengan konfigurasi server. Kita menghasilkan kunci untuk klien, dan kemudian membuat file konfigurasi.

Kunci Keamanan

Untuk menghasilkan pasangan kunci publik/pribadi untuk klien, jalankan:

sudo su cd /etc/wireguard umask 077 wg genkey | tee client_private_key | wg pubkey > client_public_key

Kunci publik dan pribadi untuk klien sekarang dihasilkan masing-masing dalam file client_private_key dan client_public_key.

Periksa apakah mereka telah dibuat, menggunakan perintah cat.

cat client_private_key cat client_public_key

Salin kunci pribadi yang ditampilkan karena kita perlu menambahkannya ke file konfigurasi untuk klien.

File Konfigurasi

Buat file konfigurasi dengan nama apa pun yang Anda inginkan. Kita akan membuatnya dengan nama wg0-client untuk contoh ini.

vim wg0-client.conf

Tambahkan konfigurasi berikut.

[Interface] # Alamat IP dan Kunci Pribadi Alamat Klien = 10.20.43.2/24 PrivateKey = <Kunci Pribadi Klien> [Peer] # Kunci Publik, Alamat IP, dan Port Server PublicKey = <Kunci Publik Server, dihasilkan pada langkah sebelumnya> Endpoint = <Alamat IP Server>:51190 AllowedIPs = 0.0.0.0/0, ::/0

Masukkan alamat subnet untuk klien. Seperti yang dijelaskan sebelumnya, kita menggunakan 10.20.43.2 untuk klien dalam contoh ini.

Tambahkan kunci pribadi klien yang dihasilkan pada langkah sebelumnya ke baris 4 dalam kode konfigurasi di atas.

Di bawah ‘Peer’, kita menambahkan informasi tentang server Wireguard VPN yang ingin kita sambungkan.

Masukkan kunci publik server. Masukkan Alamat IP server, yang sebelumnya kita catat, dan port dalam format yang diberikan terhadap Endpoint. Ini adalah port yang kita tentukan di file konfigurasi server dan di mana layanan VPN di server dimulai.

IP yang diizinkan harus dimasukkan seperti yang diberikan (0.0.0.0/0) sehingga setiap permintaan pada IP publik dinamis yang digunakan oleh klien akan selalu diteruskan ke server VPN.

Simpan dan keluar dari file. Saat menggunakan vim, tekan Esc, lalu ketik :wq dan tekan Enter untuk menyimpan dan keluar.

Aktifkan layanan klien untuk berjalan dengan setiap boot, dan mulai.

systemctl memungkinkan [email protected] layanan [email protected] start

Verifikasi apakah layanan telah dimulai.

status layanan [ dilindungi email ]

Menambahkan Peer ke Server

Sekarang kita memiliki server dan klien VPN dan berjalan. Namun, terowongan aman antara keduanya tidak dibuat kecuali kita membuat koneksi peer to peer antara server dan klien.

Kembali ke server. Pertama, hentikan layanan VPN.

layanan [ dilindungi email ] berhenti

Selanjutnya, buka file konfigurasi untuk menambahkan konfigurasi untuk rekan (klien).

vim /etc/wireguard/wg0.conf

Tambahkan baris berikut ke file.

[Peer] PublicKey = <Kunci Publik Klien> AllowedIPs = 10.20.43.2/32

Sekarang, mulai layanan VPN lagi.

layanan [ dilindungi email ] mulai

Itu dia! Ini semua konfigurasi yang diperlukan untuk klien Wireguard VPN dan pengaturan server. Sekarang mari kita uji VPN kita.

Menguji VPN

Pertama, mari kita lakukan ping sederhana dari klien ke server, untuk memastikan komunikasi tunnel VPN berfungsi. Jalankan yang berikut ini di klien :

ping 10.20.43.1

Selanjutnya, buka browser web dan buka situs web apa pun untuk memeriksa apakah Anda dapat terhubung ke Internet dari mesin klien. Anda juga dapat memeriksa konektivitas internet Anda dari baris perintah menggunakan wget.

wget <some_sample_website>

Sekarang, kita telah memeriksa konektivitas terowongan dan konektivitas Internet. Jika keduanya berfungsi, sekarang kita perlu memastikan bahwa semua lalu lintas internet yang masuk ke klien melewati server.

Untuk ini, kita hanya perlu memeriksa Alamat IP klien seperti yang terlihat oleh Internet. Salah satu cara untuk melakukannya adalah pergi ke whatsmyip.org. Atau dari baris perintah, kita dapat menanyakan layanan serupa lainnya yang disebut info IP, menggunakan Curl.

Jalankan yang berikut ini di mesin klien

ikal https://ipinfo.io/ip

Ya. Ini adalah Alamat IP publik Linode tempat server VPN di-host. Ini adalah bagaimana anonimitas dicapai dengan menggunakan VPN, karena di seluruh Internet sekarang IP server VPN terlihat dan bukan dari komputer Anda.

Kesimpulan

Kemudahan pengaturan adalah salah satu keuntungan terpenting Wireguard dibandingkan perangkat lunak VPN tradisional seperti OpenVPN, yang membutuhkan tingkat jaringan dan pengetahuan perutean yang lebih tinggi untuk disiapkan. Namun, ada kekurangan dokumentasi resmi terperinci untuk Wireguard yang dapat menyebabkan masalah jika pengaturan Wireguard Anda menimbulkan kesalahan atau tidak berfungsi seperti yang diharapkan.

Namun demikian, Wireguard adalah pilihan yang sangat baik jika Anda menginginkan VPN yang dihosting sendiri untuk komunikasi yang aman melalui Internet. Untuk mempelajari lebih lanjut tentang Wireguard dan protokol serta teknologi yang digunakannya, Anda dapat mengunjungi situs resminya.

Related Posts