Šifrēšana sākas pie robežas, un šī robeža ir maršrutēšanas lēmums, ko galapunkts pieņem pirms jebkuras paketes iekapsulēšanas. Tīkls, kas nekad neredz jūsu atslēgas, tomēr var dot jūsu mašīnai maršrutu, ko tas uzskata par labāku nekā paša tuneļa maršrutu. Šeit tiek sajauktas divas neveiksmes: jau tuneļa iekšpusē esošas paketes lasīšana un tādas paketes novirzīšana, kas tur nekad nav ievietota.

Atšķirība ir svarīga, jo otru neveiksmi ir lētāk sarīkot un daudz vieglāk nepamanīt. Tā izpaužas kā pieprasījums, kas izgājis pa nepareizo saskarni, kamēr klients joprojām ziņoja par veselīgu savienojumu.

Divi veidi, kā tīkls var jūs ietekmēt

Tunelī nonākušas paketes kravnesība ir paslēpta no katra lēciena, ko tā šķērso, un šī aizsardzība saglabājas arī tad, kad ceļš jūs pārsteidz. Pakete, kas tunelī nekad nenonāk, ir parasts pieprasījums no jūsu adreses, nosūtīts tur, kur norādīja maršrutu tabula. Pirmajai neveiksmei vajag salauztu šifru vai kompromitētu partneri, bet otrajai — tikai konfigurācijas ziņojumu, kam jūsu mašīna izlēma uzticēties. Šī asimetrija ir iemesls, kāpēc maršrutēšanas puse ir pelnījusi savu pārbaudi.

Iekārtai uz ceļa nav vajadzīgas jūsu atslēgas, lai ietekmētu otru gadījumu. Tai vajag tikai to, lai jūsu galapunkts pieņemtu maršrutu, risinātāju vai politikas noteikumu, kas tādu rada.

expected:  app -> tunnel device -> encapsulation -> internet
observed:  app -> wlan0        -> plaintext     -> internet

No kurienes maršruts var nākt pirms tuneļa pastāvēšanas

DHCP izdala vairāk nekā adreses nomu. Bezklašu statiskā maršruta opcija var nest galamērķa prefiksus un nākamos lēcienus, un RFC 3442 aplūko nepareizas maršrutētāja adreses drošības sekas: novirzītu datplūsmu, pakalpojuma atteikumu vai uz ceļa apsēdušos novērotāju. Klients, kas pieņem šos maršrutus pirms tuneļa pacelšanas, var palikt ar vēlamo ceļu, kam nav nekāda sakara ar jūsu pakalpojumu sniedzēju.

Neviens no tā nepadara maršrutu ievadīšanu universālu. Klientam jāpieņem opcija, prefiksam jāaptver datplūsma, kas jums svarīga, izvēlētajam nākamajam lēcienam jābūt sasniedzamam, un izpildes politikai jāļauj pakei iziet pa šo ceļu. Noņemiet jebkuru no tiem, un tā pati atbilde kļūst nekaitīga. Tāpēc arī divas mašīnas vienā tīklā var uzvesties atšķirīgi, jo tās nedarbina vienu un to pašu klientu, vienu un to pašu politiku vai pat vienu un to pašu adrešu saimi.

IPv6 ir pelnījis savu piegājienu, jo maršrutētāja paziņojumi noklusējuma maršrutu nes citā kodā nekā DHCPv4 opcija. Tests, kas pārbauda tikai v4 tabulu, to nav aptvēris.

Pārbaudiet ceļu, ko kodols faktiski izvēlas

Maršrutu vaicājumiem ir atbilde, tāpēc jautājiet tiem, nevis spriediet pēc statusa gaismas. Tālāk esošās komandas parāda izvēlēto maršrutu un avotu vienam galamērķim, kā arī noteikumus, kas var pārspēt galveno tabulu. Izpildiet tās savienojuma laikā un vēlreiz pēc atkārtotas savienošanas, jo nomas atjaunošana var mainīt atbildi.

ip route get 203.0.113.10
ip route show table all | grep -E '^(default|203\.0\.113)'
ip rule show
resolvectl query example.com

Izvadē meklējiet divas lietas: maršrutā nosaukto saskarni un izvēlēto avota adresi. Tuneļa maršruts nosauc tuneļa ierīci, noplūdušais maršruts — fizisko, un atšķirība ir redzama, neko neatšifrējot. Ja atbilde mainās starp izpildēm, saglabājiet abus izvadus un salīdziniet noteikumus, kas tos radīja.

Neapstājieties pie noklusējuma maršruta. Lietotnes izņēmums, sadalītā tuneļa prefikss vai otrs politikas noteikums var aiznest konkrētu galamērķi ap tuneli, kamēr noklusējums joprojām rāda uz iekšu.

Izlemiet, kur jādzīvo izpildei

Trīs nosacījumi izlemj, vai izpilde klienta pusē ir pietiekama, vai jums vajag kaut ko ārpus tās. Ja klients instalē un aizstāv maršrutus katrai adrešu saimei, ko lietojat, tunelis, kam pieder noklusējums, parasti ir pietiekams. Ja mašīnai jāsasniedz vietējie resursi, kamēr viss pārējais paliek tunelī, šie izņēmumi ir jāuzskaita un jāpārvalda, nevis jāatstāj tam, ko paziņoja piekļuves tīkls. Un ja platforma var piesaistīt datplūsmu saskarnei katrai lietotnei, šī piesaiste ir spēcīgāka garantija nekā maršruts, ko jebkas var pārspēt.

Ko vien izvēlaties, pierakstiet lēmumu tur, kur dzīvo konfigurācija. Noteikums, kas pastāv tāpēc, ka kāds to ierakstīja incidenta laikā, nepārdzīvos nākamo pārstartēšanu, tāpēc turiet vietējos izņēmumus un startēšanas izņēmumus šaurus un pierakstiet, kāpēc katrs pastāv.

Pēc katras klienta atjaunināšanas un katras tīkla izmaiņas atkārtoti izpildiet meklēšanas komandas un salīdziniet ar pēdējo reģistrēto izvadi. Maršrutu tabula ir izpildes robeža, tāpēc izturieties pret to kā pret tādu.

Saistītie raksti