Sediakan VPN yang dihoskan sendiri menggunakan Wireguard
A VPN (Virtual Private Network) membolehkan pengguna untuk menyambung ke rangkaian peribadi dari jauh seolah-olah komputer pengguna telah 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 penggunaan VPN adalah untuk mendapatkan kerahsiaan 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 Wireguard . 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 wireguard
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
Kami perlu menjana satu set pasangan kunci awam/peribadi 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 kepada077
. 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:
cat private_key
cat 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.
[Interface]
Address = 10.20.43.1/24
SaveConfig = true
ListenPort = 51190
PrivateKey =
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o -j MASQUERADE
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
Bahagian yang diserlahkan ialah Alamat IP
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, ia boleh wlan0
atau wlp2s0
sekiranya pengguna disambungkan ke rangkaian WiFi menggunakan kad wayarles.
Gantikan dalam PostUp
dan PostDown
dengan antara muka anda; dalam contoh ini ialah 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
arahan 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 Enter untuk menyimpan dan keluar.
Jika anda menggunakan ufw
tembok api pada pelayan, kami perlu membenarkan sambungan UDP ke port untuk pelayan VPN, 51190.
ufw allow 51190/udp
Memulakan Perkhidmatan
Sekarang apabila konfigurasi selesai, kami boleh memulakan perkhidmatan Wireguard VPN.
Untuk membolehkan perkhidmatan bermula pada masa but, jalankan:
systemctl enable [email protected]
Ambil perhatian bahawa di sini wg0
ialah nama fail konfigurasi.
Untuk memulakan perkhidmatan, jalankan:
service [email protected] start
Sahkan bahawa perkhidmatan telah berjaya dimulakan:
service [email protected] status
Sahkan bahawa antara muka yang kami cipta dalam fail konfigurasi telah bermula, menggunakan arahan IP.
ip a show 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 pasangan kunci awam/peribadi 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 client_private_key
dan client_public_key
.
Semak sama ada ia telah dibuat, menggunakan cat
arahan.
cat client_private_key
cat client_public_key
Salin kunci peribadi yang dipaparkan kerana kami perlu menambahkannya pada fail konfigurasi untuk klien.
Fail Konfigurasi
Cipta fail konfigurasi dengan sebarang nama yang anda mahu. Kami akan menciptanya dengan nama wg0-client
untuk contoh ini.
vim wg0-client.conf
Tambah konfigurasi berikut.
[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey =
[Peer]
# Public key, IP Address and Port of the Server
PublicKey =
Endpoint = :51190
AllowedIPs = 0.0.0.0/0, ::/0
Masukkan alamat subnet untuk klien. Seperti yang diterangkan sebelum ini, kami gunakan 10.20.43.2
untuk pelanggan dalam contoh ini.
Tambahkan kunci peribadi pelanggan yang dijana dalam langkah sebelumnya ke dalam baris 4 dalam kod konfigurasi di atas.
Di bawah 'Peer', kami menambah maklumat tentang pelayan VPN Wireguard yang ingin kami sambungkan.
Masukkan kunci awam pelayan. Masukkan Alamat IP pelayan , yang kami nyatakan sebelum ini, dan port dalam format yang diberikan terhadap Endpoint . 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 Enter untuk menyimpan dan keluar.
Dayakan perkhidmatan pelanggan berjalan dengan setiap but, dan mulakannya.
systemctl enable [email protected]
service [email protected] start
Sahkan jika perkhidmatan telah bermula.
service [email protected] status
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.
Kembali ke pelayan. Mula-mula, hentikan perkhidmatan VPN .
service [email protected] stop
Seterusnya, buka fail konfigurasi untuk menambah konfigurasi untuk rakan sebaya (klien).
vim /etc/wireguard/wg0.conf
Tambahkan baris berikut pada fail.
[Peer]
PublicKey =
AllowedIPs = 10.20.43.2/32
Sekarang, mulakan perkhidmatan VPN sekali lagi .
service [email protected] start
Itu sahaja! Ini adalah semua konfigurasi yang diperlukan untuk persediaan klien dan pelayan VPN Wireguard. Mari kita uji VPN kami sekarang.
Menguji VPN
Mula-mula, mari kita 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 tapak web untuk menyemak sama ada anda boleh menyambung ke Internet daripada mesin klien. Anda juga boleh menyemak sambungan internet anda daripada 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 https://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 digunakannya, anda boleh menyemak tapak rasmi .