nftables: įterpkite VPN leidimo taisyklę prieš drop rankenėlę
„nftables“ komandos insert ir add talpina taisyklę priešingose rankenėlės pusėse. Raskite drop, pasirinkite pusę, tada patikrinkite failą prieš keičiant taisyklių rinkinį.
Įdėkite leidimo taisyklę į netinkamą vietą ir ji elgiasi taip, tarsi leidimo taisyklės nebūtų. „nftables“ pasirinkimas tarp insert ir add nulemia, kurioje nurodytos taisyklės pusėje atsidurs naujas teiginys, o rankenėlė įvardija taisyklę gyvame taisyklių rinkinyje, o ne jos eilutės numerį. Jei vieta neteisinga, paketas pirmiausia pasiekia drop.
Toliau pateiktas palyginimas naudoja vieną fiksuotą partnerį ir vieną išorinio klausytojo mainus. Jis sąmoningai siauras; visos grandinės pakeitimas yra kitas pakeitimas su kitu rizikos profiliu.
Dvi vietos, du skirtingi rezultatai
insert įterpia taisyklę prieš nurodytą taisyklę. add įterpia ją po jos. Jei nurodyta taisyklė yra galutinis srauto drop, šios dvi komandos duoda priešingus rezultatus, net kai taisyklės tekstas identiškas.
Vietos praleidimas turi savo numatytąjį elgesį, ir tai dar viena priežastis nekopinėti komandos iš forumo neskaičius, prie ko ji prirakinta. Prikabinimas yra visas sprendimas. Užsirašykite numatytąją pusę prieš rašydami komandą. Faile insert ir add skiriasi vienu žodžiu.
Vieta yra santykinė į taisyklę konkrečioje grandinėje. To paties teiginio perkėlimas į kitą grandinę ar kitą hook prioritetą pakeičia, kokius paketus jis mato, net kai taisyklės sintaksė atrodo teisinga.
Rankenėlė identifikuoja taisyklę, o ne eilutės numerį
Tokia rankenėlė kaip 42 yra identifikatorius dabartinėje taisyklių rinkinio būsenoje. Tai ne keturiasdešimt antroji taisyklė ir ji nėra stabili tarp hostų, perstatymų ar valdytojo, kuris iš naujo įkelia savo konfigūraciją.
Prieš rinkdamiesi prikabinimą raskite grandinę ir tikrąjį galutinį drop. Tada patvirtinkite tos taisyklės rankenėlę tame pačiame sąraše, kuriame rodomas drop, kad numeris ir taisyklė būtų skaitomi kartu. Rankenėlė, perskaityta iš seno sąrašo, jau gali priklausyti kitai taisyklei. Perskaitykite ją iš naujo sesijoje, kuri taikys pakeitimą.
iptables --version
nft -a list ruleset
iptables versija nurodo, kokia sistema naudojama. iptables-nft taisyklių rinkinys ir savarankiškai valdoma vietinė lentelė gali egzistuoti kartu, todėl sąrašas iš vienos sąsajos automatiškai nėra visas filtravimo vaizdas. Prieš rinkdamiesi grandinę patikrinkite abu vaizdus.
Raskite grandinę ir taisyklę, kuri iš tikrųjų atlieka drop
Perskaitykite input hook, grandinės prioritetą ir taisyklę, kuri atmeta šį klausytojo srautą. inet lentelė gali turėti abi adresų šeimas, bet atskira taisyklė vis tiek gali atitikti tik IPv4.
Paimkite vieną patvirtintą partnerį, kaip pavyzdį naudodami 198.51.100.25 iš dokumentacijos diapazono. Peržiūrėtas vietinis failas galėtų įdėti išorinį leidimą prieš rankenėlę 42:
insert rule inet filter input handle 42 iifname "eth0" ip saddr 198.51.100.25 udp dport { 500, 4500 } counter accept
Po patikrinimo pakeiskite šeimą, lentelę, grandinę, rankenėlę, įvesties sąsają ir partnerį. Pavyzdys naudoja rankenėlės vietos formą, dokumentuotą nft 1.0.9, ir ji priklauso įvesties failui; riestinių skliaustų citavimas yra atskiras klausimas, kai komanda rašoma interaktyviai.
Laikykite konfigūracijos savininką aiškų. Valdytojas, kuris perstato savo taisykles, gali perrašyti vykdymo metu atliktą pakeitimą, o paleidimo scenarijus, kuriame standžiai įrašyta pasenusi rankenėlė, arba nepavyks, arba prisikabins prie netinkamos taisyklės.
Leidimas yra ribotas, drop yra galutinis
Leidimo sprendimas baigia vertinimą savo dabartiniame kelyje, bet vėliau taikoma bazinė grandinė vis tiek gali atmesti paketą. Drop sprendimas yra galutinis. Štai kodėl augantis leidimų skaitiklis nėra įrodymas, kad srautas pavyko.
Tikrinkite visus svarbius hook prioritetus, o ne vieną grandinę atskirai. Paketas gali praeiti input filtrą ir vis tiek būti atmestas kitos lentelės hook kito prioriteto. Išvardykite kiekvieną bazinę grandinę, kuri gali matyti srautą.
Ta taisyklė apima tik išorinio klausytojo mainus. Transporto inkapsuliuotas ESP, vietinis ESP, IPv6 partneriai ir tunelio viduje iššifruotas srautas visiems reikia savo politikų. Tai nėra visiškas svetainės VPN užkarda.
Patikrinkite failą, tada patvirtinkite gyvą rezultatą
Prieš taikydami paleiskite sintaksės ir operacijos patikrinimą peržiūrėtame faile. Tikrinimo režimas praneša, ar nft gali išanalizuoti ir paruošti pakeitimą; jis jo netaiko ir neįrodo, kad kitas hook leis paketą. Failas lieka pasiūlymu, kol savininkas jį pritaikys:
nft -c -f reviewed-vpn-rule.nft
Taikykite per kontroliuojamą savininko procesą ir išsaugokite atkūrimo prieigą. Jei taisyklė neteisinga, drop, kurį bandėte aplenkti, gali nukirpti ir kelią, kuriuo ją taisote.
Po pakeitimo stebėkite naują leisto partnerio bandymą ir patikrinkite, kad šaltiniai už patvirtinto partnerio ribų vis dar atmetami. Perkelkite ilgalaikę taisyklę į tą valdytoją, kuriam priklauso taisyklių rinkinys, nes vykdymo metu rankenėlės lokalizuoja dabartinius objektus, o ne identifikuoja juos tarp paleidimų.