Aplikacija vezana za interfejs? Njen VPN put nije podrazumijevani
Vezivanje soketa za uređaj, izvornu adresu ili imenski prostor mijenja koja ruta važi. Testirajte vlastitu vezu aplikacije, a ne provjeru IP-a u pregledniku.
Jedna aplikacija na mašini izlazi kroz VPN, a druga ne, i oba korisnika tvrde da ništa nisu mijenjali. Razlika je često odluka o vezivanju koju donosi sama aplikacija: soket vezan za uređaj, izvorna adresa odabrana prije veze ili imenski prostor s vlastitom tablicom rutiranja. Svaka od njih mijenja koji put važi, a nijedna se ne vidi u uobičajenoj provjeri IP-a u pregledniku.
Tri različita vezivanja, tri različita dejstva
Vezivanje za uređaj i vezivanje za izvornu adresu su srodne operacije s različitim posljedicama. Vezivanje za uređaj može prisiliti saobraćaj da izađe kroz jedan interfejs i zaobići normalnu pretragu rute za taj soket. Vezivanje izvorne adrese i dalje prolazi kroz odabir rute, ali odabrani izvor može odgovarati pravilu politike i poslati paket na drugo mjesto. Razlika zvuči akademski dok pravilo ne počne rutirati po izvoru. Tada odlučuje sve.
Mrežni imenski prostor je treći slučaj. Ima svoje interfejse i tablicu rutiranja, pa na aplikaciju unutar njega podrazumijevano stanje hosta uopće ne utiče. Tretiranje sva tri kao iste stvari daje samouvjerena objašnjenja koja ne prežive prvi test.
Utvrdite šta aplikacija zaista postavlja
Pročitajte mrežnu konfiguraciju aplikacije ili njeno dokumentovano ponašanje prije nego što dirnete rute. Ako nudi izbor interfejsa, polje izvorne adrese ili opciju imenskog prostora, ta postavka je prvo što treba pregledati. Ako ne, vezivanje može biti unutrašnje i vidljivo samo kroz praćenje ili vlastitu dijagnostiku.
Na Linuxu opcije soketa kao što je SO_BINDTODEVICE imaju dokumentovan obim i zahtjeve za dozvolama, a neprivilegovani proces ih možda uopće ne može postaviti. To ograničenje je koristan trag: ako se opcija ne može primijeniti, aplikacija vjerovatno nije izvor razlike.
Rutiranje po politici čita izvor
Kada je rutiranje po politici konfigurisano, pravilo može odabrati tablicu na osnovu izvora paketa. Zato soket koji veže izvornu adresu može slijediti pravilo koje podrazumijevani put nikad ne dotiče, iako nijedan interfejs nije izričito naveden.
Ponovite pretragu s istom porodicom adresa, izvorom i imenskim prostorom koje aplikacija koristi. Uobičajena pretraga rute iz ljuske u imenskom prostoru hosta odgovara na drugo pitanje, a taj nesklad je najčešći razlog što ispravna ruta izgleda pokvareno.
Podijeljeni tunel i pomoćni procesi
Podijeljeni tunel po aplikaciji dodaje još jedan sloj. Klijent može upariti paket ili proces aplikacije, a pomoćnik koji otvara vlastiti soket je odvojen subjekt. Pokretač i njegova pozadinska usluga mogu proizvesti različite veze pod istim vidljivim imenom.
Provjerite pokriva li pravilo podijeljenog tunela proces koji se zaista povezuje. Ako se aplikacija veže za određeni interfejs, a VPN klijent uparuje po paketu, dvije odluke mogu se razilaziti iako nijedna nije pogrešna.
Testirajte vlastiti put aplikacije
Pokrenite novi zahtjev iz aplikacije nakon svake promjene. Preglednik koji prikazuje izlaz koji ste željeli nije ekvivalentan dokaz za drugi program vezan za drugi interfejs, a keširane veze mogu dugo koristiti stari put nakon promjene postavke. Zatvorite staru sesiju prije nego procijenite novo pravilo. Inače test mjeri prošlost.
Linux referenca za sokete dokumentuje SO_BINDTODEVICE i njegove zahtjeve. Prvo pročitajte vlastitu konfiguraciju aplikacije, ponovite pretragu u istom kontekstu i tek onda odlučite treba li mijenjati rutu ili vezivanje.