Polni tunel je ubil vašo sejo SSH: pripnite povratno pot
Polni tunel prestreže odgovore za vašo lastno sejo SSH. Pripnite pot do gostitelja za svoj skrbniški naslov skozi staro prehodno postajo in jo ob ponovni povezavi znova namestite.
Zaženite odjemalca OpenVPN na računalniku, s katerim delate prek SSH, in sredi ukaza seja zamrzne. Tunel poroča, da je povezan, gostitelj lahko prek njega doseže internet, vaši pritiski tipk pa še vedno prihajajo, medtem ko nazaj ne pride nič. Spremenil se ni tunel: spremenila se je povratna pot za pakete, naslovljene na vas, ki zdaj ustreza novi privzeti poti in vstopa v tunel, ki ga oddaljena prehodna postaja ne bo uporabila za pot do vaše mize.
Kaj redirect-gateway dejansko namesti
V svoji obliki def1 redirect-gateway doda 0.0.0.0/1 in 128.0.0.0/1, namesto da bi prepisal privzeto pot. Ti dve polovici pokrivata ves naslovni prostor, obe pa ostaneta daljši predponi od 0.0.0.0/0, zato vsak cilj brez bolj natančnega ujemanja zdaj gre v tunel. To je mehanizem, ki si ga velja zapomniti, ker vsak popravek spodaj deluje tako, da namesti bolj natančno ujemanje.
Vaš skrbniški naslov je eden od teh ciljev.
Strežnik VPN posreduje promet svojih odjemalcev proti internetu. Nima poti za javni naslov, s katerega se povezujete, in nobenega razloga, da bi te pakete obravnaval drugače kot promet, ki prihaja od odjemalca, zato jih zavrže. Medtem je zahteva, ki ste jo poslali, vseeno prispela do gostitelja, zato je seja videti živa le na eni strani.
ip route show table main | head -n 20
ip route get 198.51.100.23Poiščite svoj izvorni naslov in pot pred tunelom
Na strežniku izpišite vzpostavljeno povezavo SSH in zabeležite naslov nasprotnega konca, s katerega je prišla. Ta naslov mora pokriti vaša povratna pot in ni vedno tisto, kar mislite: posredniški gostitelj, prehodna postaja NAT ali operaterjev prevajalnik naslovov lahko podtakne drug vir.
Nato poiščite fizično prehodno postajo in vmesnik, ki sta prenašala promet pred zagonom tunela. V ureditvi def1 je privzeta pot še vedno prisotna pod polprivzetimi potmi, zato so informacije na voljo, čeprav branje dolge usmerjevalne tabele na oko vabi k napakam.
Zapišite obe vrednosti in ime vmesnika skupaj, ker pot, ki jo boste dodali, potrebuje vse tri. Če je gostitelj za izbiro svoje vhodne povezave uporabljal pravilo usmerjanja po pravilniku, se navadna pot morda sploh ne bo upoštevala, in ta možnost spremeni popravek.
Pripnite pot do gostitelja, ki preglasi polprivzete poti
Pot /32 je daljša od katere koli polprivzete poti, zato odgovori na vaš naslov uporabijo njo namesto tunela. Naslednji skok je prehodna postaja pred tunelom, naprava pa je fizični vmesnik, kar ohrani paket na poti, ki jo je uporabljal, preden je tunel obstajal.
ip route add 198.51.100.23/32 via 203.0.113.1 dev eth0Preverite s poizvedbo, ne s pregledovanjem tabele: odgovor mora navesti eth0 in prehodno postajo, nikoli tun0.
OpenVPN že dodaja pot do gostitelja za lastni naslov strežnika VPN iz istega razloga, zato je vzorec znan in je skrbniški naslov preprosto še ena izjema. Ne posegajte po route-nopull, da bi to popravili, ker zavrže potisnjene poti, ki jih tunel potrebuje, vključno z oddaljenim omrežjem in možnostmi DNS.
Poskrbite, da bo preživelo ponovno povezavo
Ročno dodana pot izgine, ko se odjemalec znova poveže in namesti svoje, kar popravek spremeni v ponavljajočo se prekinitev. Ukaz pripnite na nekaj, kar se izvede po namestitvi poti.
Skript route-up ali kavelj pre-up omrežnega upravitelja delujeta oba, zanesljivo preverjanje pa je ponovna povezava, ki ji sledi ista poizvedba.
V sistemu Windows je ustreznik trajna pot, dodana z -p, ki preživi ponovne zagone, a mora po spremembi omrežja še vedno kazati na pravo prehodno postajo. Ne glede na platformo ob pot zapišite razlog: naslednji skrbnik mora vedeti, da obstaja zaradi zaščite seje upravljanja, ne zato, ker bi to zahtevala zasnova omrežja.
Ko pripeta pot še ni dovolj
Filtriranje povratne poti lahko zavrže paket, ki prispe na enem vmesniku in odide na drugem, kar je natanko tisto, kar pripeta pot ustvari. Preden karkoli globalno izklopite, preverite dejansko vrednost rp_filter in raje odpravite asimetrijo, kot da bi preverjanje izklopili. Velja nastavitev za vmesnik, ohlapni način pa asimetrijo pogosto le zabeleži, namesto da bi paket zavrgel. Preberite oboje, preden sklenete, da je kriv filter.
Gostitelji z usmerjanjem po pravilniku potrebujejo pravilo in pot, ker zbirka pravil izbere tabelo, preden se iz nje prebere pot. Pot v glavni tabeli je za tok, ki se ujema s pravilom, usmerjenim v drugo tabelo, nevidna. Preberite pravila, preden karkoli dodate v main. Če pravilo že pokriva promet upravljanja, izjema spada v tabelo tega pravila.
Med preskušanjem imejte odprto konzolo zunaj glavnega kanala in pred odklopom tiste, ki jo uporabljate, to preverite z druge prijave. Pot, ki vaš lastni promet upravljanja pošlje v tunel, prekine povezavo, prek katere jo popravljate. Vrnitev nato pomeni serijsko konzolo ali reševalni zagon, kar je slaba menjava za preskočen korak preverjanja.