Laptopul se conectează la VPN-ul biroului și totul îl urmează, inclusiv pagina web a unei imprimante și un intranet care răspunde doar în rețeaua locală. O rută făcută manual rezolvă asta pentru o oră, apoi conexiunea cade, revine, iar excepția a dispărut. Nu e nimic în neregulă cu tunelul: Windows ține o singură tabelă de rutare, iar adaptorul VPN rescrie partea lui din acea tabelă la fiecare conectare. Ce supraviețuiește este tot ce se află în afara propriilor intrări ale adaptorului.

Ce intrare preia tunelul

Înregistrați tabelul de două ori, o dată cu tunelul oprit și o dată cu el pornit, și comparați liniile implicite. Când profilul revendică prefixul implicit, intrarea adaptorului este cel mai lat rând din tabel, așa că orice excepție trebuie să fie mai îngustă decât el. Este aritmetică despre lungimea prefixului, nu o afirmație despre încredere sau politică. Stabilește și ce interfață trebuie să numească excepția.

Notați indexul interfeței și gateway-ul local înainte de a continua, pentru că ambele se schimbă când mașina se alătură altei rețele. Comenzile de mai jos le citesc din mașină, nu din memorie.

route print -4
Find-NetRoute -RemoteIPAddress 198.51.100.30

A doua comandă raportează interfața și următorul salt pe care le-ar folosi acea singură adresă acum, ceea ce e mai bun decât să citești patruzeci de rânduri și să ghicești. Rulați-o înainte și după conectare și aveți perechea care merită atașată la un registru de modificări. Ambele ieșiri furnizează numerele folosite în restul acestei pagini.

O rută de host câștigă prin specificitate

Potrivirea celui mai lung prefix decide câștigătorul, așa că un /32 prin gateway-ul fizic bate ruta implicită prin tunel fără ca tunelul să fie atins. Traficul către acea adresă iese prin interfața locală, în timp ce tot restul își păstrează calea actuală. Tunelul poartă în continuare ruta implicită și pur și simplu încetează să mai fie singurul candidat pentru acea destinație. Lungimea prefixului este singura pârghie pe care o oferă tabela, iar pentru această sarcină este suficientă.

Specificitatea exclude și scurtătura evidentă de a exclude un nume de domeniu, pentru că tabela potrivește adrese, iar un nume se poate rezolva în mai multe. Rezolvați mai întâi hostul, apoi decideți care dintre adresele lui merită excepția.

Pentru tot ce urmează, presupuneți o conexiune numită Office, un gateway local 10.0.0.1 pe interfața 7 și o destinație la 198.51.100.30. Sunt substituenți, nu valori implicite, iar comenzile de mai sus produc valorile pe care mașina dumneavoastră le folosește efectiv. Păstrați acea notă de substituție împreună cu modificarea, ca următorul cititor să nu copieze numerele.

Faceți ruta să supraviețuiască următoarei reconectări

Windows nu oferă nicio instrucțiune de excludere pe o conexiune VPN, așa că excepția trebuie să trăiască pe interfața fizică, unde adaptorul nu o va rescrie. Cmdlet-ul care pare răspunsul face invers: Add-VpnConnectionRoute mută un prefix în tunel, iar asta este cazul oglindă în care un profil divizat ar trebui să poarte o destinație și să lase restul local. Apelarea la el aici garantează că traficul pe care voiați să-l țineți afară intră înăuntru.

Forma manuală este o singură comandă. Slăbiciunea ei este schimbarea de rețea, nu reconectarea.

route -p add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7

Asta supraviețuiește unei reporniri datorită -p și trimite o adresă prin interfața 7 în timp ce tunelul poartă tot restul. Mutați laptopul într-o altă rețea și atât gateway-ul, cât și indexul devin învechite, așa că intrarea eșuează în liniște. Notați cine o deține și când ar trebui eliminată.

Un script de conectare este versiunea mai solidă, pentru că adaugă din nou excepția după fiecare conexiune în loc să spere că intrarea a supraviețuit. Cele două linii de mai jos aparțin lucrului care pornește tunelul, nu unui script de autentificare.

rasdial Office
route add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7

Orice ridică tunelul este locul potrivit pentru a doua linie, iar rasdial revine doar după ce conexiunea este stabilită, așa că ruta aterizează în spatele intrărilor proprii ale adaptorului. Rulați-o din nou după o trezire, pentru că o suspendare poate scăpa ruta și lăsa tunelul ridicat. Dacă sarcina este inversă, să împingi un singur prefix în tunel în timp ce restul rămâne local, atunci Add-VpnConnectionRoute este instrumentul potrivit.

Rutarea nu poate alege un proces

Uneori cerința este mai îngustă decât o destinație: un program ar trebui să ia calea locală în timp ce tot restul rămâne în tunel. Rutarea nu poate exprima asta, pentru că potrivește adrese și nu procese. Modelul viabil împinge problema în lansator.

Țineți profilul departe de ruta implicită și porniți acel singur program legat de adresa interfeței locale, astfel excepția devine comanda de lansare, iar tunelul păstrează ce gestiona deja. Nimic din tabela de rutare nu se schimbă și de aceea asta supraviețuiește reconectărilor. Înseamnă și că tunelul nu trebuie să dețină ruta implicită de la început, deci acesta este un alt proiect și nu un plasture pe cel anterior.

Slăbiciunea lui este operațională, nu tehnică. Programul trebuie să pornească mereu prin wrapper, iar dacă legătura lipsește după o trezire, ia în liniște orice cale oferă tabela. Asta e tolerabil pentru un browser pe care îl deschizi intenționat și inacceptabil pentru orice nu trebuie să părăsească niciodată tunelul.

Conexiunile pe utilizator nici nu rezolvă asta. Windows poate limita o conexiune la un cont în timp ce tabela de rutare rămâne la nivelul întregii mașini, așa că o conexiune limitată la un cont care deține o rută implicită redirecționează în continuare fiecare proces de pe mașină, inclusiv alte sesiuni. Domeniul devine real doar când domeniul rutei se potrivește cu contul. Două persoane care împart un laptop împart prin urmare o tabelă, iar a doua moștenește orice tunel a pornit prima.

Confirmați că excepția a supraviețuit unei reconectări

Testați modificarea așa cum va eșua: deconectați-vă, reconectați-vă, deschideți o aplicație nouă, apoi cereți o adresă care trebuie să rămână locală și una care trebuie să folosească tunelul. Comparați ambele cu Find-NetRoute în starea conectată.

Dacă prefixul lipsește din tabelă după o reconectare, trăiește în obiectul greșit și nu în formatul greșit. Mutați-l pe interfața fizică și repetați testul. Păstrați ambele ieșiri ale comenzilor împreună cu registrul de modificări, pentru că o imagine a stării funcționale răspunde mai târziu la mai multe întrebări decât un paragraf de explicații. Următoarea persoană va vrea să știe ce a produs conectarea, nu ce intenționați să producă.

Articole similare