Ознака постављена у nftables-у треба да пошаље једну класу саобраћаја кроз тунел, а саобраћај и даље излази кроз физички интерфејс. Скуп правила изгледа исправно изоловано. Обично се догодило то да је нешто друго уписало исту ознаку, или да правило рутирања одговара маски коју нова вредност више не задовољава.

Провера 1: прочитајте правило са којим се језгро подудара

Почните од правила политике, а не од заштитног зида. Језгро прегледа правила по редоследу приоритета и прво подударање одлучује о табели. Прочитајте вредност fwmark и маску из самог правила, затим потврдите да се пакет са ознаком коју сте поставили заиста подудара са њим. Правило које очекује пуну 32-битну вредност неће се подударати са пакетом који носи само један бит.

Затим потврдите коју табелу то правило бира и шта табела садржи. Правило које показује на празну табелу производи неуспешну претрагу, што на многим системима значи да пакет пропада до следећег правила и излази кроз физички интерфејс.

Две команде то решавају: листа правила и претрага руте за одредиште у тој табели.

Провера 2: ознака пакета или ознака везе

nftables може да постави ознаку на пакет и ознаку на запис праћења веза, а то су различити објекти. Ознака пакета живи током пролаза обраде пакета, док ознака везе остаје за ток и мора намерно да се копира. Поставити једну и очекивати другу честа је половична поправка.

Ако правило рутирања зависи од ознаке пакета, враћање ознаке везе касније на путу не чини ништа за ту одлуку, јер је одлука већ донета.

Одредите који објекат поседује сигнал рутирања, затим га поставите на месту где се доноси одлука о рутирању.

Провера 3: ко још уписује ту ознаку

Сопствени алати WireGuard-а означавају своје UDP пакете како се шифровани транспорт не би рутирао назад у тунел коме припада. Ако ваш скуп правила додељује неповезану вредност истом пољу, то изузимање нестаје и спољашњи саобраћај тунела покушава да уђе у себе. Симптом је тунел који се успостави и затим престане да пропушта саобраћај.

Ознаке користе и други алати заштитног зида, контејнерско умрежавање и рутирање по политици у друге сврхе, па је уписивање целог поља од стране два подсистема сукоб чак и када је сваки појединачно исправан.

Попишите записиваче пре него што додате још један.

Провера 4: маска одлучује шта задржавате

Ознака је 32-битно поље, а маске су начин на који га више власника дели. Постављање вредности са маском чува битове које не поседујете; постављање целог поља уништава туђе. Прочитајте маску у сваком правилу које дира поље, укључујући она која нисте написали.

Документујте расподелу битова поред скупа правила.

Иначе ће следећа особа поново употребити вредност која већ има власника, а сукоб овде изгледа као грешка у рутирању док је заправо грешка у адресирању. nftables документација о метаподацима пакета описује саме операције са ознакама.

Провера 5: проверите стварним током, а не претрагом

Обична претрага руте не носи ознаку, па може да покаже другачији пут од стварног пакета. Генеришите саобраћај који вас занима и посматрајте бројаче, запис праћења веза и интерфејс кроз који заиста излази. Тестирајте и укључену и искључену класу, јер преширока ознака квари изузимање док изгледа успешно. Ако укључена класа ради, а искључена класа такође улази у тунел, ознака је преширока, а не преуска.

Избегавајте брисање стања веза да бисте присилили освежавање током живе сесије, јер нови и постојећи токови могу легално да иду различитим путевима.

Забележите ознаку, маску и табелу на једном месту, па следећа измена постаје прегледна.

Повезани чланци