Aplikacija vezana za interfejs? Njen VPN put nije podrazumevani
Vezivanje soketa za uređaj, izvornu adresu ili imenski prostor menja koja ruta važi. Testirajte sopstvenu vezu aplikacije, a ne proveru IP-a u pregledaču.
Jedna aplikacija na mašini izlazi kroz VPN, a druga ne, i oba korisnika tvrde da ništa nisu menjali. Razlika je često odluka o vezivanju koju donosi sama aplikacija: socket vezan za uređaj, izvorna adresa izabrana pre veze ili imenski prostor sa sopstvenom tabelom rutiranja. Svaka menja koji put važi, i nijedna se ne vidi u uobičajenoj proveri IP-a u pregledaču.
Tri različita vezivanja, tri različita dejstva
Vezivanje za uređaj i vezivanje za izvornu adresu su srodne operacije sa različitim posledicama. Vezivanje za uređaj može prisiliti saobraćaj da izađe kroz jedan interfejs i zaobiđe normalnu pretragu rute za taj socket. Vezivanje izvorne adrese i dalje prolazi kroz izbor rute, ali izabrani izvor može odgovarati pravilu politike i poslati paket na drugo mesto. Razlika zvuči akademski dok pravilo ne počne da rutira po izvoru. Tada odlučuje sve.
Mrežni imenski prostor je treći slučaj. Ima sopstvene interfejse i sopstvenu tabelu rutiranja, pa na aplikaciju unutar njega podrazumevano stanje hosta uopšte ne utiče. Tretiranje sva tri kao iste stvari daje samouverena objašnjenja koja ne prežive prvi test.
Utvrdite šta aplikacija zaista postavlja
Pročitajte mrežnu konfiguraciju aplikacije ili njeno dokumentovano ponašanje pre 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 sopstvenu dijagnostiku.
Na Linuxu opcije soketa kao što je SO_BINDTODEVICE imaju dokumentovan obim i zahteve za dozvolama, a neprivilegovani proces ih možda uopšte ne može postaviti. To ograničenje je koristan trag: ako se opcija ne može primeniti, aplikacija verovatno nije izvor razlike.
Rutiranje po politici čita izvor
Kada je rutiranje po politici konfigurisano, pravilo može izabrati tabelu na osnovu izvora paketa. Zato socket koji vezuje izvornu adresu može slediti pravilo koje podrazumevani put nikad ne dotiče, iako nijedan interfejs nije izričito naveden.
Ponovite pretragu sa 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.
Podeljeni tunel i pomoćni procesi
Podeljeni tunel po aplikaciji dodaje još jedan sloj. Klijent može upariti paket ili proces aplikacije, a pomoćnik koji otvara sopstveni socket je odvojen subjekt. Pokretač i njegova pozadinska usluga mogu proizvesti različite veze pod istim vidljivim imenom.
Proverite da li pravilo podeljenog tunela pokriva proces koji se zaista povezuje. Ako se aplikacija vezuje za određeni interfejs, a VPN klijent uparuje po paketu, dve odluke mogu se razilaziti iako nijedna nije pogrešna.
Testirajte sopstveni put aplikacije
Pokrenite novi zahtev iz aplikacije posle svake promene. Pregledač koji prikazuje izlaz koji ste želeli nije ekvivalentan dokaz za drugi program vezan za drugi interfejs, a keširane veze mogu dugo koristiti stari put posle promene postavke. Zatvorite staru sesiju pre nego što procenite novo pravilo. Inače test meri prošlost.
Linux referenca za sokete dokumentuje SO_BINDTODEVICE i njegove zahteve. Prvo pročitajte sopstvenu konfiguraciju aplikacije, ponovite pretragu u istom kontekstu i tek onda odlučite da li treba menjati rutu ili vezivanje.