Cum se configurează un server VPN punct-la-site WireGuard pe Debian 12

Un VPN punct-la-site WireGuard pe Debian 12 (Bookworm) este o modalitate practică de a permite laptopurilor, telefoanelor sau stațiilor de lucru la distanță să ajungă la un server sau să direcționeze traficul prin acesta. O clarificare importantă este prima: WireGuard nu are un „mod server” special. Fiecare participant este un peer. Într-un design punct-la-site, o gazdă Debian acționează pur și simplu ca hub stabil, accesibil publicului, iar fiecare dispozitiv la distanță primește propria pereche de chei și adresă de tunel.

Acest ghid folosește instrumentele WireGuard incluse în pachetul Debian, wg-quickredirecționarea IPv4 și nftables. Presupune că serverul Debian are acces root sau sudo și că portul UDP 51820îl poate accesa. Dacă serverul se află în spatele unui router de acasă sau de la birou, trebuie să redirecționați acel port UDP către gazda Debian. Dacă ISP-ul utilizează NAT de nivel operator (CGNAT), redirecționarea obișnuită a porturilor routerului poate să nu fie suficientă; confirmați că aveți de fapt o adresă publică accesibilă înainte de a depana WireGuard.

Ce va face această configurație?

VPN-ul exemplu folosește 10.8.0.0/24. Serverul este 10.8.0.1, iar primul client este 10.8.0.2. Clientul poate fi configurat fie ca un VPN full-tunnel, unde traficul de internet IPv4 iese prin serverul Debian, fie ca un tunel divizat, unde doar rețelele private selectate utilizează WireGuard.

Documentația proprie WireGuard a Debian confirmă faptul că WireGuard este disponibil prin pachetele de distribuție, în timp ce ghidul oficial de pornire rapidă WireGuard documentează generarea de chei wg-quickși comportamentul opțional persistent keepalive. Consultați documentația Debian WireGuard , ghidul oficial de pornire rapidă WireGuard și pagina de manual wg-quick a Debian .

Pasul 1: Instalați WireGuard și nftables

Actualizați metadatele pachetului, apoi instalați WireGuard și nftables:

sudo apt update
sudo apt install wireguard nftables

O concepție greșită des întâlnită este că Debian 12 are nevoie de un modul de kernel WireGuard în afara arborelui. Nu are. WireGuard este prezent în kernelul Linux de ani de zile; pachetele Debian oferă instrumentele de gestionare a spațiului utilizator de care aveți nevoie. Acțiune: utilizați pachete Debian în loc să descărcați un script de instalare neverificat.

Terminal Debian care instalează pachetele wireguard și nftables cu apt
Instalați WireGuard și nftables din depozitele de pachete Debian înainte de a crea configurația tunelului.

Pasul 2: Generați perechea de chei a serverului

Creați fișierele cheie cu permisiuni restrictive:

sudo -i
install -d -m 700 /etc/wireguard
umask 077
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
chmod 600 /etc/wireguard/server_private.key
cat /etc/wireguard/server_public.key

Cheia privată trebuie să rămână privată. Cheia publică este ceea ce copiați în configurațiile clientului. În mod ideal, generați cheia privată a fiecărui client pe acel client, mai degrabă decât pe server. În acest fel, serverul nu va trebui niciodată să dețină chei private ale clientului.

Terminal Debian care prezintă comenzile de generare a cheilor WireGuard și o cheie publică derivată
Generați cheia privată WireGuard a serverului Debian și derivați cheia publică a acesteia utilizând permisiuni restrictive pentru fișiere.

Pasul 3: Activați redirecționarea IPv4

Un tunel VPN poate funcționa cu succes chiar dacă traficul rutat eșuează. Motivul este că redirecționarea IP-ului în Linux este o setare separată a kernelului față de WireGuard. Creați un fișier sysctl persistent:

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
sysctl net.ipv4.ip_forward

Comanda finală ar trebui să raporteze net.ipv4.ip_forward = 1. Documentația kernelului Debian descrie ip_forwardca fiind comutatorul care permite redirecționarea pachetelor IPv4. Acțiune: verificați explicit această valoare, în loc să presupuneți că interfața tunelului activează automat rutarea. Consultați manualul Debian ip(7) și documentația sysctl.conf .

Terminalul Debian care afișează net.ipv4.ip_forward setat la 1 într-un fișier de configurare sysctl
Activați redirecționarea IPv4 astfel încât Debian să poată ruta pachete între interfața WireGuard și alte rețele.

Pasul 4: Creați configurația serverului

Citiți cheia privată a serverului, apoi creați /etc/wireguard/wg0.conf:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

Apoi protejați fișierul:

