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
Persyaratan dan Konvensi Perangkat Lunak yang Digunakan
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 pubkeyserver_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 mdKesimpulan
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.
Tonton Netflix di Ubuntu 20.04 Focal Fossa Linux Desktop Kegagalan sementara menyelesaikan kesalahan pada Ubuntu 20.04 Focal Fossa LinuxUbuntu