Назад | Перейти на главную страницу

Несколько крючков в цепочке nftables?

Можно ли определить несколько хуков в цепочке nftables или есть какой-либо другой элегантный способ предотвратить дублирование правил внутри (без включения из другого файла)?

table inet raw {
    chain mangle {
        type filter hook { prerouting, input, output, forward } priority -190; policy accept;

        ct state invalid counter drop
    }
}

Нет, базовая цепочка имеет только один крючок в netfilter.

Но в той же таблице вы можете назвать то же самое пользователь цепочка из каждой базовой цепи. Вот пример с дополнительными счетчиками, показывающими их состояние после одного ping -c1 127.0.0.1:

table inet myfilter {
    chain mypreroutingchain {
        type filter hook prerouting priority filter; policy accept;
        counter packets 2 bytes 168
        jump myuserchain
    }

    chain myinput {
        type filter hook input priority filter; policy accept;
        counter packets 2 bytes 168
        jump myuserchain
    }

    chain myforward {
        type filter hook forward priority filter; policy accept;
        counter packets 0 bytes 0
        jump myuserchain
    }

    chain myoutput {
        type filter hook output priority filter; policy accept;
        counter packets 2 bytes 168
        jump myuserchain
    }

    chain mypostrouting {
        type filter hook postrouting priority filter; policy accept;
        counter packets 2 bytes 168
        jump myuserchain
    }

    chain myuserchain {
        oif "lo" counter packets 4 bytes 336
        iif "lo" counter packets 4 bytes 336
        counter packets 8 bytes 672
        ct state invalid counter packets 0 bytes 0 drop
    }
}

та же цепочка пользователей myuserchain был вызван 8 раз на пинг:

исходящий эхо-запрос: из вывод+постмаршрутизация, входящий эхо-запрос от предварительная маршрутизация+ввод, затем снова то же самое с эхо-ответ.