GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara membuat VPN di Ubuntu 20.04 menggunakan Wireguard

Wireguard adalah VPN modern dan sangat mudah diatur yang tersedia di beberapa sistem operasi. Aplikasi ini tersedia di repositori resmi Ubuntu 20.04, jadi juga sangat mudah untuk diinstal. 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 mengonfigurasi, dalam beberapa langkah mudah, server VPN dan rekan klien di Ubuntu versi stabil terbaru.

Dalam tutorial ini Anda akan mempelajari:

  • Cara menginstal Wireguard di Ubuntu 20.04 Focal Fossa
  • Cara membuat pasangan kunci publik dan pribadi
  • Cara mengkonfigurasi server dan rekan klien
  • Cara mengalihkan semua lalu lintas 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 Fossa Fokus Ubuntu 20.04
Perangkat Lunak pelindung kawat
Lainnya Hak istimewa root
Konvensi # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa

Pemasangan

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

$ sudo apt install wireguard

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

Membuat kunci

Kami harus membuat kunci publik dan pribadi untuk setiap mesin yang ingin kami gunakan di VPN kami. Kunci pribadi harus dirahasiakan pada mesin, kunci publik digunakan untuk mengakses mesin dari rekan-rekan lainnya.

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

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

$ wg genkey> server_private_key

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

Peringatan:menulis ke file yang dapat diakses dunia. Pertimbangkan untuk menyetel umask ke 077 dan coba lagi.

Ini karena dengan pengguna default umask (002 ) file dibuat dengan mode 664 , begitu juga 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 mencari solusi yang terakhir.

Setelah kunci pribadi kami siap, kami dapat membuat publik yang didasarkan padanya. Untuk menyelesaikan tugas kami menggunakan pubkey sub-perintah wg . Sama seperti sebelumnya kita menggunakan pengalihan shell:pertama-tama untuk meneruskan konten server_private_key file ke stdin dari perintah, dan kemudian dan untuk mengarahkan kembali kunci yang dihasilkan ke server_public_key berkas:

$ wg pubkey  server_public_key

Untuk menghemat pengetikan, kami dapat membuat kedua kunci, hanya dengan satu perintah, yang melibatkan penggunaan shell | (pipa) dan operator tee perintah:

$ wg genkey | tee server_private_key | wg pubkey> server_public_key

Output dari perintah di sisi kiri operator pipa (| ) diteruskan ke input standar program di sisi kanannya. tee perintah, alih-alih izinkan kami untuk mengarahkan ulang output dari sebuah perintah ke file dan ke output standar ( selengkapnya tentang pengalihan shell di sini).

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

File konfigurasi server

Untuk mengkonfigurasi instalasi Wireguard kita, kita dapat membuat file konfigurasi bernama wg0.conf dengan isi sebagai berikut:

[Interface]PrivateKey =Alamat =10.0.0.1/24ListenPort =51820

Perhatikan bahwa nama file adalah arbitrer, tetapi harus didasarkan pada nama yang akan kita gunakan untuk antarmuka kita, wg0 pada kasus ini. Nama ini akan dirujuk saat memulai layanan, seperti yang akan kita lihat di bawah.

Dalam contoh kita. [interface] bagian dari file konfigurasi berisi bidang-bidang berikut:

  • Kunci Pribadi
  • Alamat
  • DengarkanPort

PrivateKey nilai bidang tidak lebih dari kunci pribadi server yang kami buat sebelumnya.

Di 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 adalah 10.0.0.1 , yang berada dalam rentang alamat yang tersedia mulai dari 10.0.0.1 ke 10.0.0.254 .

Terakhir, di ListenPort bidang, kami menentukan port apa yang akan didengarkan Wireguard untuk lalu lintas masuk. Aturan untuk mengizinkan lalu lintas tersebut juga harus ditambahkan ke firewall kami. Kami akan melakukannya di bagian berikutnya.

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

Sekarang kita dapat memulai wg-quick layanan yang menentukan nama antarmuka Wireguard setelah @ dalam nama satuan. Apa notasi ini? Ini adalah fitur systemd:dengan itu kita dapat menghasilkan beberapa file unit di dasar satu "templat", melewati nilai yang akan diganti dalam template, setelah @ simbol atas nama unit. Ini adalah isi dari [email protected] satuan:

[Unit]Description=WireGuard melalui wg-quick(8) untuk %IAfter=network-online.target nss-lookup.targetWants=network-online.target nss-lookup.targetDocumentation=man:wg-quick(8) Dokumentasi=man:wg(8)Documentation=https://www.wireguard.com/Documentation=https://www.wireguard.com/quickstart/Documentation=https://git.zx2c4.com/wireguard-tools/ about/src/man/wg-quick.8Documentation=https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8[Service]Type=oneshotRemainAfterExit=yesExecStart=/usr/bin/wg -cepat %iExecStop=/usr/bin/wg-cepat turun %iEnvironment=WG_ENDPOINT_RESOLUTION_RETRIES=infinity[Install]WantedBy=multi-pengguna.target

Nilai yang akan kita tentukan setelah @ dalam nama unit saat memulai atau menghentikannya, akan menggantikan %i di ExecStart dan ExecStop garis. Dalam hal ini kita akan menggunakan wg0 :

