Cara Menyediakan Pelayan dan Pelanggan VPN WireGuard pada Ubuntu 20.04

Sediakan VPN yang dihoskan sendiri menggunakan Wireguard

A VPN (Rangkaian Peribadi Maya) membolehkan pengguna menyambung ke rangkaian persendirian dari jauh seolah-olah komputer pengguna disambungkan terus ke rangkaian persendirian. Teknologi ini pada mulanya dibangunkan untuk membolehkan akses jauh ke rangkaian peribadi dalaman syarikat, untuk pekerja yang sebenarnya tidak hadir di lokasi rangkaian dalaman.

Pelayan VPN digunakan di lokasi rangkaian dalaman. Pelayan ini berada di rangkaian awam dan boleh diakses menggunakan klien VPN oleh pekerja. Pengesahan diperlukan untuk menyambung ke Pelayan VPN. Komunikasi antara Pelayan VPN dan Pelanggan VPN dijamin menggunakan protokol terowong. Ambil perhatian bahawa komunikasi ini mungkin disulitkan atau tidak, tetapi biasanya dalam kebanyakan protokol VPN ia disulitkan.

Satu lagi kegunaan VPN ialah untuk tidak mahu dikenali apabila mengakses Internet atau untuk memintas sekatan geografi yang dikenakan semasa mengakses beberapa tapak web. Dalam kes sedemikian, rangkaian yang ingin disambungkan oleh pengguna bukanlah rangkaian peribadi, tetapi sebaliknya, ia adalah Internet.

Banyak protokol VPN telah dibangunkan selama ini. Protokol ini menggunakan protokol terowong yang berbeza dan algoritma penyulitan untuk komunikasi antara pelayan dan klien.

Satu protokol sedemikian, yang semakin digunakan secara meluas baru-baru ini, ialah Pengawal wayar. Wireguard lebih ringan, ringkas dan lebih berprestasi berbanding protokol VPN yang digunakan secara tradisional seperti OpenVPN, IPSec. Ia telah pun dilaksanakan untuk Windows, Mac OS dan sejumlah besar pengedaran Linux. Di Linux, ia dilaksanakan sebagai modul kernel. Ia boleh didapati dalam repositori rasmi Ubuntu 20.04.

Dalam artikel ini, kita akan melihat cara menyediakan Pelayan dan Pelanggan VPN Wireguard dalam Ubuntu 20.04.

Pemasangan

Untuk artikel ini, saya menyediakan Pelayan Wireguard pada Ubuntu 20.04 Linode dan Wireguard Client pada mesin tempatan saya dengan Ubuntu 20.04.

Pakej itu pengawal wayar memasang kedua-dua Pelayan Wireguard dan Pelanggan. Jalankan arahan berikut pada kedua-dua mesin Pelayan dan mesin Pelanggan.

sudo apt install wireguard

Konfigurasi Pelayan

Kunci Keselamatan

Kita perlu menjana satu set pasangan kunci awam/swasta untuk mengesahkan dan menjamin sambungan Wireguard. Ini boleh dilakukan menggunakan arahan berikut:

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

Ambil perhatian bahawa kami sedang melakukan semua tugas konfigurasi sebagai pengguna super. Sebabnya ialah akses kepada direktori /etc/wireguard dihalang untuk pengguna biasa, dan akses direktori tidak boleh diperoleh hanya dengan keistimewaan sudo untuk pengguna biasa.

Seterusnya, kami menetapkan topeng penciptaan fail kepada 077. Ini bermakna setiap kali fail baharu dicipta dalam folder ini melalui sebarang proses, kebenarannya akan ditutup secara automatik dengan 077. Cth. jika fail dicipta dalam folder ini dengan keizinan 777, ia bertopeng secara automatik dan keizinan berkesan menjadi 700. Ini dilakukan supaya hanya pemilik fail yang mempunyai semua kebenaran pada fail itu dan orang lain tidak mempunyai kebenaran.

Pada baris seterusnya, kami menjana pasangan kunci awam/peribadi untuk pelayan. Mereka disimpan dalam fail private_key dan public_key. Untuk melihat kekunci, jalankan:

kucing private_key kucing public_key

Salin kunci peribadi, kami memerlukannya dalam langkah seterusnya.

Nota: Jangan sekali-kali berkongsi kunci peribadi anda secara terbuka!

Fail Konfigurasi

Mari buat fail konfigurasi untuk Pelayan Wireguard. Anda boleh memilih mana-mana nama untuk fail tersebut. Kami akan membuat fail wg0.conf dalam contoh ini.

vim wg0.conf

Tambahkan yang berikut pada fail.

