Cara membuat VPN di Ubuntu 20.04 Menggunakan Wireguard

Cara membuat VPN di Ubuntu 20.04 Menggunakan Wireguard

Wireguard adalah modern dan sangat mudah untuk mengatur VPN yang tersedia di beberapa sistem operasi. Aplikasi ini tersedia di Ubuntu 20.04 Repositori Resmi, jadi juga sangat mudah dipasang. Tidak seperti perangkat lunak lain seperti OpenVPN yang didasarkan pada penggunaan sertifikat SSL, Wireguard didasarkan pada penggunaan pasangan kunci. Dalam tutorial ini kita akan melihat cara mengkonfigurasi, dalam beberapa langkah mudah, server VPN dan peer klien pada versi stabil terbaru dari Ubuntu.

Dalam tutorial ini Anda akan belajar:

  • Cara menginstal wireguard di ubuntu 20.04 FOSSA FOCAL
  • Cara membuat pasangan kunci publik dan pribadi
  • Cara mengkonfigurasi server dan rekan klien
  • Cara mengarahkan semua lalu lintas yang masuk ke VPN
Wireguard VPN di Ubuntu 20.04

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Ubuntu 20.04 FOSSA FOCAL
Perangkat lunak Wireguard
Lainnya Hak istimewa root
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Instalasi

Wireguard secara resmi tersedia di repositori "Universe" Ubuntu 20.04, oleh karena itu kita dapat menginstalnya melalui tepat. Versi yang tersedia, pada saat penulisan adalah 1.0.20200319-1ubuntu1:

$ sudo apt menginstal wireguard 

Sistem akan meminta kami untuk mengonfirmasi kami ingin menginstal program dan ketergantungannya, dan akan menyelesaikan operasi dalam hitungan detik.

Menghasilkan kunci

Kita harus menghasilkan kunci publik dan pribadi untuk setiap mesin yang ingin kita gunakan di VPN kita. Kunci pribadi harus dirahasiakan di mesin, yang publik digunakan untuk mengakses mesin dari rekan -rekan lainnya.

Untuk menghasilkan kunci yang dapat kita gunakan wg kegunaan. Di dalam file konfigurasi Wireguard kita perlu merujuk kunci pribadi mesin, sedangkan yang publik akan digunakan pada rekan lain. Perhatikan bahwa kami akan merujuk kunci secara langsung, jadi secara teoritis kami tidak perlu menyimpannya ke file. Namun, kami akan melakukannya, hanya untuk kenyamanan.

Untuk menghasilkan kunci pribadi untuk server kami, kami harus menggunakan Jengey Sub -perintah wg. Perintah mengeluarkan tombol yang dibuat untuk stdout; Untuk menulis kunci ke file, kita dapat menggunakan kekuatan pengalihan shell:

$ WG GENEKY> server_private_key 

Perintah akan menghasilkan kunci dan menyimpannya ke server_private_key file, tetapi akan menaikkan peringatan berikut:

Peringatan: Menulis ke File yang Dapat Diakses Dunia. Pertimbangkan untuk mengatur Umask ke 077 dan mencoba lagi. 

Ini karena dengan pengguna default Umask (002) file dibuat dengan mode 664, Jadi dapat dibaca dunia, yang tidak disarankan. Untuk mengatasi masalah ini, kita dapat mengubah UMASK yang digunakan dalam sesi shell saat ini sebelum membuat file:

$ UMASK 077 

Atau ubah izin file menjadi 600 setelah penciptaan. Di sini kita akan pergi untuk solusi terakhir.

Setelah kunci pribadi kami siap, kami dapat menghasilkan publik salah satu yang didasarkan padanya. Untuk menyelesaikan tugas yang kami gunakan Pubkey Sub -perintah wg. Sama seperti sebelum kita menggunakan pengalihan shell: pertama untuk melewati konten server_private_key file ke Stdin dari perintah, dan kemudian dan untuk mengarahkan kunci yang dihasilkan ke server_public_key mengajukan:

$ wg pubkey server_public_key 

Untuk menghindarkan beberapa pengetikan kita dapat menghasilkan kedua kunci, dengan hanya satu perintah, yang melibatkan penggunaan shell | Operator (pipa) dan tee memerintah:

$ WG GENEKY | tee server_private_key | wg pubkey> server_public_key 

Output perintah di sisi kiri operator pipa (|) diteruskan ke input standar program di sisi kanannya. Itu tee Perintah, sebaliknya izinkan kami untuk mengarahkan ulang output perintah ke file dan ke output standar (lebih lanjut tentang pengalihan shell di sini).

Setelah kunci kami siap, kami dapat membuat file konfigurasi server.

File Konfigurasi Server

Untuk mengonfigurasi instalasi Wireguard kami, kami dapat membuat file konfigurasi yang dipanggil WG0.conf dengan konten berikut:

[Antarmuka] privateKey = alamat = 10.0.0.1/24 listenport = 51820 

Perhatikan bahwa nama file tersebut sewenang -wenang, tetapi harus didasarkan pada nama yang akan kami gunakan untuk antarmuka kami, WG0 pada kasus ini. Nama ini akan dirujuk saat memulai layanan, seperti yang akan kita lihat di bawah.

