Politika pagrįstas maršrutizavimas atsako į kitą klausimą nei tas, kurį kelia dauguma trikčių šalinimo užrašų. Pagrindinė lentelė nurodo, kur eina paskirties taškas; politikos taisyklės nurodo, kuri lentelė apskritai tikrinama, ir gali tai nuspręsti pagal šaltinio adresą, paketo žymę, arba sąsają, kuria paketas atvyko. Kai tunelis elgiasi nenuosekliai, taisyklių rinkinys dažnai yra priežastis, o maršrutizavimo lentelė dažnai ne.

Taisyklės pasirenka lentelę, paskui lentelė pasirenka maršrutą

Kiekviena taisyklė turi prioritetą, atitikties sąlygą ir tikslo lentelę. Branduolys eina per taisykles prioriteto tvarka ir sustoja ties pirmu atitikimu, tada atlieka įprastą ilgiausio prefikso paiešką toje lentelėje. Taisyklė, nukreipta į tuščią lentelę, perslenka į tai, ką pasirenka kita taisyklė, ir štai taip kruopščiai parašyta taisyklė gali atrodyti nieko nedaranti.

Štai kodėl pagrindinės lentelės išvedimas retai paaiškina veikiantį VPN klientą. Klientai paprastai įterpia taisykles mažais prioriteto numeriais, gerokai prieš numatytąją pagrindinės lentelės taisyklę, todėl paketas niekada nepasiekia maršruto, į kurį žiūrėjote. Metrikos sumažinimas pagrindinėje lentelėje nieko nekeičia jau nukreiptam srautui.

Taisyklė taip pat gali tyčia paversti prefiksą juoda skyle arba padaryti jį nepasiekiamą. Kai kurie klientai tokią taisyklę prideda kaip saugos jungiklį, ir tada numetimas atrodo kaip sugadintas tunelis, o ne sukonfigūruotas.

Skaitykite taisyklių rinkinį kaip seką, o ne kaip sąrašą

Išveskite taisykles su jų prioritetais ir lentelėmis, į kurias jos nurodo, tada išveskite kiekvieną lentelę, kurioje yra numatytasis arba tunelio maršrutas. Tvarka yra ta dalis, kuri svarbi, ir būtent ją ekrano kopija dažniausiai praleidžia:

ip rule show
ip route show table all | sed -n '1,60p'
ip route get 198.51.100.20 from 10.8.0.2
ip route get 198.51.100.20 from 10.8.0.2 mark 0x1

Paskutinės dvi komandos yra tos, kurios teoriją paverčia stebėjimu, nes jos klausia ką branduolys darytų tam šaltiniui ir tai žymei. Jei atsakymas pasikeičia pasikeitus žymei, veikia žyme pagrįsta taisyklė, ir bet koks testas, praleidžiantis žymę, tikrina kitą paketą. Išorinis ryšys nusipelno savo taisyklės. Tunelis, kuris maršrutizuoja visą srautą per save, turi išskirti galinio taško adresą, prie kurio jungiasi, kitaip užšifruoti paketai siunčiami atgal į tunelį, kurį ką tik paliko. Dauguma klientų tą išskyrimą įterpia automatiškai, o ranka redaguotas taisyklių rinkinys yra vieta, kur jo trūksta.

Žymės ir lizdai: du būdai, kaip klientai dalija srautą

Kai kurie klientai žymi paketus ugniasienėje ir prideda taisyklę, kuri atitinka žymę. Kiti naudoja maršrutizavimą lizdo lygiu ir nustato maršrutą lizdui prieš jam prisijungiant. Pirmasis matomas ip rule išvestyje; antrasis ne, ir jis nepasireikš bendroje paieškoje.

Jei testinė programa elgiasi kitaip nei programa, kurią ji turi atstovauti, patikrinkite, ar programa nustato žymę, ar prisiriša prie įrenginio. Tas skirtumas nėra mįslė, kai mechanizmas pavadintas, ir jis paaiškina, kodėl curl iš apvalkalo ir naršyklės skirtukas toje pačioje mašinoje gali eiti skirtingais keliais. Abi technikos yra politika pagrįstas maršrutizavimas plačiąja prasme: jos pasirenka kelią kuo nors kitu nei paskirties taškas. Nė viena jų neautorizuoja srauto, ir nė viena nepakeičia ugniasienės taisyklių ar kredencialų, kurių tikisi partneris.

Atsekite nuosavybę prieš pridėdami dar vieną taisyklę

Taisykles įdiegia kažkas. VPN klientas, tinklo tvarkytuvė ir ranka parašytas scenarijus kiekvienas gali paleidimo metu pridėti taisyklių, o prisijungimo iš naujo logika gali palikti ankstesnį rinkinį. Dvi pasenusios taisyklės iš ankstesnio profilio ir toliau kreips srautą dar ilgai po to, kai profilis bus ištrintas.

Raskite, kuris procesas valdo taisyklę pagal jos prioritetą ir formą, ir patikrinkite, ar tas savininkas perrašo rinkinį kiekvieno prisijungimo metu. Jei taip, šiandien pridėta rankinė taisyklė išnyks rytoj, o pataisa priklauso kliento konfigūracijai, o ne apvalkalo istorijos failui. Viso taisyklių rinkinio išvalymas testavimui yra viliojantis trumpasis kelias su nuspėjama kaina: jis pašalina ir taisykles, kurių klientui reikia, kad jo paties tunelis veiktų. Trinkite po vieną taisyklę arba testuokite mašinoje, kurią galite paleisti iš naujo.

Įrodykite apimtį dviem srautais, o ne vienu

Pataisa patikrinama tik srautu, kuriam turėtų būti daromas poveikis, ir srautu, kuriam neturėtų. Pasirinkite paskirties tašką, kurį politika nukreipia į tunelį, ir vieną, kuris turi likti lauke, tada palyginkite abiejų paieškas ir užfiksuotus duomenis:

ip route get 198.51.100.20 from 192.0.2.44
ip route get 198.51.100.21 from 192.0.2.44
tcpdump -ni any host 198.51.100.21 and port 443

Kai dvi paieškos grąžina skirtingas sąsajas, taisyklė ką nors daro. Kai jos grąžina tą pačią sąsają, taisyklė atitinka plačiau nei numatyta, ir tai yra gedimas, kuris tyliai siunčia visą potinklį per tunelį, skirtą vienai programai.

Užrašykite taisyklių prioritetus ir juos valdančią paslaugą biliete, kartu su dviem testiniais adresais. Tada kitas žmogus turi atkuriamą porą vietoj simptomo aprašymo ir per minutę gali pasakyti, ar politika pagrįstas maršrutizavimas dar veikia.

Susiję straipsniai