sudo chmod 600 /etc/wireguard/wg0.conf

AllowedIPseste adesea înțeleasă greșit doar ca o listă de permisiuni de tip firewall. De asemenea, controlează rutarea. Pe server, atribuirea către acest peer îi spune lui WireGuard că pachetele pentru adresa exactă a tunelului aparțin acestui client. Acordați fiecărui client o adresă unică și un bloc 10.8.0.2/32separat .[Peer]

O altă opțiune utilă este să omiteți SaveConfig = truefișierul atunci când intenționați să îl gestionați manual. Cu SaveConfig, wg-quickputeți scrie starea live înapoi în configurație la oprire, ceea ce poate suprascrie modificările manuale. Acțiune: păstrați fișierul declarativ, cu excepția cazului în care doriți în mod specific ca starea live să fie salvată.

Terminal Debian care prezintă o configurație a serverului wg0.conf cu o interfață WireGuard și un peer
Creați fișierul wg0.conf pe partea de server cu o adresă de tunel, un port de ascultare UDP, o cheie privată a serverului și un client peer.

Pasul 5: Configurați mascarea nftables

Dacă clienții full-tunnel ar trebui să acceseze Internetul prin serverul Debian, cea mai simplă soluție este masquerading-ul IPv4. Mai întâi identificați interfața de ieșire a serverului:

ip route get 1.1.1.1

Căutați interfața după dev, cum ar fi eth0, ens3, sau enp1s0. Nu presupuneți că este întotdeauna eth0.

Dacă deja întrețineți /etc/nftables.conf, îmbinați următorul tabel NAT în setul de reguli existent în loc să înlocuiți fișierul:

table ip wireguard-nat {
    chain postrouting {
        type nat hook postrouting priority 100; policy accept;
        oifname "eth0" ip saddr 10.8.0.0/24 masquerade
    }
}

Înlocuiți eth0cu interfața de ieșire reală. Validați înainte de încărcare:

sudo nft -c -f /etc/nftables.conf
sudo systemctl enable --now nftables
sudo nft list ruleset

NAT nu este inerent necesar de WireGuard. Dacă rețeaua locală de destinație are deja o rută înapoi către 10.8.0.0/24, accesul rutat poate funcționa fără mascare. NAT este convenabil în principal atunci când doriți ca clienții la distanță să utilizeze ruta de internet existentă a serverului și nu controlați rutele de retur în altă parte. Acțiune: utilizați mascarea pentru cazul simplu de ieșire din internet; preferați rutarea explicită atunci când controlați rețeaua și doriți ca adresele sursă să fie păstrate.

GNU nano pe Debian afișează o regulă de mascare post-rutare nftables pentru subrețeaua WireGuard
Adăugați o regulă NAT nftables dedicată pentru 10.8.0.0/24 și validați setul de reguli înainte de a-l activa.

Ai nevoie și de reguli pentru firewall?

Asta depinde de firewall-ul deja instalat. Dacă politica de intrare nftables este restrictivă, permiteți UDP-ul de intrare 51820. Dacă lanțul dvs. de transmitere are o politică implicită de abandonare a traficului, adăugați acolo reguli pentru a permite traficul de wg0la destinația dorită și pentru a permite traficul de întoarcere stabilit. Furnizorii de Cloud VPS pot avea, de asemenea, un grup de securitate separat sau un firewall de furnizor care trebuie să permită UDP 51820.

Nu lipiți orbește un set complet nou de reguli de firewall implicite într-un server SSH la distanță. Acest lucru vă poate bloca accesul. Acțiune: inspectați sudo nft list rulesetși integrați WireGuard în firewall-ul pe care îl aveți deja.

Pasul 6: Creați profilul clientului

Pe client, generați propria pereche de chei folosind aplicația WireGuard sau wg genkey. Un profil IPv4 pentru întregul tunel arată astfel:

[Interface]
Address = 10.8.0.2/24
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Înlocuiți vpn.example.comcu numele DNS public sau adresa IP publică a serverului. DNSLinia este opțională, iar suportul pentru implementarea clientului variază. Pentru un tunel divizat, modificați AllowedIPsla doar rețelele care ar trebui să traverseze VPN-ul, de exemplu, 10.8.0.0/24plus o rețea locală privată, cum ar fi 192.168.50.0/24.

PersistentKeepalive = 25este, de asemenea, opțional. Documentația oficială WireGuard recomandă 25 de secunde ca o valoare rezonabilă atunci când un peer din spatele NAT sau al unui firewall cu stare trebuie să își păstreze maparea în timpul perioadelor de inactivitate. Nu este o setare de performanță și nu este obligatorie pentru fiecare client. Acțiune: utilizați-o în principal pentru clienții roaming sau NAT care altfel devin inaccesibili după timpul de inactivitate.

