Skaidytas tunelis yra maršrutizavimo politika, išreikšta taisyklių rinkiniu, ir klientas tėra tai, kas jas įdiegia. Atskyrimas vyksta dviejose vietose: atitikimo taisyklės, parenkančios kelią kiekvienam paketui, ir susiejimai, laikantys programą viename sąsajos taške, ką bebūtų sakoma lentelėje. Nuo to, kokiu mechanizmu remiasi jūsų klientas, priklauso dauguma žmonių pranešamų netikėtumų.

Politika, kurią galite išdėstyti vienoje eilutėje, yra patikrinama. Politika, apibūdinta kaip spartesnis naršymas, tokia nėra, ir nepasakys, kurią taisyklę keisti, kai užklausa pasuka netinkamu keliu.

Klientas įdiegia taisykles, branduolys padaro pasirinkimą

Kai tunelis pakyla, klientas prideda maršrutus ir dažnai politines taisykles į tą pačią lentelę, kurią naudoja kitos jūsų sąsajos. Tada kiekvienas paketas pasiekia paiešką, kuri palygina jo paskirties vietą su kiekvienu kandidatiniu prefiksu ir palieka tiksliausią atitikimą, o prioritetas išsprendžia lygiąsias tarp taisyklių, nukreiptų į skirtingas lenteles. Niekas toje paieškoje nežino, kad paketas atkeliavo iš naršyklės kortelės, o ne iš atsarginės kopijos užduoties. Laiminti taisyklė yra ta, kuri nustato kelią, ir ją galite perskaityti prieš ir po pakeitimo.

Štai kodėl skaidytas tunelis gali atrodyti savavališkas. Dvi paskirties vietos vienoje programoje gali eiti skirtingais keliais vien todėl, kad vienas prefiksas siauresnis už kitą.

Tas pats pasirinkimas egzistuoja kiekvienoje platformoje, nors pavadinimai keičiasi. Windows stumia sprendimą į savo filtrų platformą, Android per savo VPN paslaugą atskleidžia leidžiamų programų sąrašą, o macOS pritvirtina tunelį prie įrenginio, kuris vis dar paklūsta maršrutizavimo lentelei. Microsoft maršrutizavimo pastabos vertos perskaityti Windows atveju, o vienai platformai parašytas vadovas retai perkeliamas nepakeistas į kitą.

Susiejimas pagal programą ir paskirties prefiksai yra skirtingi įrankiai

Paskirties politika klausia, kur paketas eina, ir konsultuojasi su maršrutų lentele ar politine taisykle. Politika pagal programą klausia, kuri programa atidarė lizdą, ir platforma laiko tą programą tunelio sąsajoje net tada, kai konkretesnis maršrutas rodo kitur. Antroji stipresnė, nes išgyvena lentelės pakeitimus, bet apima tik tuos procesus, kuriuos platforma gali priskirti. Pagalbinis procesas, įterpta naršyklė ar paslauga, atidaranti savo ryšį, gali nepaveldėti susiejimo, kurį manėte.

Nė vienas iš dviejų metodų neišgyvena vardais pagrįstos politikos be pagalbos. Didelių svetainių adresai sukasi tarp turinio tinklų, todėl prikalus pagrindinio kompiuterio vardą prie kelių prefiksų sukuriama taisyklė, kuri tyliai nustoja atitikti. Politikai, kuri turi sekti vardus, reikia resolverį suprantančio komponento, o ne statinio maršruto.

DNS ir saugos jungiklis laikosi savo taisyklių

Vardų sprendimas yra atskiras sprendimas nuo paketų maršrutizavimo, ir skaidytas tunelis paprastai nori dviejų resolverių: įmonės vidiniams vardams, vietinio viskam kitam. Klientas gali įdiegti DNS nustatymus pagal sąsają, perduoti užklausas tarpiniam resolveriui arba palikti sistemos numatytąjį nepaliestą. Naršyklė su savo šifruotu resolveriu apeina visus tris išdėstymus. Išbandykite užklausą, o ne manykite, kad resolveris sekė maršrutu.

Saugos jungiklis prideda filtrą viršuje, ir tas filtras ne visada atskiria numatytą išimtį nuo atsitiktinio nutekėjimo. Vieni klientai blokuoja viską už tunelio, kiti leidžia politikos deklaruotas išimtis, tad perskaitykite, kokį elgesį įgyvendina jūsiškis, prieš pasikliaudami kuriuo nors iš jų.

Patikrinkite atskyrimą iš abiejų pusių

Išbandykite įtrauktą kelią ir pašalintą kelią atskirai, o rezultatą vertinkite pagal sąsajos pavadinimą, o ne pagal viešą adresą. Šios komandos daro prielaidą, kad Linux pagrindinis kompiuteris jau turi pakeltą tunelio įrenginį. Pakeiskite 203.0.113.10 paskirties vieta, kurią jūsų politika maršrutizuoja į vidų, o 198.51.100.25 – ta, kurią ji siunčia į išorę.

ip route get 203.0.113.10
ip route get 198.51.100.25
resolvectl query intranet.example.com
curl -s --interface tun0 https://example.com -o /dev/null -w '%{http_code}\n'

Skaitykite pirmuosius du atsakymus kartu, nes kiekviename nurodyta sąsaja parodo, ar atskyrimas įdėjo tą paskirties vietą į tunelį. Resolverio užklausa parodo, kuris serveris atsakė į vidinį vardą, o paskutinė komanda įrodo, kad tunelio įrenginys apskritai gali pernešti užklausą. Pirmai eilutei pavykus, o antrai nepavykus, politika daro būtent tai, kas jai buvo liepta.

Pakartokite rinkinį po prisijungimo iš naujo ir po tinklo pakeitimo. Nuomos atnaujinimas ir sąsajų kaita yra tos vietos, kur atskyrimas nustoja atitikti tikslą, kuriam buvo pastatytas, o kiekvieno paleidimo išsaugota išvestis padaro nuokrypį akivaizdų.

Susiję straipsniai