Ghid · 25 de minute · Debian · Ubuntu · AlmaLinux
VPN propriu cu WireGuard
WireGuard e în kernelul Linux de la versiunea 5.6, deci nu instalezi nimic exotic. Configurația încape în douăzeci de rânduri, iar performanța e apropiată de cea a rețelei brute. Partea care încurcă lumea nu e WireGuard, ci rutarea și NAT-ul din jurul lui.
Ai nevoie de
- Un VPS securizat, cu acces root
- Un port UDP liber, deschis în firewall (implicit 51820)
- Un client: laptop, telefon sau amândouă
- 01
Decide ce fel de tunel vrei
Tunel complet: tot traficul clientului trece prin server. Îți ascunde adresa IP față de site-urile pe care le vizitezi și te protejează pe rețele publice, dar tot traficul tău trece prin serverul tău, deci se vede în logurile lui.
Split tunnel: prin VPN merge doar traficul către rețeaua serverului. Restul iese direct. Asta folosești când vrei doar acces la servicii private, fără să-ți muți tot traficul.
Diferența e o singură linie în configurația clientului, AllowedIPs. Ține minte care.
- 02
Instalează și generează cheile
Fiecare parte are o pereche de chei. Cheia privată nu părăsește niciodată mașina pe care a fost generată.
umask 077 înainte de generare face fișierele citibile doar de root. Fără el, cheia privată rămâne lizibilă pentru orice utilizator de pe server.
apt install wireguard # AlmaLinux: dnf install wireguard-tools cd /etc/wireguard umask 077 wg genkey | tee server.key | wg pubkey > server.pub wg genkey | tee client1.key | wg pubkey > client1.pub cat server.pub client1.pub - 03
Pornește rutarea pe server
Fără redirecționarea pachetelor, serverul primește traficul clientului și îl aruncă. E cel mai frecvent motiv pentru „m-am conectat dar nu merge internetul".
cat > /etc/sysctl.d/99-wireguard.conf <<'EOF' net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 EOF sysctl --system sysctl net.ipv4.ip_forward # trebuie să afișeze 1 - 04
Scrie configurația serverului
Interfața primește o adresă dintr-o rețea privată pe care o alegi tu. 10.8.0.0/24 e o alegere obișnuită, dar dacă rețeaua ta de acasă folosește deja 10.8.x, alege alta, altfel rutele se bat cap în cap.
PostUp și PostDown adaugă și scot regula de NAT. Înlocuiește eth0 cu numele real al interfeței, pe care îl afli cu ip route.
/etc/wireguard/wg0.conf [Interface] Address = 10.8.0.1/24 ListenPort = 51820 PrivateKey = <conținutul lui server.key> PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE PostUp = iptables -A FORWARD -i wg0 -j ACCEPT PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT [Peer] # client1 PublicKey = <conținutul lui client1.pub> AllowedIPs = 10.8.0.2/32AtențieÎn secțiunea [Peer] de pe server, AllowedIPs înseamnă „ce adrese am voie să primesc de la acest client". Pune /32, adresa exactă. Dacă pui 0.0.0.0/0 aici, orice client poate pretinde orice adresă.
- 05
Deschide portul și pornește
WireGuard folosește UDP. Un port TCP deschis nu ajută cu nimic.
# Debian / Ubuntu ufw allow 51820/udp # AlmaLinux firewall-cmd --permanent --add-port=51820/udp && firewall-cmd --reload # afli numele interfeței externe, dacă nu e eth0 ip route | grep default systemctl enable --now wg-quick@wg0 wg show - 06
Scrie configurația clientului
Aici alegi tipul de tunel. AllowedIPs = 0.0.0.0/0, ::/0 trimite tot prin VPN. AllowedIPs = 10.8.0.0/24 trimite doar traficul către rețeaua VPN.
PersistentKeepalive ține conexiunea deschisă prin NAT-ul de la client. Fără el, un telefon în spatele unui NAT agresiv pierde legătura după câteva minute de inactivitate.
client1.conf [Interface] Address = 10.8.0.2/32 PrivateKey = <conținutul lui client1.key> DNS = 1.1.1.1 [Peer] PublicKey = <conținutul lui server.pub> Endpoint = IP_SERVER:51820 AllowedIPs = 0.0.0.0/0, ::/0 # tunel complet # AllowedIPs = 10.8.0.0/24 # split tunnel PersistentKeepalive = 25 - 07
Conectează telefonul cu un cod QR
Aplicația WireGuard de pe telefon citește configurația dintr-un QR, deci nu tastezi chei de mână.
Codul conține cheia privată a clientului. Nu-l trimite pe chat și nu-l lăsa pe ecran mai mult decât trebuie.
apt install qrencode qrencode -t ansiutf8 < client1.conf - 08
Verifică, apoi verifică și scurgerea de DNS
wg show îți arată dacă handshake-ul s-a făcut. Dacă apare o dată recentă la latest handshake, tunelul e viu.
Testul care contează pentru un tunel complet e altul: adresa IP publică văzută din exterior trebuie să fie a serverului, iar interogările DNS să nu mai plece pe lângă tunel.
# pe server wg show # pe client, după conectare curl -s https://api.ipify.org && echo # trebuie să fie IP-ul serverului resolvectl status | grep 'DNS Servers' # Linux, verifică ce resolver se folosește - 09
Adaugă clienți fără să repornești
Fiecare client nou primește propria pereche de chei și propria adresă /32. Nu refolosi chei între dispozitive: dacă pierzi un telefon, vrei să poți scoate exact acel client.
cd /etc/wireguard && umask 077 wg genkey | tee client2.key | wg pubkey > client2.pub # adaugă peer-ul la cald, fără să pice ceilalți wg set wg0 peer "$(cat client2.pub)" allowed-ips 10.8.0.3/32 # salvează în fișier, ca să supraviețuiască repornirii wg-quick save wg0
Întrebări frecvente
+Ce VPS îmi trebuie pentru un VPN personal?
WireGuard consumă foarte puțin: planul de 2 GB acoperă confortabil câțiva utilizatori. Limita practică nu e memoria, ci lățimea de bandă a serverului, fiindcă tot traficul tunelat trece prin el.
+M-am conectat, dar nu merge internetul. De unde încep?
Trei cauze acoperă majoritatea cazurilor: ip_forward nu e pornit, regula de NAT indică o interfață care nu există (verifică numele cu ip route), sau AllowedIPs de pe client nu include traficul pe care îl aștepți. Verifică-le în ordinea asta.
+Handshake-ul nu se face deloc.
Aproape sigur e portul. WireGuard e UDP, iar o regulă de firewall pentru TCP nu ajută. Verifică și că Endpoint din configurația clientului are IP-ul public corect și portul corect.
+VPN-ul propriu îmi dă anonimat?
Nu. Îți mută traficul de la furnizorul tău de internet către serverul tău, ceea ce ajută pe rețele publice și îți dă acces la servicii private. Dar serverul e închiriat pe numele tău și tot traficul trece prin el, deci nu e anonimat, e control.