Dohodne povezave do gostitelja, ki poganja tudi odjemalca VPN, spodletijo na zelo poseben način: rokovanje prispe, daemon odgovori, odjemalec pa ne prejme ničesar nazaj. Nič ne blokira vrat. Odgovor je odšel skozi tunel, ker tunel ima privzeto pot in jedro usmerja odgovore po cilju, ne po spominu na to, od kod je zahteva prišla. Ta ena opustitev pojasni vsak naslednji simptom.

Odgovor se usmerja, ne pomni

Odjemalec VPN, ki namesti privzeto pot, doda vnos, ki preseže prehod LAN, bodisi z metriko bodisi z delitvijo prostora na dve natančnejši polovici. Odhodni paketi zdaj izberejo vmesnik tunela. Jedro nikoli ne vpraša, od kod je paket, na katerega se odgovarja, prvotno prispel. Ta ena opustitev pojasni vsak naslednji simptom.

Smer naprej se usmerja po cilju, povratna smer pa tudi. Odgovor je naslovljen na javnega odjemalca, ki ga bo tunel z veseljem prenesel. Oddaljeni konec prejme paket, katerega vira ne poseduje, ga zavrže, prvotni odjemalec pa čaka, dokler čas ne poteče.

Strogo filtriranje povratne poti lahko zavrže dohodni paket, preden ga daemon sploh prebere. Najprej preverite tisti števec, ker zavrženje zaradi filtra in napaka usmerjanja od zunaj izgledata enako.

ip route show default
sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.eth0.rp_filter
nft list ruleset | grep -A3 'hook forward'

Prvi ukaz pokaže, katera privzeta pot trenutno zmaguje. Drugi poroča, ali strogo filtriranje velja globalno ali za vsak vmesnik, tretji pa pokaže katero koli pravilo v verigi posredovanja, ki bi lahko bilo vpleteno.

Trije načini, kako ohraniti povratno pot

Izključitev cilja storitve iz tunela je najožja možnost. Pot gostitelja, usmerjena na prehod LAN, skupaj z daemonom, vezanim na fizični naslov namesto na vse naslove, drži ta en tok zunaj tunela. Sprememba je lokalna in jo je enostavno razveljaviti.

Usmerjanje po politiki je splošen odgovor. Pravilo, vezano na naslov vira ali na oznako požarnega zidu, izbere tabelo, katere privzeta pot kaže na prehod WAN, medtem ko lastne povezave gostitelja še naprej uporabljajo tunel. Ohranite prednost izrecno, da pravilo pozneje ne bo zasenčeno.

ip rule add from 203.0.113.25/32 table 100 priority 100
ip route add default via 192.0.2.1 dev eth0 table 100
ip route get 198.51.100.7 from 203.0.113.25

Prva dva ukaza zgradita nadomestno pot za odgovore z virom v javnem naslovu. Tretji vpraša jedro, katero pot bi izbrala točno ta vir in cilj, in tako potrdite, da ima pravilo kakršen koli učinek.

Pretvorba vira je tretja možnost in edina, ki preživi usmerjevalnik, ki že izvaja NAT pred storitvijo. Odgovor se mora vrniti k temu usmerjevalniku, maskiranje na vmesnik WAN pa to doseže, medtem ko odjemalca skrije iz dnevnikov storitve. Ročna zamenjava privzete poti po povezavi je diagnostika, ker odjemalec tabelo prepiše ob naslednji ponovni povezavi.

Ko škatla usmerja tudi za LAN

Ista okvara se pojavi en skok dlje, ko gostitelj usmerja za naprave za seboj. Dohodna povezava se posreduje notranji napravi, katere edina povratna pot je tunel, odgovor pa doseže zunanjega odjemalca z naslova ponudnika. Notranja naprava ves čas deluje pravilno.

Sledenje povezavam takrat vidi odgovor za tok, ki ga ni nikoli zabeležilo, in ga zavrže. Pretvorba cilja dostavi dohodno povezavo napravi, pretvorba vira pa naredi, da odgovor izgleda, kot da prihaja od samega usmerjevalnika.

Pravilo politike, ki obdrži posredovana vrata na WAN, medtem ko lastni promet usmerjevalnika uporablja tunel, je čistejši ekvivalent. Brez pretvorbe vira je odgovor naslovljen na zunanjega odjemalca in notranja naprava sploh nima poti do tega naslova.

Tri preiskave, ki ločijo vzroke

Izvedite tri preiskave: povezavo v škatlo z interneta, povezavo iz nje do javnega gostitelja in iskanje imena. Ko se prvi dve razhajata, je kriva povratna pot. Ko imena spodletijo v obe smeri, je razreševalnik druga okvara, ki si tunel le deli.

Najprej popravite vprašanje usmerjanja, nato poglejte imena. Mešanje obojega je način, kako je delujoč strežnik obtožen za pokvarjen razreševalnik.

Zapišite, kateri vmesnik imenuje izjema, in hranite konfiguracijo pod nadzorom različic. Pravilo, napisano proti vmesniku, ki se po nadgradnji preimenuje, danes uspe in po naslednjem ponovnem zagonu spodleti.

Sorodni članki