Cara Mengatur Server dan Klien VPN WireGuard di Ubuntu 20.04

Siapkan VPN yang dihosting sendiri menggunakan Wireguard

SEBUAH VPN (Jaringan Pribadi Virtual) memungkinkan pengguna untuk terhubung ke jaringan pribadi dari jarak jauh seolah-olah komputer pengguna terhubung langsung 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 lain dari VPN 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 Penjaga kawat. 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 penjaga kawat 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 kami melakukan semua tugas konfigurasi sebagai pengguna super. Alasannya adalah akses ke direktori /etc/wireguard dicegah untuk pengguna normal, dan akses direktori tidak dapat diperoleh hanya dengan hak sudo untuk pengguna normal.

Selanjutnya, kami 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 di folder ini dengan izin 777, maka secara otomatis ditutupi 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.

Di baris berikutnya, kami menghasilkan pasangan kunci publik/pribadi untuk servernya. Mereka disimpan dalam file kunci_privat dan kunci_publik. 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 buat file konfigurasi untuk Server Wireguard. Anda dapat memilih nama apa saja untuk file tersebut. Kami 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 = PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTINGAN -o -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 -j MASQUERADE 

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

Kita harus mengonfigurasi Wireguard pada subnet (virtual) yang berbeda daripada 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

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, bisa jadi wlan0 atau wlp2s0 jika pengguna terhubung ke jaringan WiFi menggunakan kartu nirkabel.

Ganti di PostUp dan PostDown dengan antarmuka Anda; dalam contoh ini adalah eth0.PostUp dan PostDown direktif digunakan untuk menentukan perintah mana yang harus dijalankan ketika server mulai dan berhenti masing-masing. Dalam contoh kami, kami menggunakan iptables perintah untuk mengatur 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 Memasuki untuk menyimpan dan keluar.

Jika Anda menggunakan ufw firewall 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 wg-quick@wg0

Perhatikan bahwa di sini wg0 adalah nama file konfigurasi.

Untuk memulai layanan, jalankan:

layanan wg-quick@wg0 mulai

Memeriksa bahwa layanan telah berhasil dimulai:

status layanan wg-quick@wg0

Verifikasi bahwa antarmuka kita buat di file konfigurasi sudah 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. Kami menghasilkan kunci untuk klien, dan kemudian membuat file konfigurasi.

Kunci Keamanan

Untuk menghasilkan kunci publik/pribadi pasangkan 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 kucing memerintah.

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 apapun yang Anda inginkan. Kami akan membuatnya dengan nama wg0-klien untuk contoh ini.

vim wg0-client.conf

Tambahkan konfigurasi berikut.

[Interface] # IP Address dan Private Key dari Client Address = 10.20.43.2/24 PrivateKey = [Peer] # Public key, IP Address dan Port Server PublicKey = Endpoint = :51190 AllowedIPs = 0.0.0.0/0, : :/0

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

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

Di bawah 'Peer', kami menambahkan informasi tentang server Wireguard VPN kami ingin terhubung.

Masukkan kunci publik server. Masukkan Alamat IP server, yang sebelumnya kami catat, dan port dalam format yang diberikan terhadap Titik akhir. Ini adalah port yang kami 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 Memasuki untuk menyimpan dan keluar.

Aktifkan layanan klien untuk dijalankan dengan setiap boot, dan memulainya.

systemctl aktifkan wg-quick@wg-client service wg-quick@wg-client start

Memeriksa jika layanan telah dimulai.

status layanan wg-quick@wg-client

Menambahkan Peer ke Server

Sekarang kami memiliki server VPN dan klien yang aktif 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 wg-quick@wg0 stop

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

vim /etc/wireguard/wg0.conf

Menambahkan baris berikut ke file.

[Peer] PublicKey = AllowedIPs = 10.20.43.2/32

Sekarang, mulai layanan VPN lagi.

layanan wg-quick@wg0 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

Berikutnya, 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 

Sekarang, kami 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 di 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

curl //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 melihat situs resminya.