Configurați un VPN auto-găzduit folosind Wireguard
A VPN (rețea privată virtuală) permite utilizatorului să se conecteze la o rețea privată de la distanță ca și cum computerul utilizatorului ar fi conectat direct la rețeaua privată. Tehnologia a fost dezvoltată inițial pentru a permite accesul de la distanță la rețeaua privată internă a unei companii, pentru angajații care nu sunt prezenți efectiv în locația rețelei interne.
Un server VPN este implementat în locația rețelei interne. Acest server se află în rețeaua publică și poate fi accesat folosind un client VPN de către angajat. Este necesară autentificarea pentru a vă conecta la serverul VPN. Comunicația dintre serverul VPN și clientul VPN este securizată folosind un protocol de tunel. Rețineți că această comunicare poate fi sau nu criptată, dar de obicei în majoritatea protocoalelor VPN este criptată.
O altă utilizare a VPN este să obțineți anonimatul atunci când accesați internetul sau pentru a ocoli restricțiile geografice impuse în timpul accesării unor site-uri web. În astfel de cazuri, rețeaua la care utilizatorul dorește să se conecteze nu este o rețea privată, ci este Internetul.
Multe protocoale VPN au fost dezvoltate de-a lungul anilor. Aceste protocoale folosesc diferite protocoale de tunel și algoritmi de criptare pentru comunicarea dintre server și client.
Un astfel de protocol, care câștigă o largă utilizare recent, este Wireguard. Wireguard este mai ușor, mai simplu și mai performant decât binecunoscutele protocoale VPN utilizate în mod tradițional, cum ar fi OpenVPN, IPSec. Este deja implementat pentru Windows, Mac OS și un număr mare de distribuții Linux. În Linux, este implementat ca un modul kernel. Este disponibil în depozitele oficiale ale Ubuntu 20.04.
În acest articol, vom vedea cum să configurați un server și un client Wireguard VPN în Ubuntu 20.04.
Instalare
Pentru acest articol, configurez un server Wireguard pe un Ubuntu 20.04 Linode și Wireguard Client pe mașina mea locală cu Ubuntu 20.04.
Pachetul sârmă de protecție
instalează atât serverul Wireguard, cât și clientul. Rulați următoarea comandă atât pe mașina Server, cât și pe mașina Client.
sudo apt install wireguard
Configurare server
Chei de securitate
Trebuie să generăm un set de perechi de chei publice/private pentru a autentifica și securiza conexiunea Wireguard. Acest lucru se poate face folosind următoarele comenzi:
sudo su cd /etc/wireguard umask 077 wg genkey | tee cheie_privată | wg pubkey > cheie_publică
Rețineți că facem toate sarcinile de configurare ca superutilizator. Motivul este că accesul la director /etc/wireguard
este împiedicat pentru utilizatorii normali, iar accesul la director nu poate fi obținut doar cu privilegii sudo pentru un utilizator normal.
Apoi, setăm masca de creare a fișierelor la 077
. Aceasta înseamnă că ori de câte ori un fișier nou este creat în acest folder de către orice proces, permisiunile acestuia vor fi mascate automat cu 077. De ex. dacă în acest folder este creat un fișier cu permisiunile 777, acesta este automat mascat și permisiunile devin efectiv 700. Acest lucru se face astfel încât numai proprietarul fișierului să aibă toate permisiunile asupra fișierului, iar toți ceilalți nu au permisiuni.
Pe linia următoare, generăm perechea de chei public/privat pentru server. Sunt salvate în fișiere cheie_privată
și cheie_publică
. Pentru a vizualiza cheile, rulați:
cat cheie_privata cat cheie_publica
Copiați cheia privată, avem nevoie de ea la pasul următor.
Notă: Nu partajați niciodată cheia privată în mod public!
Fișier de configurare
Să creăm un fișier de configurare pentru serverul Wireguard. Puteți alege orice nume pentru fișier. Vom crea un fișier wg0.conf
în acest exemplu.
vim wg0.conf
Adăugați următoarele în fișier.
[Interfață] Adresă = 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
Lipiți cheia privată pe care am copiat-o anterior în linia 5 din codul de mai sus.
Trebuie să configuram Wireguard pe o altă subrețea (virtuală). decât adresa IP a serverului. Aici, am folosit 10.20.43.1 pentru server și voi folosi 10.20.43.2 pentru client. Orice subrețea poate fi folosită aici. Pentru a obține adresa IP a serverului și a interfeței, rulați:
ifconfig
Notați adresa IP a serverului. Acest lucru este necesar în timpul configurării clientului.
Interfața folosită de server, așa cum se vede în imaginea de mai sus, este eth0
. Numele interfeței poate diferi în funcție de rețeaua utilizatorului, poate fi wlan0
sau wlp2s0
în cazul în care utilizatorul este conectat la o rețea WiFi folosind un card wireless.
Inlocuieste în
Documenta
și PostDown
cu interfața dvs.; în acest exemplu este eth0
.Documenta
și PostDown
directivele sunt folosite pentru a specifica ce comenzi ar trebui să fie executate atunci când serverul pornește și, respectiv, se oprește. În exemplul nostru, folosim iptables
comanda pentru a seta reguli IP astfel încât adresa IP a serverului să fie partajată de clienți. Regulile vor cădea odată ce serverul se oprește.
Salvați și ieșiți din fișier. Când utilizați vim, apăsați Esc, apoi tastați :wq
și apăsați introduce pentru a salva și a ieși.
Dacă utilizați un ufw
firewall pe server, trebuie să permitem conexiuni UDP la portul pentru serverul VPN, 51190.
ufw permit 51190/udp
Pornirea Serviciului
Acum, când configurarea este finalizată, putem porni serviciul Wireguard VPN.
Pentru a permite serviciul să pornească la momentul pornirii, rulați:
systemctl enable wg-quick@wg0
Rețineți că aici wg0
este numele fișierului de configurare.
A începe serviciul, rulați:
service wg-quick@wg0 start
Verifica că serviciul a început cu succes:
starea serviciului wg-quick@wg0
Verificați dacă interfața am creat în fișierul de configurare a început, folosind comanda IP.
ip a show wg0
Serverul VPN Wireguard este acum configurat și rulează. Să configurem clientul acum.
Configurare client
Configurația clientului pentru Wireguard este mai mult sau mai puțin aceeași cu configurația unui server. Generăm cheile pentru client și apoi creăm un fișier de configurare.
Chei de securitate
Pentru a genera cheia publică/privată pereche pentru client, rulați:
sudo su cd /etc/wireguard umask 077 wg genkey | tee client_private_key | wg pubkey > client_public_key
Cheile publice și private pentru client sunt acum generate în fișiere cheie_privată_client
și client_public_key
.
Verificați dacă au fost create, folosind pisică
comanda.
cat client_private_key cat client_public_key
Copiați cheia privată afișată deoarece trebuie să o adăugăm la fișierul de configurare pentru client.
Fișier de configurare
Creați fișierul de configurare cu orice nume doriți. Îl vom crea cu numele wg0-client
pentru acest exemplu.
vim wg0-client.conf
Adăugați următoarea configurație.
[Interfață] # Adresa IP și cheia privată a adresei clientului = 10.20.43.2/24 PrivateKey = [Peer] # Cheia publică, adresa IP și portul serverului PublicKey = Endpoint = :51190 AllowedIPs = 0.0.0.0/0, : :/0
Introduceți adresa de subrețea pentru client. După cum a fost descris anterior, folosim 10.20.43.2
pentru clientul din acest exemplu.
Adăugați cheia privată a clientului generat în pasul anterior în linia 4 din codul de configurare de mai sus.
Sub „Peer”, adăugăm informații despre serverul Wireguard VPN vrem să ne conectăm.
Introduceți cheia publică a serverului. Introduceți adresa IP a serverului, pe care l-am notat anterior, și port în formatul dat împotriva Punct final. Acesta este portul pe care l-am specificat în fișierul de configurare a serverului și pe care a început serviciul VPN de pe server.
IP-urile permise trebuie introduse așa cum sunt date (0.0.0.0/0), astfel încât orice solicitare pe o IP publică dinamică utilizată de client să fie întotdeauna redirecționată către serverul VPN.
Salvați și ieșiți din fișier. Când utilizați vim, apăsați Esc, apoi tastați :wq
și apăsați introduce pentru a salva și a ieși.
Activați serviciul pentru clienți să ruleze cu fiecare boot și să o pornească.
systemctl activați serviciul wg-quick@wg-client wg-quick@wg-client start
Verifica dacă serviciul a început.
service wg-quick@wg-client status
Adăugarea de peer la server
Acum avem serverul VPN și clientul în funcțiune. Cu toate acestea, un tunel securizat între cele două nu este stabilit decât dacă stabilim o conexiune peer-to-peer între server și client.
Întoarce-te la server. Primul, opriți serviciul VPN.
service wg-quick@wg0 stop
Apoi, deschideți fișierul de configurare la adăugați configurație pentru peer (client).
vim /etc/wireguard/wg0.conf
Adăuga următoarele rânduri la dosar.
[Peer] PublicKey = AllowedIPs = 10.20.43.2/32
Acum, porniți din nou serviciul VPN.
service wg-quick@wg0 start
Asta e! Aceasta este toată configurația necesară pentru configurarea clientului și serverului Wireguard VPN. Să testăm acum VPN-ul nostru.
Testarea VPN-ului
Mai întâi, să facem un simplu ping de la client la server, pentru a ne asigura că comunicația tunelului VPN funcționează. Rulați următoarele pe client:
ping 10.20.43.1
Următorul, deschideți un browser web și deschideți orice site web pentru a verifica dacă vă puteți conecta la Internet de pe computerul client. De asemenea, puteți verifica conexiunea la internet din linia de comandă folosind wget
.
wget
Acum, am verificat conectivitatea tunelului și conectivitatea la Internet. Dacă ambele funcționează, acum trebuie să ne asigurăm că tot traficul de internet care vine către client trece prin server.
Pentru aceasta, trebuie pur și simplu să verificăm adresa IP a clientului așa cum este văzută de Internet. O modalitate de a face acest lucru este să accesați whatsmyip.org. Sau, din linia de comandă, putem interoga un alt serviciu similar numit IP info, folosind Curl.
Rulați următoarele pe computerul client
curl //ipinfo.io/ip
Da. Este adresa IP publică a Linode-ului unde este găzduit serverul VPN. Așa se obține anonimatul utilizând VPN, deoarece pe tot internetul acum se vede IP-ul serverului VPN și nu al computerului dvs.
Concluzie
Ușurința de configurare este unul dintre cele mai importante avantaje ale Wireguard față de software-ul VPN tradițional precum OpenVPN, care necesită un nivel mai ridicat de cunoștințe de rețea și rutare pentru a fi configurat. Cu toate acestea, există o lipsă de documentație oficială detaliată pentru Wireguard, care ar putea cauza probleme dacă configurarea Wireguard generează erori sau nu funcționează conform așteptărilor.
Cu toate acestea, Wireguard este o alegere excelentă dacă doriți un VPN găzduit de sine pentru o comunicare sigură prin Internet. Pentru a afla mai multe despre Wireguard și protocoalele și tehnologiile pe care le utilizează, puteți consulta site-ul oficial.