$ sudo systemctl aktifkan --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 wginterface:wg0 kunci publik:nNx3Zpcv9D2dtgHDsoYGBNr64zG5jTJ4Z4T2sE759V4=kunci pribadi:(tersembunyi) mendengarkan port:51820

Sekarang, mari kita lanjutkan dan konfigurasikan firewall dan penerusan paket.

Firewall dan penyiapan jaringan

Dalam tutorial ini saya akan mengasumsikan penggunaan ufw . Seperti yang kami katakan sebelumnya, kami harus menambahkan aturan untuk mengizinkan lalu lintas masuk melalui port yang kami tentukan di file konfigurasi, 51820 . Kami melakukannya dengan menjalankan perintah yang sangat sederhana:

$ sudo ufw allow 51820/udp

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

# Batalkan komentar pada baris berikutnya untuk mengaktifkan penerusan paket untuk IPv4net.ipv4.ip_forward=1

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

$ sudo sysctl -p

Pada langkah selanjutnya kita akan mengkonfigurasi klien.

Pembuatan kunci klien

Sekarang mari kita beralih ke sistem yang ingin kita gunakan sebagai klien. Kita perlu menginstal Wireguard di atasnya; setelah selesai, kita dapat membuat pasangan kunci seperti yang kita lakukan di server:

$ wg genkey | tee client_private_key | wg pubkey> client_public_key

Sama seperti yang kami lakukan di sisi server, kami membuat wg0.conf berkas konfigurasi. Kali ini dengan konten ini:

[Interface]PrivateKey =Alamat =10.0.0.2/24[Peer]PublicKey =EndPoint =
:51820AllowedIPs =0.0.0.0/0

Kita sudah melihat arti dari field yang terdapat di Interface bagian, ketika kami membuat konfigurasi server. Di sini kami hanya menyesuaikan nilai untuk klien kami (itu akan memiliki 10.0.0.2 alamat di VPN).

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

  • PublicKey
  • Titik Akhir
  • IP yang Diizinkan

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

Titik Akhir adalah alamat IP publik atau nama host rekan diikuti oleh titik dua dan nomor port yang didengarkan rekan (dalam kasus kami 51820 ).

Terakhir, nilai diteruskan ke AllowedIPs field, adalah daftar alamat IP dan subnet mask yang dipisahkan koma dengan notasi CIDR. Hanya lalu lintas yang diarahkan ke rekan yang berasal dari alamat yang ditentukan yang akan diizinkan. Dalam hal ini kami menggunakan 0.0.0.0/0 sebagai nilai:ini berfungsi sebagai nilai “tangkap semua”, sehingga semua lalu lintas akan dikirim ke rekan VPN (server).

Sama seperti yang kami lakukan di sisi server, kami menetapkan izin yang sesuai dan memindahkan kunci 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 di tempat, kita dapat memulai layanan:

$ sudo systemctl aktifkan --now wg-quick@wg0

Terakhir, [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 =IP yang Diizinkan =10.0.0.2/32

Pada titik ini kami memulai kembali layanan:

$ sudo systemctl restart wg-quick@wg0

Informasi tentang rekan terkait sekarang harus dilaporkan dalam output wg perintah:

$ sudo wginterface:wg0 kunci publik:nNx3Zpcv9D2dtgHDsoYGBNr64zG5jTJ4Z4T2sE759V4=kunci pribadi:(tersembunyi) port mendengarkan:51820peer:t5pKKg5/9fJKiU0lrNTahv6gvABcmC. 

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

$ ping -c 3 10.0.0.1PING 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 ms64 byte dari 10.0.0.1 :icmp_seq=2 ttl=64 waktu=38,0 ms64 byte dari 10.0.0.1:icmp_seq=3 ttl=64 waktu=3.02 ms--- 10.0.0.1 statistik ping ---3 paket terkirim, 3 diterima, 0% paket hilang, waktu 2003msrtt min/avg/max/mdev =2.819/14.613/37.999/16.536 md

Kesimpulan

Dalam tutorial ini kita melihat cara membuat VPN menggunakan Wireguard pada Ubuntu versi stabil terbaru:20.04 Focal Fossa. Perangkat lunak ini sangat mudah dipasang 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 mengonfigurasi server dan klien sehingga semua lalu lintas dialihkan ke VPN. Mengikuti instruksi yang diberikan, Anda akan memiliki pengaturan yang berfungsi. Untuk informasi lebih lanjut, silakan lihat halaman proyek.


Ubuntu
  1. Cara Mengatur VPN WireGuard di Ubuntu 20.04

  2. Cara Mengatur VPN WireGuard di Ubuntu (Panduan Langkah-demi-Langkah)

  3. Cara membuat array RAID menggunakan MDADM di Ubuntu

  1. Cara membuat tumpukan LAMP berbasis buruh pelabuhan menggunakan buruh pelabuhan di Ubuntu 20.04

  2. Cara Mengatur VPN WireGuard di Ubuntu 18.04

  3. Cara Mengatur VPN WireGuard di Ubuntu 20.04

  1. Cara membuat web-office menggunakan ONLYOFFICE Enterprise Edition di Ubuntu 14.04

  2. Cara mengatur Server VPN menggunakan Pritunl di Ubuntu 18.04 LTS

  3. Cara membuat VPC menggunakan Python Boto3 di Ubuntu