Pilns tunelis nogalināja tavu SSH sesiju: piespraud atgriešanās maršrutu
Pilns tunelis pārtver arī atbildes uz tavu pašu SSH sesiju. Piespraud hosta maršrutu savai administrācijas adresei caur veco vārteju un pārinstalē to atkārtotas savienošanās laikā.
Palaid OpenVPN klientu mašīnā, kurā strādā pa SSH, un komandas vidū sesija iesalst. Tunelis ziņo, ka ir savienots, resursdators caur to sasniedz internetu, un tavas taustiņu nospiedumi joprojām pienāk, kamēr nekas neatgriežas. Izmainījies nav tunelis: tas ir atgriešanās ceļš paketēm, kas adresētas tev, un tas tagad atbilst jaunajam noklusējuma maršrutam un ieiet tunelī, kuru attālinātā vārteja neizmantos, lai sasniegtu tavu darbvirsmu.
Ko redirect-gateway patiesībā instalē
Savā def1 formā redirect-gateway tas pievieno 0.0.0.0/1 un 128.0.0.0/1 tā vietā, lai pārrakstītu noklusējuma maršrutu. Šīs abas puses nosedz visu adrešu telpu, un abas paliek garāki prefiksi nekā 0.0.0.0/0, tāpēc jebkurš galamērķis bez konkrētākas atbilstības tagad nonāk tunelī. Tas ir mehānisms, ko vērts atcerēties, jo katrs labojums zemāk darbojas, instalējot konkrētāku atbilstību.
Tava administrācijas adrese ir viens no šiem galamērķiem.
VPN serveris pārsūta savu klientu datplūsmu uz internetu. Tam nav maršruta uz publisko adresi, no kuras tu savienojies, un nav pamata šos paketes uzskatīt par ko citu kā datplūsmu, kas nāk no klienta, tāpēc tas tās izmet. Tikmēr tavs nosūtītais pieprasījums tomēr sasniedza resursdatoru, un tāpēc sesija izskatās dzīva tikai no vienas puses.
ip route show table main | head -n 20
ip route get 198.51.100.23Atrodi savu avota adresi un ceļu pirms tuneļa
Serverī uzskaiti izveidoto SSH savienojumu un pieraksti vienaudža adresi, no kuras tas nāca. Tieši šī adrese ir jāsedz tavai atgriešanās maršrutam, un tā ne vienmēr ir tā, ko tu domā: lēkšanas resursdators, NAT vārteja vai operatora tulkotājs var ievietot citu avotu.
Pēc tam atrodi fizisko vārteju un saskarni, kas nesa datplūsmu pirms tuneļa sākuma. def1 izkārtojumā noklusējuma maršruts joprojām atrodas zem pusnoklusējuma maršrutiem, tāpēc informācija ir pieejama, lai gan garas maršrutu tabulas lasīšana ar aci aicina uz kļūdām.
Pieraksti abas vērtības un saskarnes nosaukumu kopā, jo maršrutam, ko tūlīt pievienosi, vajadzīgi visi trīs. Ja resursdators izmantoja politikas maršrutēšanas noteikumu, lai izvēlētos savu augšupējo savienojumu, vienkāršs maršruts var netikt apskatīts vispār, un šī iespēja maina labojumu.
Piespraud hosta maršrutu, kas pārspēj pusnoklusējuma maršrutus
Viens /32 maršruts ir garāks par jebkuru no diviem pusnoklusējuma maršrutiem, tāpēc atbildes uz tavu adresi izvēlas to, nevis tuneli. Nākamais lēciens ir vārteja pirms tuneļa, un ierīce ir fiziskā saskarne, kas notur paketi ceļā, ko tā izmantoja pirms tuneļa pastāvēšanas.
ip route add 198.51.100.23/32 via 203.0.113.1 dev eth0Pārbaudi ar meklējumu, nevis apskatot tabulu: atbildei jānosauc eth0 un vārteja, nekad tun0.
OpenVPN jau pievieno hosta maršrutu uz paša VPN servera adresi tā paša iemesla dēļ, tāpēc shēma ir pazīstama un administrācijas adrese ir vienkārši vēl viens izņēmums. Nelieto route-nopull šī labošanai, jo tas izmet virzītos maršrutus, kas tunelim vajadzīgi, tostarp attālināto tīklu un DNS opcijas.
Panāc, lai tas pārdzīvo atkārtotu savienošanos
Ar roku pievienots maršruts pazūd, kad klients atkal savienojas un instalē savējo, kas labojumu pārvērš atkārtotā pārtraukumā. Piesaisti komandu kaut kam, kas darbojas pēc maršrutu instalēšanas.
Gan route-up skripts, gan tīkla pārvaldnieka pre-up āķis darbojas, un uzticamā pārbaude ir atkārtota savienošanās un pēc tam tas pats meklējums.
Windows gadījumā ekvivalents ir pastāvīgs maršruts, kas pievienots ar -p, kas pārdzīvo pārstartēšanu, bet pēc tīkla maiņas tomēr jānorāda uz pareizo vārteju. Neatkarīgi no platformas, ieraksti iemeslu blakus maršrutam: nākamajam administratoram jāzina, ka tas pastāv, lai aizsargātu pārvaldības sesiju, nevis tāpēc, ka to prasīja tīkla dizains.
Kad piesprausts maršruts joprojām nav pietiekams
Apgrieztā ceļa filtrēšana var izmest paketi, kas ienāk pa vienu saskarni un iziet pa citu, un tieši to rada piesprausts maršruts. Pirms kaut ko atslēgt globāli, pārbaudi faktisko rp_filter vērtību, un labāk izlabo asimetriju, nevis izslēdz pārbaudi. Piemērojams ir iestatījums katrai saskarnei, un loose režīms bieži vien tikai reģistrē asimetriju, nevis izmet paketi. Izlasi abus, pirms secini, ka filtrs ir tavs vaina.
Resursdatoriem ar politikas maršrutēšanu vajadzīgs noteikums līdzās maršrutam, jo noteikumu bāze izvēlas tabulu, pirms tiek apskatīts tajā esošais maršruts. Maršruts main tabulā ir neredzams plūsmai, kas atbilst noteikumam, kurš norāda uz citu tabulu. Izlasi noteikumus, pirms kaut ko pievieno main. Ja noteikums jau sedz pārvaldības datplūsmu, izņēmums pieder pie šī noteikuma tabulas.
Testēšanas laikā turi atvērtu ārpusjoslas konsoli un pirms tās atvienošanas, kuru lieto, vēlreiz pārbaudi no otras pieteikšanās. Maršruts, kas tavu paša pārvaldības datplūsmu sūta tunelī, pārtrauc savienojumu, pa kuru tu to labo. Toreiz atgriezties nozīmē sērijveida konsoli vai glābšanas palaišanu, kas ir slikts darījums par viena pārbaudes soļa izlaišanu.