Dalam contoh kami. itu [Antarmuka] Bagian file konfigurasi berisi bidang -bidang berikut:

  • PrivateKey
  • Alamat
  • Listenport

Itu PrivateKey Nilai bidang tidak lebih dari kunci pribadi server yang kami hasilkan sebelumnya.

Dalam Alamat Bidang Kami menentukan alamat untuk ditetapkan ke antarmuka di VPN bersama dengan subnet mask menggunakan CIDR notasi. Dalam hal ini kami menggunakan 10.0.0.1/24, Jadi alamat "server" Wireguard kami di dalam VPN akan 10.0.0.1, yang ada di kisaran alamat yang tersedia dari 10.0.0.1 ke 10.0.0.254.

Akhirnya, di Listenport Lapangan, kami menentukan port apa yang akan didengarkan Wireguard untuk lalu lintas yang masuk. Peraturan untuk mengizinkan lalu lintas tersebut juga harus ditambahkan ke firewall kami. Kami akan melakukan ini di bagian selanjutnya.

Kami sekarang dapat mengubah izin file dan memindahkannya ke /etc/wireguard direktori:

$ chmod 600 server_public_key server_private_key wg0.conf $ sudo mv server_private_key server_public_key wg0.conf /etc /wireguard 

Kami sekarang dapat memulai WG-cepat Layanan Menentukan nama antarmuka Wireguard setelah @ di nama unit. Notasi apa ini? Ini adalah fitur SystemD: dengan itu kita dapat menghasilkan beberapa file unit di dasar yang "templat", memberikan nilai yang akan diganti dalam templat, setelah @ simbol atas nama unit. Ini adalah isi dari [email protected] satuan:

[Unit] Deskripsi = Wireguard via WG-cepat (8) untuk %i setelah = jaringan-online.Target NSS-tampilan.Target Wants = Network-online.Target NSS-tampilan.Dokumentasi target = manusia: wg-quick (8) dokumentasi = man: wg (8) dokumentasi = https: // www.Wireguard.com/documentation = https: // www.Wireguard.com/quickstart/documentation = https: // git.ZX2C4.com/wireguard-tools/tentang/src/man/wg-cepat.8 dokumentasi = https: // git.ZX2C4.com/wireguard-tools/tentang/src/man/wg.8 [Layanan] type = oneshot stillAfterExit = ya execStart =/usr/bin/wg-quick up %i execstop =/usr/bin/wg-quick down %i lingkungan = wg_endpoint_resolution_retries = infinity [install] wantedby = multi-pengguna.target 

Nilai yang akan kami tentukan setelah @ di nama unit saat memulai atau menghentikannya, akan menggantikan %Saya dalam EXECSTART Dan EXECSTOP baris. Dalam hal ini kami akan menggunakan WG0:

$ sudo Systemctl Enable--NOW WG-quick@WG0 

Dengan perintah di atas kami memulai layanan dan juga membuat sehingga secara otomatis dimulai saat boot. Untuk memverifikasi konfigurasi kami telah diterapkan, kami dapat menjalankan wg memerintah. Output yang dihasilkan harus menampilkan informasi tentang WG0 Antarmuka:

$ sudo antarmuka wg: WG0 Kunci publik: nnx3zpcv9d2dtghdsoygbnr64zg5jtj4z4t2se759v4 = Kunci pribadi: (tersembunyi) Port Mendengarkan: 51820 

Sekarang, mari kita lanjutkan dan mengkonfigurasi firewall dan penerusan paket kami.

Pengaturan Firewall dan Jaringan

Dalam tutorial ini saya akan menganggap penggunaannya UFW. Seperti yang kami katakan sebelumnya, kami harus menambahkan aturan untuk memungkinkan lalu lintas yang masuk melalui port yang kami tentukan dalam file konfigurasi, 51820. Kami melakukannya dengan menjalankan perintah yang sangat sederhana:

$ sudo ufw memungkinkan 51820/udp 

Kami juga perlu mengizinkan penerusan paket pada sistem kami. Untuk menyelesaikan tugas kami untuk menghapus komentar dari baris 28 dari /etc/sysctl.conf file, sehingga terlihat seperti ini:

# Uncomment Baris berikutnya untuk mengaktifkan penerusan paket untuk NET IPv4.IPv4.ip_forward = 1 

Untuk membuat perubahan efektif tanpa me -reboot sistem, kita perlu menjalankan perintah berikut:

$ sudo sysctl -p 

Pada langkah berikutnya kami akan mengkonfigurasi klien.

Generasi kunci klien

Sekarang mari kita lanjutkan sistem yang ingin kita gunakan sebagai klien. Kita perlu menginstal Wireguard di atasnya; Setelah selesai, kami dapat menghasilkan pasangan kunci seperti yang kami lakukan di server:

$ WG GENEKY | tee client_private_key | wg pubkey> client_public_key 

Sama seperti kami melakukan sisi server, kami membuat WG0.conf file konfigurasi. Kali ini dengan konten ini:

