TH · записки

К оглавлению

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 правило честно не срабатывает, и легко решить, что оно не работает.