Įeinantys ryšiai į prieglobos serverį, kuriame taip pat veikia VPN klientas, nepavyksta labai specifiškai: rankos paspaudimas ateina, tarnyba atsako, o klientas nieko negauna atgal. Niekas neblokuoja prievado. Atsakymas išėjo per tunelį, nes tunelis valdo numatytąjį maršrutą, o branduolys maršrutizuoja atsakymus pagal paskirties vietą, o ne pagal atmintį, iš kur atėjo užklausa. Tas vienintelis praleidimas paaiškina kiekvieną tolesnį požymį.

Atsakymas maršrutizuojamas, o ne prisimenamas

VPN klientas, įdiegiantis numatytąjį maršrutą, prideda įrašą, kuris pranoksta LAN tinklų sietuvą – arba metrika, arba padalijant erdvę į dvi tikslesnes puses. Išeinantys paketai dabar renkasi tunelio sąsają. Branduolys niekada neklausia, iš kur iš pradžių atvyko paketas, į kurį atsakoma. Tas vienintelis praleidimas paaiškina kiekvieną tolesnį požymį.

Tiesioginė kryptis maršrutizuojama pagal paskirties vietą, o atvirkštinė – taip pat. Atsakymas adresuotas viešajam klientui, kurį tunelis mielai perneš. Tolimasis galas gauna paketą, kurio šaltinio jis neturi, jį išmeta, o pirminis klientas laukia, kol baigsis laikas.

Griežtas atvirkštinio kelio filtravimas gali numesti įeinantį paketą dar prieš tarnybai jį perskaičius. Pirmiausia patikrinkite tą skaitiklį, nes filtro numetimas ir maršrutizavimo klaida iš išorės atrodo vienodai.

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

Pirmoji komanda parodo, kuris numatytasis maršrutas dabar laimi. Antroji praneša, ar griežtas filtravimas taikomas visuotinai, ar kiekvienai sąsajai, o trečioji parodo bet kurią persiuntimo grandinės taisyklę, kuri gali būti susijusi.

Trys būdai išsaugoti grįžimo kelią

Paslaugos paskirties vietos pašalinimas iš tunelio yra siauriausias variantas. Prieglobos maršrutas, nukreiptas į LAN tinklų sietuvą, kartu su tarnyba, susieta su fiziniu adresu, o ne visais adresais, išlaiko tą vieną srautą už tunelio ribų. Pakeitimas yra vietinis ir lengvai atšaukiamas.

Politika pagrįstas maršrutizavimas yra bendras atsakymas. Taisyklė, susieta su šaltinio adresu arba ugniasienės žyma, parenka lentelę, kurios numatytasis maršrutas rodo į WAN tinklų sietuvą, o paties prieglobos ryšiai toliau naudoja tunelį. Laikykite prioritetą aiškų, kad taisyklės vėliau nebūtų galima užgožti.

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

Pirmosios dvi komandos sukuria alternatyvų kelią atsakymams, kurių šaltinis yra viešasis adresas. Trečioji klausia branduolio, kokį kelią pasirinktų būtent tas šaltinis ir paskirties vieta, ir taip patvirtinate, kad taisyklė turi kokį nors poveikį.

Šaltinio vertimas yra trečiasis variantas ir vienintelis, kuris išlieka prieš maršrutizatorių, jau atliekantį NAT prieš paslaugą. Atsakymas turi grįžti į tą maršrutizatorių, o maskavimas į WAN sąsają tai pasiekia ir paslepia klientą nuo paslaugos žurnalų. Numatytuosius maršrutus keisti rankiniu būdu po prisijungimo yra diagnostika, nes klientas perrašo lentelę per kitą prisijungimą.

Kai dėžė maršrutizuoja ir LAN

Ta pati klaida pasirodo vienu šuoliu toliau, kai priegloba maršrutizuoja už jo esantiems įrenginiams. Įeinantis ryšys persiunčiamas vidiniam įrenginiui, kurio vienintelis grįžimo kelias yra tunelis, o atsakymas pasiekia išorinį klientą iš teikėjo adreso. Vidinė įranga visą laiką veikia teisingai.

Tada ryšių sekimas pamato atsakymą srautui, kurio niekada neužfiksavo, ir jį numeta. Paskirties vertimas pristato įeinantį ryšį įrenginiui, o šaltinio vertimas leidžia atsakymui atrodyti lyg jis kiltų iš paties maršrutizatoriaus.

Politikos maršrutas, laikantis persiunčiamą prievadą WAN tinkle, o paties maršrutizatoriaus srautas naudojantis tunelį, yra tvarkingesnis atitikmuo. Be šaltinio vertimo atsakymas adresuojamas išoriniam klientui, o vidinis įrenginys apskritai neturi maršruto tam adresui.

Trys zondai, atskiriantys priežastis

Atlikite tris zondus: ryšį į dėžę iš interneto, ryšį iš jos į viešą prieglobą ir vardo paiešką. Kai pirmieji du nesutampa, kaltas grįžimo kelias. Kai vardai nepavyksta abiem kryptimis, sprendėjas yra kita gedimas, kuris tik dalijasi tuneliu.

Pirmiausia sutvarkykite maršrutizavimo klausimą, tada žiūrėkite vardus. Sumaišyti abu yra būdas apkaltinti veikiantį serverį dėl sugedusio sprendėjo.

Užsirašykite, kurią sąsają įvardija išimtis, ir laikykite konfigūraciją versijų kontrolėje. Taisyklė, parašyta sąsajai, kuri po atnaujinimo pervadinama, šiandien praeina ir nepavyksta po kito paleidimo.

Susiję straipsniai