Шпаргалка по nftables

nftables - это инструменту для фильтрации пакетов в Linux, пришедшему на смену iptables.

1. Запуск

nft list ruleset               # Показать все правила
nft add table ip filter        # Создать таблицу filter для IPv4
nft add chain ip filter input  # Создать цепочку input в таблице filter

2. Добавление правил
- Принять пакеты от локального хоста:
nft add rule ip filter input ip saddr 127.0.0.1 accept

- Блокировать входящий трафик на порт 80:
nft add rule ip filter input tcp dport 80 drop

- Разрешить весь исходящий трафик:
nft add rule ip filter output accept

3. Удаление
nft delete rule ip filter input handle <номер>  # Удалить правило по handle
nft delete chain ip filter input               # Удалить цепочку input
nft delete table ip filter                     # Удалить таблицу filter

4. Сохранение и загрузка конфигурации
nft list ruleset > /etc/nftables.conf          # Сохранить правила
nft -f /etc/nftables.conf                      # Загрузить правила из файла

5. Создание логирования
nft add rule ip filter input log prefix "IN: " level debug

Типы объектов
1. Таблицы (tables) – В nftables таблицы служат для организации правил. Каждая таблица привязывается к семейству (например, ip, ip6).
2. Цепочки (chains) – Цепочки представляют собой наборы правил. Основные встроенные цепочки: input, output, forward.
3. Правила (rules) – Условия и действия, выполняемые на пакетах, такие как accept, drop, reject, log.

Основные операторы
- accept – Разрешить пакет.
- drop – Заблокировать пакет.
- reject – Отклонить с ответом.
- log – Вести лог пакетов.

Примеры сложных правил
1. Ограничение скорости (rate limiting):
nft add rule ip filter input limit rate 5/second accept

2. Использование сетов для IP-адресов:
nft add set ip filter blacklist { type ipv4_addr; }
nft add rule ip filter input ip saddr @blacklist drop
nft add element ip filter blacklist { 192.168.1.1, 10.0.0.0/8 }

3. Redirect на другой порт:
nft add rule ip nat prerouting tcp dport 80 redirect to 8080

- Используйте nft monitor для слежения за изменениями правил в реальном времени.
- Включайте логирование при тестировании правил для отладки (log prefix "TEST: ").
- nftables имеет более гибкий синтаксис, чем iptables, и поддерживает более сложные условия и комбинации.