Vnorená VPN: ktorý tunel nesie vonkajšie spojenie?
Vnútorný tunel potrebuje vonkajšiu cestu k svojmu koncovému bodu. Dvaja klienti spustení v nesprávnom poradí vytvoria konflikt trás, takže najprv oprav vnorenie.
Dvaja klienti VPN bežiaci súčasne nevytvárajú vnorený tunel; vytvárajú dva tunely a hádku o smerovaní. Vnorený tunel existuje, keď je spojenie vnútorného klienta s vlastným serverom samo nesené vonkajším tunelom, a to je usporiadanie, ktoré sa stavia zámerne. Ak to vyjde, vnútorný server vidí adresu vonkajšieho servera; ak nie, jeden klient sa ticho pripojí znova okolo druhého. O tom, či je vnorenie skutočné alebo náhodné, rozhodujú tri podmienky.
O vnorení rozhodujú tri podmienky
Prvá je, ktorý koncový bod potrebuje ktorú cestu. Pomenuj adresu vnútorného servera, pomenuj adresu vonkajšieho servera a výslovne uveď, že vnútorný server je dostupný len cez vonkajší tunel. Všetko ostatné z tej vety plynie, vrátane toho, ktoré trasy patria do ktorej tabuľky.
Druhá je, či cestu vidíš na každej vrstve. Ak sa nemôžeš jadra opýtať, ktorú trasu by konkrétny cieľ použil, odvodzuješ reťaz z konečnej výstupnej IP, a to je práve ten dôkaz, ktorý nedokáže rozlíšiť vnorenie od náhody.
Tretia je, čo sa stane, keď vonkajší tunel spadne. Vnútorný tunel sa s ním môže zastaviť, pripojiť sa znova cez bežnú sieť alebo zostať zablokovaný, kým sa vonkajšia cesta nevráti, a všetky tri sú obhájiteľné politiky. Nie sú to rovnaké politiky a predvolené správanie väčšiny klientov je tá druhá. Klient, ktorý znova pripojí svoj koncový bod cez fyzickú sieť, zatiaľ čo ukazuje zdravé spojenie, je najčastejší spôsob, akým sa zamýšľaný reťaz ticho stane dvoma nesúvisiacimi tunelmi.
Podmienka jedna: ktorý koncový bod potrebuje ktorú cestu
ip route get 203.0.113.10 na tú otázku odpovedá priamo: vypíše trasu, zdrojovú adresu a rozhranie, ktoré by jadro pre daný cieľ práve teraz použilo.
Spusti to pre vnútorný server pred štartom vnútorného klienta a potom znova po ňom, a porovnaj. Ak sa odpoveď zmení z fyzického rozhrania na rozhranie vonkajšieho tunela, je vnorenie v tej chvíli skutočné. Ak sa nezmení, vnútorný klient sa pripája priamo, nech panel hovorí čokoľvek. Zopakuj to pre adresu vonkajšieho servera, ktorá sa stále musí prekladať cez fyzické rozhranie, pretože trasa, ktorá rekurzívne zachytí oba koncové body, je porucha, ktorá stroj úplne odpojí od siete.
Podmienka dva: preskúmaj cestu na každej vrstve
Výber trasy je na modernom klientovi viac než hlavná tabuľka. Pravidlá politiky môžu posielať označené pakety do inej tabuľky, klient môže svoj socket pripútať k rozhraniu a kontajner alebo menný priestor má vlastné tabuľky. ip rule a ip route show table all sú spôsob, ako zistiť, ktorý z týchto mechanizmov je v hre.
Klient, ktorý nastavuje SO_MARK na vlastnom sockete alebo je nakonfigurovaný na pripútanie ku konkrétnemu zariadeniu, obchádza predvolenú trasu, o ktorej si myslel, že si ju zariadil. To je funkcia, nie chyba, a znamená to, že jediná spoľahlivá kontrola je tá, ktorá beží v tom istom mennom priestore ako klient. Ak klienti bežia v kontajneroch, spúšťaj kontroly v tých kontajneroch, nie na hostiteľovi.
Podmienka tri: čo sa stane, keď vonkajší tunel spadne
Správanie pri poruche vyžaduje rozhodnutie, nie predvolenú hodnotu. Zapíš, čo sa má stať s vnútorným tunelom, keď vonkajší zmizne, a potom to nechaj klientov robiť.
Možnosti sú konkrétne. Zastavenie vnútorného klienta, keď vonkajšia cesta zmizne, dáva čistý reťaz a zjavný výpadok. Nechať ho pripojiť sa priamo dáva dostupnosť a ticho odstraňuje vlastnosť, pre ktorú bol reťaz postavený. Blokovať do návratu vonkajšej cesty je najprísnejšie a prevádzkovo najotravnejšie, pretože každé zakolísanie vonkajšieho tunela sa stane viditeľnou udalosťou.
Otestuj všetky tri s neškodnou premávkou a zámernou poruchou vonkajšieho tunela, pretože čítanie konfigurácie ti nepovie, ktorú máš. Zabi vonkajší tunel, sleduj, čo robí vnútorný klient, a skontroluj trasu znova, kým je dole. Potom vonkajší tunel vráť a potvrď, že sa reťaz znova vytvorí, namiesto toho, aby vnútorný klient zostal na priamej ceste, ktorú si medzitým vybral.
Čo ti reťaz nedá
Ďalšie vrstvy pridávajú koncové body, kľúče a režimy porúch; nepridávajú žiadnu záruku anonymity a nespôsobujú, že vonkajší operátor nemôže vidieť, že tunel existuje. Každé tvrdenie o tom, pred čím vnorenie chráni, musí pomenovať pozorovateľa, pred ktorým chráni.
Výstupom je krátky dokument, nie fungujúce spojenie: ktorý koncový bod používa ktorú cestu, čo sa stane pri vonkajšej poruche a tri príkazy, ktoré ukazujú aktuálny stav. Dokumentácia strongSwan o preposielaní je užitočný odkaz na to, ako sa tunelová premávka preposiela medzi rozhraniami na hostiteľovi Linux. Spúšťaj kontroly znova po každej aktualizácii klienta, pretože predvolené hodnoty, ktoré vytvorili tvoj reťaz, nie sú zmluva. Vnorený tunel, ktorý nemôžeš preskúmať, je fáma so stavovou kontrolkou.