GNU nano pe Debian care afișează un profil de client WireGuard cu endpoint-ul serverului, AllowedIPs și PersistentKeepalive
Configurați clientul cu propria cheie privată, cheia publică a serverului, endpoint-ul, politica de rutare și keepalive opțional.

Pasul 7: Porniți WireGuard la pornire

Deschideți mai întâi nftables, apoi activați interfața WireGuard:

sudo systemctl enable --now nftables
sudo systemctl enable --now wg-quick@wg0
systemctl is-active nftables
systemctl is-active wg-quick@wg0

wg-quick@wg0citește /etc/wireguard/wg0.conf. wg-quickManualul confirmă că această convenție de denumire este comanda rapidă normală pentru configurațiile stocate sub /etc/wireguard. Acțiune: utilizați serviciul în locul unui script de boot personalizat, cu excepția cazului în care aveți un design de manager de rețea mai complex.

Terminalul Debian activează nftables și wg-quick@wg0 și confirmă că ambele servicii sunt active
Activează nftables și serviciul systemd wg-quick@wg0 astfel încât VPN-ul să revină automat după repornire.

Pasul 8: Verificați handshake-ul și traficul

Conectați clientul, apoi inspectați serverul:

sudo wg show
ip address show wg0
ping -c 3 10.8.0.2

Un peer sănătos afișează în mod normal o confirmare de handshake recentă și contoare de transfer diferite de zero după ce traficul traversează tunelul. Dacă ați configurat un tunel complet, verificați adresa IPv4 publică a clientului cu un serviciu de verificare IP de încredere; aceasta ar trebui să corespundă cu adresa de ieșire a serverului Debian.

Terminalul Debian afișează ieșirea wg show cu o strângere de mână recentă și ping-uri reușite către 10.8.0.2
Verificați dacă peer-ul are o confirmare recentă de handshake WireGuard, contoarele de transfer cresc și adresa tunelului clientului răspunde.

Probleme comune și ce înseamnă ele de fapt

SimptomCauză probabilăAcțiunea următoare utilă
Fără strângere de mânăChei greșite, punct final, port UDP, firewall upstream, redirecționare port router sau CGNATConfirmați că UDP 51820 ajunge la gazda Debian și verificați din nou ambele chei publice.
Strângerea de mână funcționează, dar nu există internetLipsește redirecționarea IPv4, regulile de redirecționare a firewall-ului sau NAT-ulVerificați sysctl net.ipv4.ip_forward, nft list ruleset, și numele interfeței de ieșire.
Poate ajunge la 10.8.0.1, dar nu la o rețea LAN privatăClientul nu are ruta LAN sau rețeaua LAN nu are o rută de returAdăugați subrețeaua LAN la client AllowedIPsși configurați rutarea sau NAT-ul în mod corespunzător.
Unele site-uri se oprescPosibilă problemă cu calea MTUTestează cu pachete mai mici înainte de a forța un MTU. wg-quickSe poate alege automat un MTU, așa că nu seta 1420 doar pentru că un alt ghid o face.
IPv4 folosește VPN, dar IPv6 nuRutele doar pentru profil0.0.0.0/0Configurați IPv6 și prin WireGuard sau dezactivați/blocați în mod deliberat IPv6 al clientului dacă este necesară evitarea scurgerilor de IPv6.

Tunel complet sau tunel divizat: pe care ar trebui să îl alegeți?

Folosește un tunel complet atunci când scopul este de a proteja traficul pe Wi-Fi nesigur sau de a face ca traficul de internet să iasă de pe serverul Debian. Folosește un tunel divizat atunci când ai nevoie doar de acces de la distanță la un server, o rețea de domiciliu, un laborator sau o aplicație internă și dorești ca traficul normal de internet să rămână local. Alegerea este controlată în principal de AllowedIPs.

Pentru o implementare punct-la-site mică, configurația de mai sus este suficientă pentru a stabili o bază ușor de întreținut: un bloc peer per client, adrese unice de tunel, servicii gestionate de Debian și nftables pentru comportamentul de rutare de care aveți nevoie. Pentru implementări mai mari, distribuția cheilor, ciclul de viață al peer-ilor, DNS, înregistrarea în jurnal și gestionarea configurației devin preocupări operaționale, chiar dacă protocolul WireGuard în sine rămâne simplu.

