Programa susieta su sąsaja? Jos VPN kelias nėra numatytasis
Lizdo susiejimas su įrenginiu, šaltinio adresu ar vardų erdve keičia, kuri taisyklė galioja. Tikrinkite pačios programos ryšį, o ne IP patikrą naršyklėje.
Viena kompiuterio programa išeina per VPN, kita – ne, ir abu vartotojai prisiekia nieko nepakeitę. Skirtumas dažnai yra pačios programos sprendimas susieti: lizdas, susietas su įrenginiu, prieš ryšį pasirinktas šaltinio adresas arba vardų erdvė su savo maršrutizavimo lentele. Kiekvienas jų keičia, kuris kelias galioja, ir nė vienas nėra matomas bendroje IP patikroje naršyklėje.
Trys skirtingi susiejimai, trys skirtingi padariniai
Susiejimas su įrenginiu ir susiejimas su šaltinio adresu yra susijusios operacijos, tačiau padariniai skiriasi. Susiejimas su įrenginiu gali priversti srautą išeiti per vieną sąsają ir apeiti įprastą to lizdo maršruto paiešką. Šaltinio adreso susiejimas vis tiek praeina maršruto parinkimą, tačiau pasirinktas šaltinis gali atitikti politikos taisyklę ir nusiųsti paketą kitur. Skirtumas atrodo akademinis, kol taisyklė nepradeda maršrutizuoti pagal šaltinį. Tada ji nulemia viską.
Tinklo vardų erdvė yra trečias atvejis. Ji turi savo sąsajas ir savo maršrutizavimo lentelę, todėl jos viduje esanti programa visiškai nepatiria mazgo numatytosios reikšmės. Jei visus tris traktuojame kaip tą patį, atsiranda užtikrinti paaiškinimai, kurie neišlaiko pirmojo bandymo.
Nustatykite, ką programa iš tikrųjų nustato
Prieš liesdami maršrutus perskaitykite programos tinklo konfigūraciją arba jos dokumentuotą elgseną. Jei ji siūlo sąsajos pasirinkimą, šaltinio adreso lauką arba vardų erdvės parinktį, būtent šis nustatymas yra pirmas, kurį reikia patikrinti. Jei ne, susiejimas gali būti vidinis ir matomas tik per sekimą arba jos pačios diagnostiką.
Linux lizdo parinktys, tokios kaip SO_BINDTODEVICE, turi dokumentuotą apimtį ir leidimų reikalavimus, o neprivilegijuotas procesas gali jų visai nenustatyti. Šis apribojimas yra naudinga užuomina: jei parinkties pritaikyti negalima, programa greičiausiai nėra skirtumo šaltinis.
Politikos maršrutizavimas skaito šaltinį
Kai sukonfigūruotas politikos maršrutizavimas, taisyklė gali parinkti lentelę pagal paketo šaltinį. Todėl lizdas, susiejantis šaltinio adresą, gali sekti taisykle, kurios numatytasis kelias niekada neliečia, net jei jokia sąsaja nėra aiškiai įvardyta.
Pakartokite paiešką su ta pačia adresų šeima, šaltiniu ir vardų erdve, kuriuos naudoja programa. Bendra maršruto paieška iš apvalkalo mazgo vardų erdvėje atsako į kitą klausimą, ir šis neatitikimas yra dažniausia priežastis, kodėl veikiantis maršrutas atrodo sugedęs.
Padalytas tunelis ir pagalbiniai procesai
Padalytas tunelis pagal programą prideda dar vieną sluoksnį. Klientas gali suderinti programos paketą arba procesą, o pagalbininkas, atidarantis savo lizdą, yra atskiras subjektas. Paleidiklis ir jo foninė tarnyba gali sukurti skirtingus ryšius po tuo pačiu matomu vardu.
Patikrinkite, ar padalyto tunelio taisyklė apima procesą, kuris iš tikrųjų jungiasi. Jei programa susieta su konkrečia sąsaja, o VPN klientas suderina pagal paketą, du sprendimai gali nesutapti nė vienam neesant klaidingam.
Išbandykite pačios programos kelią
Po kiekvieno pakeitimo paleiskite naują užklausą iš programos. Naršyklė, rodanti norimą išėjimą, nėra lygiavertis įrodymas kitai programai, susietai su kita sąsaja, o podėlyje esantys ryšiai gali ilgai naudoti seną kelią po nustatymo pakeitimo. Uždarykite seną sesiją prieš vertindami naują taisyklę. Priešingu atveju testas matuoja praeitį.
Linux lizdų žinynas dokumentuoja SO_BINDTODEVICE ir jo reikalavimus. Pirmiausia perskaitykite pačios programos konfigūraciją, pakartokite paiešką tame pačiame kontekste ir tik tada nuspręskite, ar keisti maršrutą, ar susiejimą.