[Antara Muka] Alamat = 10.20.43.1/24 SaveConfig = true ListenPort = 51190 PrivateKey = PostUp = iptables -A FORWARD -i wg0 -j TERIMA; iptables -t nat -A POSTROUTING -o -j MAQUERADE; ip6tables -A HADAPAN -i wg0 -j TERIMA; ip6tables -t nat -A POSTROUTING -o eth0 -j MAQUERADE PostDown = iptables -D FORWARD -i wg0 -j TERIMA; iptables -t nat -D POSTROUTING -o eth0 -j SOMAR; ip6tables -D HADAPAN -i wg0 -j TERIMA; ip6tables -t nat -D POSTROUTING -o -j MAQUERADE 

Tampalkan Kunci Peribadi yang sebelum ini kami salin ke baris 5 dalam kod di atas.

Kita perlu mengkonfigurasi Wireguard pada subnet (maya) yang berbeza daripada Alamat IP pelayan. Di sini, saya telah menggunakan 10.20.43.1 untuk pelayan dan akan menggunakan 10.20.43.2 untuk pelanggan. Mana-mana subnet boleh digunakan di sini. Untuk mendapatkan Alamat IP pelayan dan antara muka, jalankan:

ifconfig

Perhatikan Alamat IP pelayan. Ini diperlukan semasa konfigurasi klien.

Antara muka yang digunakan oleh pelayan, seperti yang dilihat dalam imej di atas, ialah eth0. Nama antara muka boleh berbeza berdasarkan rangkaian pengguna, boleh jadi wlan0 atau wlp2s0 sekiranya pengguna disambungkan ke rangkaian WiFi menggunakan kad wayarles.

Gantikan dalam PostUp dan PostDown dengan antara muka anda; dalam contoh ini adalah eth0.PostUp dan PostDown arahan digunakan untuk menentukan arahan yang harus dijalankan apabila pelayan bermula dan berhenti masing-masing. Dalam contoh kami, kami menggunakan iptables perintah untuk menetapkan peraturan IP supaya Alamat IP pelayan dikongsi oleh pelanggan. Peraturan akan digugurkan sebaik sahaja pelayan berhenti.

Simpan dan keluar dari fail. Apabila menggunakan vim, tekan Esc, kemudian taip :wq dan tekan Masuk untuk menyimpan dan keluar.

Jika anda menggunakan a ufw firewall pada pelayan, kita perlu membenarkan sambungan UDP ke port untuk pelayan VPN, 51190.

ufw benarkan 51190/udp

Memulakan Perkhidmatan

Sekarang apabila konfigurasi selesai, kami boleh memulakan perkhidmatan Wireguard VPN.

Bagi membolehkan perkhidmatan untuk bermula pada masa boot, jalankan:

systemctl dayakan wg-quick@wg0

Perhatikan bahawa di sini wg0 ialah nama fail konfigurasi.

Untuk mula perkhidmatan, jalankan:

perkhidmatan wg-cepat@wg0 bermula

Sahkan bahawa perkhidmatan telah berjaya dimulakan:

perkhidmatan wg-cepat@wg0 status

Sahkan bahawa antara muka yang kami buat dalam fail konfigurasi telah bermula, menggunakan arahan IP.

ip rancangan wg0

Pelayan VPN Wireguard kini disediakan dan berjalan. Mari konfigurasikan klien sekarang.

Konfigurasi Pelanggan

Konfigurasi Pelanggan untuk Wireguard adalah lebih kurang sama dengan konfigurasi pelayan. Kami menjana kunci untuk klien, dan kemudian mencipta fail konfigurasi.

Kunci Keselamatan

Untuk menjana kunci awam/peribadi pasangan untuk pelanggan, jalankan:

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

Kunci awam dan peribadi untuk klien kini dijana masing-masing dalam fail kunci_pelanggan dan kunci_awam pelanggan.

Semak bahawa ia telah dibuat, menggunakan kucing perintah.

kucing klien_private_key kucing_client_public_key

Salin kunci peribadi yang dipaparkan kerana kami perlu menambahkannya pada fail konfigurasi untuk klien.

Fail Konfigurasi

Buat fail konfigurasi dengan mana-mana nama yang anda mahu. Kami akan menciptanya dengan nama wg0-klien untuk contoh ini.

vim wg0-client.conf

Tambah konfigurasi berikut.

[Antara Muka] # Alamat IP dan Kunci Peribadi Alamat Pelanggan = 10.20.43.2/24 PrivateKey = [Peer] # Kunci awam, Alamat IP dan Port Pelayan PublicKey = Titik Akhir = :51190 AllowedIPs = 0.0.0.0/0, : :/0