Listă de verificare finală pentru verificare

  • wg-quick@wg0este activă și wg0are 10.8.0.1/24.
  • Serverul ascultă pe UDP 51820, iar portul respectiv este accesibil prin orice firewall sau router din amonte.
  • Fiecare client are propria pereche de chei și /32o intrare unică pe server.
  • net.ipv4.ip_forwardeste egal 1cu atunci când este necesar acces rutat.
  • Mascarea nftables este prezentă pentru accesul la internet prin tunel complet, cu excepția cazului în care utilizați în mod intenționat căi de retur rutate.
  • wg showafișează o strângere de mână recentă după ce clientul trimite trafic.
  • Clientul AllowedIPsse potrivește cu designul dorit, fie cu tunel complet, fie cu tunel divizat.

Acești pași vizează Debian 12 și instrumentele standard WireGuard disponibile prin Debian. Topologia rețelei, NAT-ul în amonte, firewall-urile în cloud, rutarea LAN privată și politica IPv6 sunt specifice mediului, deci aceste componente nu pot fi deduse doar din configurația WireGuard. Validați fiecare element separat, în loc să tratați fiecare problemă de conectivitate ca o eroare WireGuard.

Lasă un comentariu

Cum se configurează un server VPN punct-la-site WireGuard pe Debian 12

Cum se configurează un server VPN punct-la-site WireGuard pe Debian 12

Configurați un VPN WireGuard point-to-site pe Debian 12 cu wg-quick, redirecționare IPv4, nftables NAT, profiluri de client, pornire systemd și verificare.

Cum să consolidezi SLES 15 pentru conformitatea cu STIG: Un flux de lucru OpenSCAP sigur

Cum să consolidezi SLES 15 pentru conformitatea cu STIG: Un flux de lucru OpenSCAP sigur

Auditați SLES 15 în raport cu DISA STIG actual, revizuiți constatările OpenSCAP, testați remedierile și documentați excepțiile înainte de lansarea în producție.

Remediați ruperea ecranului pe grafica Intel în Pardus Linux: Un ghid axat pe rezultate

Remediați ruperea ecranului pe grafica Intel în Pardus Linux: Un ghid axat pe rezultate

Remediați ruperea ecranului cu grafica Intel în Pardus Linux verificând X11 vs. Wayland, setările compozitorului, rata de reîmprospătare, driverul Xorg activ și TearFree doar atunci când este cazul.

Cum se configurează firewall-ul SLES 15 cu firewall-cmd

Cum se configurează firewall-ul SLES 15 cu firewall-cmd

Configurați firewalld pe SLES 15: verificați zonele, permiteți servicii sau porturi, salvați reguli permanente, reîncărcați în siguranță și verificați accesul.

Ghid de configurare a corecțiilor SLES Live: Aplicarea actualizărilor de kernel fără repornire

Ghid de configurare a corecțiilor SLES Live: Aplicarea actualizărilor de kernel fără repornire

Activați aplicarea de patch-uri live pentru kernel pe SLES 15 SP7, aplicați remedierile acceptate fără a reporni, verificați patch-urile active și înțelegeți când este încă necesară o repornire a kernelului.

Cum se activează modul FIPS pe SUSE Linux Enterprise Server 15

Cum se activează modul FIPS pe SUSE Linux Enterprise Server 15

Activați modul FIPS pe SLES 15 cu utilitarul de configurare acceptat de SUSE, reporniți în siguranță, verificați starea kernelului și a politicii criptografice și verificați limitele de certificare.

How to Install Google Chrome on Gooroom OS Without Breaking Security Policies

How to Install Google Chrome on Gooroom OS Without Breaking Security Policies

Install Google Chrome on Gooroom OS safely with official .deb packages, APT, policy checks, update guidance, and fixes for managed devices.

Cum se exportă în siguranță jurnalele de sistem SLES către un server Syslog la distanță

Cum se exportă în siguranță jurnalele de sistem SLES către un server Syslog la distanță

Redirecționați în siguranță jurnalele de sistem SLES către un server syslog la distanță cu rsyslog, certificate TLS, verificare a numelui peer-ului, cozi, validare și testare.

Integrarea SLES 15 Active Directory cu SSSD: Un ghid pas cu pas

Integrarea SLES 15 Active Directory cu SSSD: Un ghid pas cu pas

Conectați SLES 15 la Active Directory cu SSSD folosind YaST. Pregătiți DNS și ora, configurați datele de autentificare la domeniu, verificați Kerberos și comparați SSSD, Winbind și realmd.

Remediați problemele driverului Wi-Fi Realtek RTL8821CE pe Pardus Linux

Remediați problemele driverului Wi-Fi Realtek RTL8821CE pe Pardus Linux

Remediați problema Wi-Fi RTL8821CE pe Pardus Linux verificând driverul rtw88 încorporat, firmware-ul Realtek, rfkill, NetworkManager și opțiunile de rezervă.