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.