Kāpēc serveris aiz VPN klienta atbild caur tuneli
Ienākošie savienojumi neizdodas, ja atbildes seko VPN noklusējuma maršrutam, nevis pienākšanas ceļam. Politikas maršrutēšana vai avota NAT atjauno atgriešanās ceļu.
Ienākošie savienojumi uz saimnieku, kas arī darbina VPN klientu, neizdodas ļoti specifiski: rokasspiediens pienāk, dēmons atbild, un klients neko nesaņem atpakaļ. Nekas nebloķē portu. Atbilde izgāja caur tuneli, jo tunelim pieder noklusējuma maršruts un kodols maršrutē atbildes pēc galamērķa, nevis pēc atmiņas par to, no kurienes pieprasījums nāca. Šis vienīgais izlaidums izskaidro katru nākamo simptomu.
Atbilde tiek maršrutēta, nevis atcerēta
VPN klients, kas instalē noklusējuma maršrutu, pievieno ierakstu, kas pārspēj LAN vārteju — vai nu ar metriku, vai sadalot telpu divās precīzākās daļās. Izejošie paketi tagad izvēlas tuneļa saskarni. Kodols nekad nejautā, no kurienes sākotnēji ieradās pakete, uz kuru tiek atbildēts. Šis vienīgais izlaidums izskaidro katru nākamo simptomu.
Uz priekšu virziens tiek maršrutēts pēc galamērķa, un arī pretējais virziens. Atbilde ir adresēta publiskam klientam, ko tunelis labprāt pārvadās. Tālā puse saņem paketi, kuras avots tai nepieder, to izmet, un sākotnējais klients gaida, līdz laiks beidzas.
Stingra pretējā ceļa filtrēšana var nomest ienākošo paketi, pirms dēmons to vispār izlasa. Vispirms pārbaudiet šo skaitītāju, jo filtra nomešana un maršrutēšanas kļūda no ārpuses izskatās vienādi.
ip route show default sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.eth0.rp_filter nft list ruleset | grep -A3 'hook forward'
Pirmā komanda parāda, kurš noklusējuma maršruts šobrīd uzvar. Otrā ziņo, vai stingrā filtrēšana attiecas globāli vai uz katru saskarni, un trešā parāda jebkuru pārsūtīšanas ķēdes noteikumu, kas varētu būt iesaistīts.
Trīs veidi, kā saglabāt atgriešanās ceļu
Pakalpojuma galamērķa izslēgšana no tuneļa ir šaurākais variants. Saimnieka maršruts, kas vērsts uz LAN vārteju, kopā ar dēmonu, kas piesaistīts fiziskajai adresei, nevis visām adresēm, notur šo vienu plūsmu ārpus tuneļa. Izmaiņas ir vietējas un viegli atceļamas.
Politikas maršrutēšana ir vispārējā atbilde. Noteikums, kas piesaistīts avota adresei vai ugunsmūra atzīmei, izvēlas tabulu, kuras noklusējums norāda uz WAN vārteju, kamēr paša saimnieka savienojumi turpina izmantot tuneli. Turiet prioritāti skaidru, lai noteikumu vēlāk nevarētu aizēnot.
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
Pirmās divas komandas veido alternatīvo ceļu atbildēm, kuru avots ir publiskā adrese. Trešā jautā kodolam, kādu ceļu izvēlētos tieši šis avots un galamērķis, un tā jūs apstiprināt, ka noteikumam ir kāda ietekme.
Avota tulkošana ir trešais variants un vienīgais, kas iztur maršrutētāju, kurš jau veic NAT pakalpojuma priekšā. Atbildei jāatgriežas pie šī maršrutētāja, un maskēšana uz WAN saskarni to panāk, vienlaikus slēpjot klientu no pakalpojuma žurnāliem. Noklusējuma maršruta manuāla aizstāšana pēc savienojuma ir diagnostika, jo klients pārraksta tabulu nākamajā atkārtotajā savienojumā.
Kad kaste maršrutē arī LAN
Tā pati kļūme parādās vienu lēcienu tālāk, kad saimnieks maršrutē ierīcēm aiz sevis. Ienākošais savienojums tiek pārsūtīts uz iekšēju ierīci, kuras vienīgais atgriešanās ceļš ir tunelis, un atbilde sasniedz ārējo klientu no pakalpojumu sniedzēja adreses. Iekšējā ierīce visu laiku darbojas pareizi.
Tad savienojumu izsekošana ierauga atbildi plūsmai, ko tā nekad nav reģistrējusi, un to nomet. Galamērķa tulkošana piegādā ienākošo savienojumu ierīcei, un avota tulkošana liek atbildei izskatīties tā, it kā tā nāktu no paša maršrutētāja.
Politikas maršruts, kas notur pārsūtīto portu WAN, kamēr paša maršrutētāja trafiks izmanto tuneli, ir tīrākais ekvivalents. Bez avota tulkošanas atbilde ir adresēta ārējam klientam, un iekšējai ierīcei šai adresei vispār nav maršruta.
Trīs pārbaudes, kas atdala cēloņus
Veiciet trīs pārbaudes: savienojumu uz kasti no interneta, savienojumu no tās uz publisku saimnieku un vārda meklēšanu. Ja pirmie divi nesakrīt, vainīgs ir atgriešanās ceļš. Ja vārdi neizdodas abos virzienos, risinātājs ir cita kļūme, kas tikai dala tuneli.
Vispirms salabojiet maršrutēšanas jautājumu, tad skatieties uz vārdiem. Abu sajaukšana ir veids, kā strādājošu serveri vaino bojātā risinātājā.
Pierakstiet, kuru saskarni nosauc izņēmums, un turiet konfigurāciju versiju kontrolē. Noteikums, kas rakstīts pret saskarni, kura pēc jauninājuma tiek pārdēvēta, šodien iztur un neizdodas pēc nākamās pārstartēšanas.