Понимание Linux nftables Command #
nftables command — мощный инструмент межсетевого экрана Linux, который заменяет iptables, ip6tables, arptables и ebtables. С унифицированным синтаксисом, nftables упрощает фильтрацию сетевых пакетов, NAT и другие расширенные сетевые конфигурации. Команда работает с nft утилита, которая взаимодействует с подсистемой ядра netfilter для управления сетевыми правилами.
Базовый синтаксис и структура nft Command #
nft Команда обычно имеет следующую структуру:
nft [OPTIONS] COMMAND
- ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ: Флаги как
-a(показать маркеры правил) или-j(вывод в формате JSON). - КОМАНДА: Конкретное действие, такое как
add,delete,listилиflush, используемый для управления таблицами, цепочками или правилами.
nft Таблица командных шпаргалок #
| Command | Описание |
nft list tables |
Список всех таблиц |
nft add table inet filter |
Создайте новую таблицу с именем filter в inet семья |
nft delete table inet filter |
Удалите filter стол в inet семья |
nft list ruleset |
Перечислите все таблицы, цепочки и правила в удобном для чтения формате. |
nft flush ruleset |
Удалить все таблицы, цепочки и правила (очистить весь набор правил) |
nft add chain inet filter input { type filter hook input priority 0; } |
Добавьте input цепь к filter стол с input крючок |
nft add rule inet filter input tcp dport 22 accept |
Принимать входящий SSH-трафик на порту 22 |
nft delete rule inet filter input handle <handle_number> |
Удалить правило в input цепочка, указав дескриптор правила |
nft add rule inet filter forward counter |
Добавьте встречное правило к forward цепь для мониторинга трафика |
Добавление и управление таблицами #
In nftables, таблицы — это контейнеры для цепочек и правил. Вот как их создавать и управлять ими:
Создать таблицу #
nft add table inet my_table
Эта команда создает новую таблицу с именем my_table в inet семейство, которое поддерживает как IPv4, так и IPv6.
Удалить таблицу #
nft delete table inet my_table
Удаляет my_table из inet семьи.
Цепи в nftables #
Цепочки — это последовательности правил, которые определяют, как обрабатываются пакеты. Каждая цепочка имеет определенный hook, который определяет стадию фильтрации пакетов (например, input, output или forward).
Создать цепочку #
nft add chain inet my_table my_chain { type filter hook input priority 0; }
Это создает input цепь в my_table для фильтрации пакетов с приоритетом 0.
Удалить цепочку #
nft delete chain inet my_table my_chain
Удаляет my_chain от my_table.
Правила в nftables #
Правила определяют действия для пакетов, которые соответствуют определенным условиям. Ниже приведены примеры добавления, перечисления и удаления правил.
Добавление правил #
nft add rule inet my_table my_chain tcp dport 80 accept
Это правило разрешает трафик через TCP-порт 80 (HTTP).
Правила листинга #
nft list chain inet my_table my_chain
Отображает все правила в my_chain.
Удаление правил #
nft delete rule inet my_table my_chain handle <handle_number>
Удаляет правило, указывая его номер дескриптора, который можно отобразить с помощью nft list chain inet my_table my_chain -a.
Пример nftables Конфигурация: базовая настройка брандмауэра #
Вот базовая конфигурация брандмауэра, которая разрешает входящий трафик SSH и HTTP/HTTPS, блокируя весь остальной трафик:
nft add table inet filter nft add chain inet filter input { type filter hook input priority 0\; policy drop\; } nft add rule inet filter input tcp dport 22 accept # Разрешить SSH nft add rule inet filter input tcp dport 80 accept # Разрешить HTTP nft add rule inet filter input tcp dport 443 accept # Разрешить HTTPS nft add rule inet filter input ct state installed,related accept # Разрешить установленные соединения
Дополнительно: правила с отслеживанием состояния и подключения #
nftables имеет встроенную поддержку отслеживания подключений, что позволяет управлять правилами с учетом состояния.
Пример: разрешить связанные и установленные соединения #
nft add rule inet filter input ct state established,related accept
Это позволяет пропускать пакеты из уже установленных или связанных с существующими подключений, помогая сократить ненужную повторную обработку ранее разрешенных подключений.
Резюме #
nftables Команда — это современный и универсальный инструмент для фильтрации сетевых пакетов, предоставляющий унифицированный синтаксис и гибкие возможности управления правилами брандмауэра. С nftablesвы можете создавать эффективные и удобные в обслуживании конфигурации межсетевого экрана, подходящие как для простых установок, так и для сложных корпоративных сред.