nftables iestatītai atzīmei būtu jānosūta viena trafika klase caur tuneli, bet trafiks turpina iziet pa fizisko saskarni. Noteikumu kopa izskatās pareiza atsevišķi. Parasti ir noticis tas, ka kaut kas cits ierakstīja to pašu atzīmi, vai arī maršrutēšanas noteikums atbilst maskai, kuru jaunā vērtība vairs neapmierina.

Pārbaude 1: izlasiet noteikumu, ar kuru kodols saskan

Sāciet ar politiku, nevis ar ugunsmūri. Kodols pārbauda noteikumus prioritātes secībā, un pirmā sakritība nosaka tabulu. Izlasiet fwmark vērtību un masku no paša noteikuma, pēc tam apstipriniet, ka pakete ar jūsu iestatīto atzīmi tiešām tam atbilst. Noteikums, kas gaida pilnu 32 bitu vērtību, nesaskanēs ar paketi, kurai ir tikai viens bits.

Pēc tam apstipriniet, kuru tabulu šis noteikums izvēlas un kas tajā ir. Noteikums, kas norāda uz tukšu tabulu, rada meklēšanas kļūdu, kas daudzās sistēmās nozīmē, ka pakete nokrīt pie nākamā noteikuma un iziet pa fizisko saskarni.

To izšķir divas komandas: noteikumu saraksts un maršruta meklēšana galamērķim šajā tabulā.

Pārbaude 2: paketes atzīme vai savienojuma atzīme

nftables var iestatīt atzīmi uz paketes un atzīmi uz savienojumu izsekošanas ieraksta, un tie ir dažādi objekti. Paketes atzīme dzīvo paketes apstrādes gaitā, bet savienojuma atzīme saglabājas plūsmai un tā ir apzināti jākopē. Iestatīt vienu un gaidīt otru ir izplatīts puslīdz labojums.

Ja maršrutēšanas noteikums balstās uz paketes atzīmi, savienojuma atzīmes atjaunošana vēlāk ceļā neko nedara šim lēmumam, jo lēmums jau ir pieņemts.

Izlemiet, kuram objektam pieder maršrutēšanas signāls, pēc tam iestatiet to vietā, kur tiek pieņemts maršrutēšanas lēmums.

Pārbaude 3: kas vēl raksta šo atzīmi

Pašu WireGuard rīki atzīmē savas UDP paketes, lai šifrētais transports netiktu maršrutēts atpakaļ tunelī, kuram tas pieder. Ja jūsu noteikumu kopa tai pašai jomai piešķir nesaistītu vērtību, šis izņēmums pazūd, un tuneļa ārējais trafiks mēģina iekļūt pats sevī. Simptoms ir tunelis, kas izveidojas un pēc tam pārstāj laist trafiku.

Atzīmes izmanto arī citi ugunsmūra rīki, konteineru tīkls un politikas maršrutēšana citiem mērķiem, tādēļ divu apakšsistēmu rakstīta visa joma ir konflikts pat tad, ja katra atsevišķi ir pareiza.

Uzskaitiet rakstītājus pirms vēl viena pievienošanas.

Pārbaude 4: maska izlemj, ko jūs paturat

Atzīme ir 32 bitu joma, un maskas ir veids, kā vairāki īpašnieki to dala. Vērtības iestatīšana ar masku saglabā bitus, kas jums nepieder; visas jomas iestatīšana iznīcina visu pārējo bitus. Lasiet masku katrā noteikumā, kas skar jomu, tostarp tajos, kurus neesat rakstījis.

Dokumentējiet bitu sadalījumu blakus noteikumu kopai.

Citādi nākamā persona atkal izmantos vērtību, kurai jau ir īpašnieks, un konflikts šeit izskatās kā maršrutēšanas kļūda, lai gan tā ir adresācijas kļūda. nftables dokumentācija par pakešu metadatiem apraksta pašas atzīmes darbības.

Pārbaude 5: pārbaudiet ar reālu plūsmu, nevis meklēšanu

Vienkārša maršruta meklēšana nenes atzīmi, tāpēc tā var parādīt citu ceļu nekā īstā pakete. Ģenerējiet jums svarīgo trafiku un novērojiet skaitītājus, savienojumu izsekošanas ierakstu un saskarni, pa kuru tas tiešām iziet. Pārbaudiet gan iekļauto, gan izslēgto klasi, jo pārāk plata atzīme salauž izslēgšanu, lai gan izskatās veiksmīga. Ja iekļautā klase darbojas un izslēgtā klase arī nonāk tunelī, atzīme ir pārāk plata, nevis pārāk šaura.

Izvairieties notīrīt savienojumu stāvokli, lai piespiestu atjaunot aktīvas sesijas laikā, jo jaunas un esošas plūsmas var likumīgi iet dažādus ceļus.

Pierakstiet atzīmi, masku un tabulu vienā vietā, un nākamais labojums kļūs pārskatāms.

Saistītie raksti