Несколько хуков в цепочке nftables?

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

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

        ct state invalid counter drop
    }
}

1 ответ

Решение

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

Но внутри одной и той же таблицы вы можете вызывать одну и ту же цепочку пользователей из каждой базовой цепочки. Вот пример с дополнительными счетчиками, показывающими их состояние после одного 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 раз для ping:

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

Другие вопросы по тегам