Există două motive legitime pentru a imbrica tuneluri pe laptopul unui dezvoltator. Fie clientul de companie trebuie să pară că vine dintr-o țară anume, fie două rețele private trebuie să fie accesibile în același timp. Ambele cazuri cer ca tunelul exterior să transporte propria conexiune a clientului interior.

Pornirea a doi clienți în orice ordine nu produce asta. Rutarea o produce.

Comparați cele două ordini posibile

Alegeți stratul exterior drept tunelul al cărui punct final este accesibil din internetul public. Stratul interior este tunelul al cărui server răspunde doar prin acea ieșire. În Windows împărțirea practică este WireGuard afară și clientul de companie înăuntru. Factorul decisiv este controlul.

Clientul oficial WireGuard aplică un fișier de configurare complet, inclusiv rute și DNS. Clienții de companie comerciali ascund de obicei ambele. Plasarea unui client ascuns afară vă lasă să ghiciți calea de dedesubt.

Ordinea inversă nu este imposibilă. Este doar mai greu de analizat, pentru că clientul exterior rescrie rutele după un program pe care nu îl vedeți niciodată.

Lăsați AllowedIPs să numească doar intervalul de companie

AllowedIPs enumeră destinațiile pe care WireGuard le direcționează în tunel. Pentru imbricare are nevoie doar de adresa serverului interior și de prefixele de companie. Tot restul rămâne în rețeaua locală, inclusiv imprimantele și hipervizorul. Acesta este un tunel divizat prin proiectare și evită complet problema excluderii.

Un strat exterior cu tunel complet are nevoie de 0.0.0.0/0 minus intervalele locale. Formatul nu poate exprima o excludere, deci complementul trebuie calculat și lipit.

[Interface]
PrivateKey = ...
Address = 10.99.4.2/32

[Peer]
PublicKey = ...
Endpoint = 198.51.100.44:51820
AllowedIPs = 198.51.100.44/32, 10.20.0.0/16, 10.21.0.0/16

Când clientul interior nu își instalează propriile rute, enumerați dumneavoastră prefixele de companie. Un prefix omis din acea linie este o destinație pe care tunelul exterior nu o transportă niciodată. O copie învechită a listei este mai rea decât niciuna, pentru că încă pare corectă.

Ordine, metrici și al doilea adaptor

Conectați mai întâi tunelul exterior, apoi porniți clientul de companie. Atunci conexiunea lui la punctul final iese prin WireGuard în locul gateway-ului local. Dați interfeței de companie o metrică mai mică pentru ca prefixele ei să câștige pentru adresele pe care le deține.

# which interface currently claims the corporate prefix?
Find-NetRoute -RemoteIPAddress 10.20.10.5 | Select-Object -First 1

# prefer the corporate interface for its own prefixes
Set-NetIPInterface -InterfaceAlias 'Corp VPN' -InterfaceMetric 3
Set-NetIPInterface -InterfaceAlias 'wg-personal' -InterfaceMetric 40

wg show interfaces

Metricile sunt pasul pe care oamenii îl sar. Fără o ordine, pentru prefixul suprapus câștigă ruta instalată ultima. Asta se schimbă între porniri, de aceea problema pare intermitentă.

Clienții bazați pe OpenVPN 2.6 adaugă o capcană proprie. Când adaptorul de descărcare al canalului de date este deja ocupat, o a doua instanță pur și simplu refuză să pornească. Adăugarea disable-dco în profil revine la vechea cale TAP, iar atunci ambele rulează una lângă alta.

Unde se rupe calea imbricată

Deconectarea tunelului exterior îl ucide pe cel interior. Reconectarea doar a clientului interior îl trimite adesea direct pe internet și elimină în tăcere imbricarea. Testați secvența de la zero de fiecare dată, cu ambele tuneluri oprite.

Așteptați-vă la un MTU util mai mic. Fiecare strat adaugă suprasarcină, așa că o pereche de start în jurul valorilor 1420 și 1400 este un punct de început. Un transfer care se blochează la pachete mari în timp ce cererile mici reușesc este semnul obișnuit. Politica de companie este cealaltă limită, pentru că un client care cere un dispozitiv administrat poate considera o cale imbricată o încălcare.

Când ambele capete sunt rețele fixe, un tunel de la sit la sit între gateway-uri elimină problema ordinii în loc să o administreze. Pe un singur laptop, două tuneluri coexistă doar când fiecare are propria interfață și o regulă care selectează destinații după prefix.

Articole similare