[Antarmuka] privateKey = alamat = 10.0.0.2/24 [Peer] publicKey = endpoint =: 51820 diizinkan = 0.0.0.0/0 

Kami sudah melihat arti dari ladang yang terkandung dalam Antarmuka bagian, saat kami menghasilkan konfigurasi server. Di sini kami hanya mengadaptasi nilai -nilai dengan klien kami (itu akan memiliki 10.0.0.2 Alamat di VPN).

Dalam konfigurasi ini, kami menggunakan bagian baru, [Peer]. Di dalamnya, kami dapat menentukan informasi relatif terhadap rekan, dalam hal ini yang kami gunakan sebagai "server". Bidang yang kami gunakan adalah:

  • PublicKey
  • Titik akhir
  • Diizinkan

Dalam PublicKey bidang, kami menentukan publik kunci rekan, jadi, dalam hal ini, kunci publik yang kami hasilkan di server.

Itu Titik akhir adalah alamat IP publik atau nama host peer diikuti oleh usus besar dan nomor port yang didengarkan rekan (dalam kasus kami 51820).

Akhirnya, nilai yang diteruskan ke Diizinkan Bidang, adalah daftar alamat IP yang dipisahkan secara koma dan subnet mask dengan notasi CIDR. Hanya lalu lintas yang diarahkan ke rekan yang berasal dari alamat yang ditentukan akan diizinkan. Dalam hal ini kami menggunakan 0.0.0.0/0 Sebagai nilai: Ini berfungsi sebagai nilai "tangkapan-semua", jadi semua lalu lintas akan dikirim ke rekan VPN (server).

Sama seperti kami melakukan sisi server, kami menetapkan izin yang sesuai dan memindahkan tombol dan file konfigurasi ke /etc/wireguard direktori:

$ chmod 600 client_public_key client_private_key wg0.conf $ sudo mv client_public_key client_private_key wg0.conf /etc /wireguard 

Dengan file konfigurasi yang ada, kami dapat memulai layanan:

$ sudo Systemctl Enable--NOW WG-quick@WG0 

Akhirnya, [Peer] bagian relatif terhadap klien kami, harus ditambahkan ke file konfigurasi yang sebelumnya kami buat di server. Kami menambahkan konten berikut untuk itu:

[Peer] publicKey = diizinkan = 10.0.0.2/32 

Pada titik ini kami memulai kembali layanan:

$ sudo systemctl restart wg-quick@wg0 

Informasi tentang rekan yang terkait sekarang harus dilaporkan dalam output wg memerintah:

$ sudo antarmuka WG: WG0 Kunci Publik: NNX3ZPCV9D2DTGHDSOYGBNR64ZG5JTJ4Z4T2SE759V4 = Kunci Pribadi: (Tersembunyi) Port Mendengarkan: 51820 Peer: T5PKKG5/9FJKIU0LRNTHNV620.0.0.2/32 

Pada titik ini, dari sistem "klien", kita harus dapat melakukan ping server di 10.0.0.1 alamat:

$ ping -c 3 10.0.0.1 ping 10.0.0.1 (10.0.0.1) 56 (84) byte data. 64 byte dari 10.0.0.1: icmp_seq = 1 ttl = 64 waktu = 2.82 ms 64 byte dari 10.0.0.1: icmp_seq = 2 ttl = 64 waktu = 38.0 ms 64 byte dari 10.0.0.1: icmp_seq = 3 ttl = 64 waktu = 3.02 ms --- 10.0.0.1 Ping Statistics --- 3 Paket Ditransmisikan, 3 Diterima, Kehilangan Paket 0%, Waktu 2003ms RTT Min/AVG/MAX/MDEV = 2.819/14.613/37.999/16.536 ms 

Kesimpulan

Dalam tutorial ini kami melihat cara membuat VPN menggunakan Wireguard pada versi stabil terbaru Ubuntu: 20.04 FOSSA FOCAL. Perangkat lunak ini sangat mudah diinstal dan dikonfigurasi, terutama jika dibandingkan dengan solusi lain, seperti misalnya OpenVPN.

Kami melihat cara menghasilkan kunci publik dan pribadi yang digunakan untuk pengaturan kami, dan cara mengkonfigurasi server dan klien sehingga semua lalu lintas diarahkan ke VPN. Mengikuti instruksi yang diberikan, Anda akan memiliki pengaturan yang berfungsi. Untuk informasi lebih lanjut, silakan lihat halaman proyek.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Cara Mengatur Server OpenVPN di Ubuntu 20.04
  • Dasar Ubuntu 22.04 Pengaturan Koneksi Klien/Server OpenVPN
  • Ubuntu 20.04 trik dan hal -hal yang mungkin tidak Anda ketahui
  • Ubuntu 20.04 Panduan
  • Hal -hal yang harus diinstal pada Ubuntu 22.04
  • Daftar dan Instalasi Klien FTP di Ubuntu 20.04 Linux…
  • Ubuntu 20.04: WordPress dengan instalasi nginx
  • 8 Lingkungan Desktop Ubuntu Terbaik (20.04 FOSSA FOCAL…