Nftables вместо кучи исключений
Задача была простая: закрыть снаружи порты, которые слушают сервисы на loopback, но при этом не сломать docker, который держит свои цепочки. Решение — отдельная таблица со своим hook'ом:
table inet backend {
chain drop_external {
type filter hook input priority -10; policy accept;
iifname != "lo" tcp dport { 2398, 8888 } drop
}
}
Приоритет -10 ставит правило раньше докеровских цепочек,
а отдельная таблица не мешает docker перечитывать свои.
Удаляется так же легко, как добавляется: nft delete table.
Проверять снаружи, а не с самого сервера — с localhost правило честно не срабатывает, и легко решить, что оно не работает.