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