Masukkan alamat subnet untuk klien. Seperti yang diterangkan sebelum ini, kami menggunakan 10.20.43.2 untuk pelanggan dalam contoh ini.

Tambahkan kunci peribadi pelanggan dijana dalam langkah sebelumnya ke baris 4 dalam kod konfigurasi di atas.

Di bawah 'Peer', kami menambah maklumat tentang pelayan VPN Wireguard kita nak sambung.

Masukkan kunci awam pelayan. Masuk ke Alamat IP pelayan, yang kami nyatakan sebelum ini, dan port dalam format yang diberikan terhadap Titik akhir. Ini ialah port yang kami tentukan dalam fail konfigurasi pelayan dan perkhidmatan VPN pada pelayan bermula.

IP yang dibenarkan hendaklah dimasukkan seperti yang diberikan (0.0.0.0/0) supaya sebarang permintaan pada IP awam dinamik yang digunakan oleh pelanggan akan sentiasa dimajukan ke pelayan VPN.

Simpan dan keluar dari fail. Apabila menggunakan vim, tekan Esc, kemudian taip :wq dan tekan Masuk untuk menyimpan dan keluar.

Dayakan perkhidmatan pelanggan untuk menjalankan dengan setiap but, dan mulakannya.

systemctl dayakan perkhidmatan wg-quick@wg-client wg-quick@wg-client start

Sahkan jika perkhidmatan telah bermula.

perkhidmatan wg-cepat@wg-status pelanggan

Menambah Peer pada Pelayan

Kini kami mempunyai pelayan dan klien VPN yang sedang beroperasi. Walau bagaimanapun, terowong selamat antara kedua-duanya tidak diwujudkan melainkan kami mewujudkan sambungan peer to peer antara pelayan dan pelanggan.

Pergi balik kepada pelayan. pertama, hentikan perkhidmatan VPN.

perkhidmatan wg-cepat@wg0 berhenti

Seterusnya, buka fail konfigurasi ke tambah konfigurasi untuk rakan sebaya (pelanggan).

vim /etc/wireguard/wg0.conf

Lampirkan baris berikut ke fail.

[Peer] PublicKey = AllowedIPs = 10.20.43.2/32

sekarang, mulakan perkhidmatan VPN sekali lagi.

perkhidmatan wg-cepat@wg0 bermula

Itu sahaja! Ini adalah semua konfigurasi yang diperlukan untuk persediaan klien dan pelayan VPN Wireguard. Mari kita uji VPN kami.

Menguji VPN

Mula-mula, mari lakukan ping mudah daripada klien ke pelayan, untuk memastikan komunikasi terowong VPN berfungsi. Jalankan yang berikut pada klien:

ping 10.20.43.1

Seterusnya, buka pelayar web dan buka mana-mana laman web untuk menyemak sama ada anda boleh menyambung ke Internet daripada mesin klien. Anda juga boleh menyemak sambungan internet anda dari baris arahan menggunakan wget.

wget 

Kini, kami telah menyemak sambungan terowong dan sambungan Internet. Jika kedua-duanya berfungsi, kita kini perlu memastikan bahawa semua trafik internet yang datang kepada pelanggan melalui pelayan.

Untuk ini, kami hanya perlu menyemak Alamat IP klien seperti yang dilihat oleh Internet. Salah satu cara untuk melakukannya ialah pergi ke whatsmyip.org. Jika tidak, daripada baris arahan, kami boleh menanyakan perkhidmatan serupa lain yang dipanggil maklumat IP, menggunakan Curl.

Jalankan yang berikut pada mesin klien

curl //ipinfo.io/ip

ya. Ia ialah Alamat IP awam Linode tempat pelayan VPN dihoskan. Beginilah cara kerahasiaan dicapai menggunakan VPN, kerana di seluruh Internet kini IP pelayan VPN dilihat dan bukan komputer anda.

Kesimpulan

Kemudahan persediaan ialah salah satu kelebihan Wireguard yang paling penting berbanding perisian VPN tradisional seperti OpenVPN, yang memerlukan pengetahuan rangkaian dan penghalaan tahap yang lebih tinggi untuk disediakan. Walau bagaimanapun, terdapat kekurangan dokumentasi rasmi terperinci untuk Wireguard yang mungkin menyebabkan masalah jika persediaan Wireguard anda mengalami ralat atau tidak berfungsi seperti yang diharapkan.

Namun begitu, Wireguard ialah pilihan yang sangat baik jika anda mahukan VPN yang dihoskan sendiri untuk komunikasi selamat melalui Internet. Untuk mengetahui lebih lanjut tentang Wireguard dan protokol serta teknologi yang digunakan, anda boleh menyemak tapak rasmi.