Majoritatea configurațiilor WireGuard stricate nu greșesc o valoare; pun valoarea corectă în partea greșită. O cheie privată aparține acestei mașini, un peer poartă cheia publică a celeilalte mașini, iar o adresă stă în blocul interface deși descrie unde locuiește tunelul. Citiți fișierul ca două direcții care se întâlnesc, apoi verificați ce a adăugat scriptul auxiliar deasupra. Protocolul în sine are mai puține câmpuri decât fișierul, iar cele suplimentare merită știute separat.

Cheile interface descriu această mașină

Blocul interface ține identitatea proprie a acestui capăt. PrivateKey este acea identitate și nu părăsește niciodată gazda; cheia publică corespunzătoare este derivată din ea și ea este cea pe care o listează ceilalți peers. ListenPort este locul unde această parte primește strângeri de mână, așa că doi clienți în spatele unei adrese au nevoie de porturi diferite.

Address este adresa tunelului la care răspunde această gazdă, scrisă cu o lungime de prefix pentru că este și sursa pe care o va folosi. Un prefix greșit aici schimbă ce destinații consideră gazda ca fiind conectate direct, iar asta produce defecțiuni care par de rutare și nu de configurare.

Restul într-un [Interface] bloc cu un client real este de obicei adăugat de wg-quick: DNS, MTU, Table, și liniile de cârlig. Acestea nu sunt câmpuri de protocol, iar o instalare wg goală le ignoră complet.

Fiecare intrare peer descrie o altă parte

Un [Peer] bloc este partea îndepărtată. PublicKey este cheia derivată a acelei părți, niciodată cheia ei privată, iar PresharedKey este un secret suplimentar opțional pe care ambele părți trebuie să îl țină identic. Endpoint este unde se trimite, iar PersistentKeepalive cere acestei gazde să trimită un pachet după interval când nimic altceva nu iese.

Două greșeli explică cea mai mare parte a confuziei aici. Copierea propriei chei private într-un bloc peer face ca cele două capete să partajeze o identitate, iar strângerea de mână eșuează într-un mod care se înregistrează prost. Endpoint lăsarea afară la un client este de obicei intenționată, pentru că serverul învață adresa din strângerea de mână de intrare; lăsarea ei afară pe un server care trebuie să inițieze nu este. Rețineți și că keepalive ține o mapare NAT deschisă și nu îmbunătățește debitul și nu reduce latența, așa că treizeci de secunde de pachete în plus nu cumpără nimic când traficul curge deja.

AllowedIPs este rutare, nu o listă de permisiuni

AllowedIPs este rutarea pe cheie criptografică a WireGuard. La ieșire, decide care peer primește un pachet după destinație. La intrare, decide dacă un pachet care vine de la acel peer este acceptat după sursă. Același câmp face ambele lucruri, de aceea nu este o listă de control al accesului și nu este o listă de site-uri permise.

Un AllowedIPs îngust pe server pentru un client înseamnă că serverul va accepta doar pachete care declară acele surse și va trimite doar acele destinații acelui client. Lărgiți o parte fără a o lărgi pe cealaltă și obțineți un tunel care urcă și nu lasă nimic să treacă.

Ce adaugă wg-quick în jurul protocolului

wg-quick citește același fișier și face pașii de rețea pe care protocolul îi lasă sistemului de operare. Atribuie adresa interfeței, adaugă rute derivate din AllowedIPs, scrie setările resolverului și rulează comenzile de cârlig în ordine.

Acest strat explică asimetria clasică. Un fișier cu 0.0.0.0/0 și o linie DNS îi dă clientului o rută implicită și un resolver și nu face absolut nimic regulilor de redirecționare sau NAT ale serverului. Acelea aparțin configurației serverului însuși și niciun fișier de client nu le poate furniza.

Păstrați un singur proprietar pentru fișier. Editarea lui manual în timp ce SaveConfig este activat înseamnă că modificarea dumneavoastră dispare data viitoare când interfața cade, iar interfața nu vă va spune că s-a întâmplat.

Verificați starea aplicată, nu fișierul

Fișierul este o intenție. Starea aplicată este ceea ce ține nucleul, iar ele diferă de fiecare dată când un ajutor, un drop-in sau un cârlig a editat ceva după activare.

Citiți starea live și adresarea împreună, apoi comparați ambele cu ce ați scris:

sudo wg show
ip -4 addr show dev wg0
ip -4 route show dev wg0
grep -v "^#" /etc/wireguard/wg0.conf

Dacă lista de peers este goală, interfața a fost creată fără ca configurația ei să fie aplicată. Dacă există adrese și rute dar contoarele rămân la zero, fișierul s-a încărcat și strângerea de mână eșuează, ceea ce este o problemă de cheie sau de capăt și nu de ordine a secțiunilor. Comparați cele două vederi înainte de a edita, pentru că diferența dintre ele este de obicei defecțiunea reală.

Articole similare