С помощью iptables я могу изменить, например, политику INPUT с помощью iptables -P INPUT DROP
уронить. Есть ли возможность сделать то же самое с nft
?
Редактирование /etc/nftables.conf
конечно будет работать, но я не этого хочу.
Да, вы можете переопределить политику уже существующей базовой цепочки, не изменяя ее содержание. Для этого нет отдельного ключевого слова, это все еще add
:
nft add chain family mytable mychain '{ policy drop; }'
Полный пример в пространстве имен:
test.nft
:
flush ruleset
table ip t {
chain c {
type filter hook output priority 0; policy accept;
oif lo accept
counter
}
}
настроить:
# ip netns add test
# ip netns exec test nft -f test.nft
внесение изменений:
# ip netns exec test nft add 'chain ip t c { policy drop; }'
# ip netns exec test nft list ruleset
table ip t {
chain c {
type filter hook output priority filter; policy drop;
oif "lo" accept
counter packets 0 bytes 0
}
}
Политика была изменена без изменения правил. Здесь используются nft 0.9.5 и ядро 5.7.x. В зависимости от версии поведение может отличаться.
Есть коммит ядра с 2015 года позволяя делать только это:
netfilter: nf_tables: позволяет изменять политику цепочки без перехвата, если он существует
Если существует базовая цепочка, мы должны разрешить изменение политики по умолчанию без указания информации о ловушке.
Однако, если цепочка не существует, мы должны обеспечить наличие атрибута hook.
Подписано: Пабло Нейра Аюсо pablo@netfilter.org
Перед этим (около ядра 4.1) нужно было снова предоставить определение базовой цепочки (которое, кстати, нельзя изменить):
# ip netns exec test nft add 'chain ip t c { type filter hook output priority 0; policy drop; }'