Oprire de urgență sau acces la LAN? Două răspunsuri pentru WireGuard
Clientul Windows blochează traficul din afara tunelului când profilul indică 0.0.0.0/0. Decideți de ce proprietate aveți nevoie, apoi exprimați valoarea implicită în consecință.
Strângerea de mână se încheie, navigarea funcționează, iar imprimanta, NAS-ul și gazdele SSH locale dispar. În clientul Windows acesta nu este de obicei deloc o defecțiune de rutare: un peer ale cărui prefixe permise includ valoarea implicită literală activează Blochează traficul din afara tunelului, iar acea opțiune este implementată ca reguli de firewall care aruncă pachetele ce ies prin orice altă interfață. Tabelul de rutare listează în continuare subrețeaua locală ca legătură directă, de aceea simptomul pare o minciună. Trei condiții decid ce trebuie făcut, iar doar una dintre ele ține de rutare.
Două defecțiuni poartă același simptom
Prima defecțiune este modul fail-closed al clientului, iar semnătura lui este că tot ce este în afara tunelului se oprește în timp ce tunelul funcționează perfect. A doua este o problemă reală de accesibilitate: o rută lipsă, o intrare lipsă pe server pentru o subrețea din spatele clientului, sau două rețele care împart același interval de adrese. Ambele produc o mașină care poate naviga și nu poate imprima, iar remediile lor sunt opuse, așa că diagnosticul trebuie să vină înaintea configurației.
Observația decisivă este dacă subrețeaua locală mai există în tabelul de rutare în timp ce traficul către ea este aruncat.
Trei condiții decid răspunsul
Întâi, are nevoie această mașină de fail-closed? Dacă răspunsul este da, un tunel care cade trebuie să oprească traficul în loc să-l lase să revină pe interfața fizică, iar această cerință cântărește mai mult decât confortul local. Al doilea, dispozitivele locale trebuie să rămână accesibile cât timp tunelul este activ? Imprimarea, stocarea în rețea și consolele locale de administrare sunt motivele obișnuite, iar acestea sunt cerințe legitime, nu excepții pentru care trebuie să ne scuzăm. Al treilea, exprimă profilul valoarea implicită ca literalul 0.0.0.0/0? Exact acest detaliu declanșează regulile clientului, iar el este editabil.
Răspundeți la aceste trei în scris înainte de a atinge un profil, pentru că fiecare răspuns indică o altă configurație.
Alegeți fail-closed și renunțați la LAN
Dacă scurgerile contează mai mult decât accesibilitatea locală, păstrați valoarea implicită literală și lăsați Blochează traficul din afara tunelului activat. Este o poziție coerentă: mașina este tratată ca un dispozitiv care este fie în tunel, fie offline, iar serviciile locale sunt atinse de pe alt dispozitiv sau prin tunel dacă serverul le rutează. Costul este real și ar trebui menționat în notele de implementare, în loc să fie descoperit de persoana care trebuie să imprima.
Aceasta este alegerea corectă pentru mașinile care fac o muncă ce nu trebuie să apară într-o rețea de cafenea atunci când tunelul cade. Este o valoare implicită proastă pentru un laptop de acasă care are nevoie și de scaner.
Alegeți accesul la LAN și exprimați valoarea implicită altfel
Dacă dispozitivele locale trebuie să rămână accesibile, exprimați aceeași acoperire fără prefixul implicit literal. Două semi-prefixe acoperă fiecare adresă IPv4, perechea echivalentă acoperă IPv6, iar clientul nu mai inserează regulile de blocare pentru că șirul căutat lipsește.
[Peer]
AllowedIPs = 0.0.0.0/1
AllowedIPs = 128.0.0.0/1
AllowedIPs = ::/1
AllowedIPs = 8000::/1
Endpoint = vpn.example.net:51820
Debifarea acelei casete face clientul să scrie în profil aceleași două perechi, așa că a compara fișierul generat cu blocul de mai sus este o modalitate rapidă de a confirma mecanismul în loc de a-l ghici. Urmează două consecințe. Acoperirea este identică, deci nimic altceva din tunel nu se schimbă. Protecția nu este identică: odată ce regulile dispar, un tunel care cade lasă mașina să folosească interfața fizică, iar exact asta prevenea fail-closed.
Verificați și ceilalți doi suspecți
După ce problema firewall-ului este lămurită, confirmați că subrețeaua locală este într-adevăr rutată și că extremitatea îndepărtată știe tot ce se află în spatele acestui client. Un server care trebuie să atingă o LAN din spatele unui client are nevoie de acel prefix în lista permisă a clientului de pe hub; omiteți-l și hub-ul nu poate alege un peer pentru acele adrese, iar nicio configurație a clientului nu creează unul.
Get-NetConnectionProfile | Select-Object Name, InterfaceAlias, NetworkCategory
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultOutboundAction
route print 0.0.0.0
Categoria de rețea contează mai mult decât se așteaptă oamenii: un adaptor de tunel nou creat, clasificat ca public, schimbă regulile care i se aplică, iar rezultatul poate arăta ca o blocare a firewall-ului la extremitatea îndepărtată. Listarea rutelor arată dacă există deloc o valoare implicită, ceea ce separă o problemă de politică de o rută lipsă.
Apoi testați trei lucruri într-o singură sesiune: internetul, o gazdă locală după adresă și o gazdă prin tunel. Strângerea de mână dovedește doar că cheile se potrivesc, așa că cele trei teste sunt cele care arată politica. Dacă gazda locală refuză în continuare cu opțiunea debifată, suspecții rămași sunt ruta, lista permisă a extremității îndepărtate și subrețeaua duplicată, în această ordine.