Centos 8 nftables настройка
Nftables - это новый программный продукт, который стремиться изменить существующий подход к фильтрации пакетов. До данного пакета работа с пакетами в сети осуществлялась с помощью утилит (iptables, ip6tables, arptables, entables). Данный framework доступен с версии ядра Linux 3.13 и позволяет запускать команды со старым синтаксисом iptables. По умолчанию же используется новый синтаксис построения команд. В основном используются такие понятия, как наборы, также для правил используют карты и конкатенации (склейки).
В сегодняшней статье мы разберемся как пользоваться nftables. Этот программный продукт позволяет отфильтровывать как каждый пакет, так и поток данных, выполнять NAT трансляцию, регистрировать подозрительную активность в трафике. При создании наборов правил следует избегать дублирования настроек. Nftables позволяет фильтровать и регистрировать одновременно трафик IPv4 и IPv6, благодаря новому семейству правил inet.
Основы nftables
Перед тем как мы перейдем к разбору того, как выполняется настройка iptables, разберемся с основными понятиями.
Набор (set) - множество похожих по смыслу значений для ключей правил, объединенных общим именем или конструкцией, состоящей из скобок. Позволяет описывать словари и карты. Позволяет обходиться одним правилом в том случае, где в iptables пришлось бы использовать цепочку правил. Например:
Карта (maps) - карта используется для сопоставления обрабатываемой информации с правилом на основе пар значение - ключ. Создание карт основано на использовании инфраструктуры наборов (set). Существует два типа карт - точные карты (literal maps) и карты присяжных (verdict maps). Мы рассмотрим только точные карты.
Точные карты - это набор пар (sets) критерий_совпадения: действие. Например:
nft add rule ip nat prerouting dnat tcp dport map
Это правило с помощью карты осуществляет перенаправление (DNAT) с порта TCP назначения 80 на IP-адрес назначения 192.168.1.100, а с порта 8888 - на IP-адрес 192.168.1.101.
Интервалы (intervals) - описываются с помощью синтаксической конструкции значение-значение Интервал обозначает указание диапазона значений. Например: 192.168.1.0-192.168.1.105 обозначает диапазон IP-адресов 1-1023 обозначает диапазон портов интернет-протокола. Вот пример соответствующего правила:
nft add rule inet table1 chain_input ip daddr 192.168.0.1-192.168.0.105 drop
Данное правило указывает отбрасывать все пакеты для семейства правил inet в таблице table1 в цепочке chain_input с IPv4 адресом назначения от 192.168.0.1 до 192.168.0.105
Основные различия с iptables
- Синтаксис Iptables построен таким образом, что ключам правил всегда предшествует двойное или одинарное тире. В отличии от этого, nftables использует другой синтаксис, перенятый у tcpdump.
- В iptables вы получаете сразу готовое количество таблиц с фиксированным набором уже настроенных в них цепочек правил. Что приводило к потерям производительности из-за существования неиспользуемых цепочек. В nftables таблицы и цепочки полностью настраиваются.
- В nftables выражения это базовый строительный блок правила. В связи с этим правило представляет собой последовательность с выражениями, которые выполняются последовательно слева направо.
- В nftables можно указать несколько действий в одном правиле.
- Нет по умолчанию счетчика цепочек и правил. Вы можете включить его по желанию.
- Лучшая поддержка обновления правил в процессе работы.
- Возможность одновременного администрирования стеков IPv4 и IPv6 благодаря новому семейству inet, позволяющему регистрировать цепочки правил, видящие одновременно трафик обоих стеков протоколов.
- Генерация наборов и карт инфраструктуры. Это новая возможность, позволяет использовать дополнительные конфигурации, такие как словари, карты и интервалы, для достижения ориентированной на производительность классификации пакетов.
- Поддержка конкатенаций (склеек). Начиная с ядра Linux 4.1, вы можете объединять несколько различных ключей и комбинировать их со словарями и картами. Идея состоит в построении цветка значений, хеширующихся для получения высокой производительности при выполнении правил.
- Подключения поддержки новых протоколов без обновления ядра. Для обновления nftables практически всегда достаточно обновления самого пакета, без каких-либо лишних действий.
Структуры для хранения правил nftables
В целом всё похоже на iptables:
- Таблицы - содержат ссылку на контейнеры цепочек правил.
- Цепочка - содержит наборы правил, выполняемых в порядке очереди
- Правило - семантическая конструкция, позволяющая выбрать действия, которые нужно осуществить с описываемым правилом набором данных
Семьи nftables (families)
Вся инфраструктура nftables предназначена для работы с различными семействами адресов (families) разных протоколов (IPv4, IPv6, ARP, MAC). Ранее для обработки разных семейств адресов использовались разные утилиты - iptables, ip6tables, arptables, ebtables. Теперь с помощью введения понятия семейства обработка происходит в рамках одного программного продукта. На текущий момент существуют следующие семейства:
- ip - таблицы этого семейства будут видеть трафик (пакеты) протокола IPv4;
- ip6 - таблицы этого семейства будут видеть трафик (пакеты) протокола IPv6;
- inet - в таблицах этого семейства будет обрабатываться трафик (пакеты) протоколов IPv4 и IPv6. Правила для ipv4 не будут влиять на пакеты IPv6. Правила, подходящие под оба протокола, будут влиять на пакеты обоих протоколов;
- arp - таблицы этого семейства видят трафик arp - протокола;
- bridge - в таблицах будут видеться пакеты, коммутируемые на уровне L2 OSI. Это семейство аналог ebtables;
- netdev - это семейство, аналогов которого нет в x_tables. Оно видит все пакеты, которые только были переданы драйвером в стек протоколов.
Установка nftables
В некоторых дистрибутивах nftables уже установлен (RedHat 8, CentOS 8) по умолчанию. В Debian 10.2 установка производится очень просто:
sudo apt-get install nftables
Примеры использования nftables
Теперь рассмотрим примеры nftables. Команда nft – это утилита администрирования фреймворком nftables при управлении потоками данных. Именно с помощью неё выполняется настройка nftables. Использует при работе интерфейс командной строки. Позволяет создавать новые правила nftables, удалять старые и просматривать уже созданные цепочки и таблицы правил.
1. Создание таблицы в nftables
При создании таблицы (table) должно быть определено семейство (family) адресов. Например, давайте создадим таблицу с именем, test_table, которая отрабатывает одновременно пакеты IPv4 и IPv6:
sudo nft add table inet test_table
Создание цепочки в nftables
Цепочки (chain) являются контейнерами для правил. Существуют два типа цепочек:
Базовые цепочки (base chain) - можно использовать в качестве точки входа для пакетов из стека протоколов.
Регулярные цепочки (regular chain) - можно использовать с действием jump цель. Применяют для лучшей организации множества правил. При создании цепочки следует учитывать, что таблица, в которую мы хотим добавить цепочку, должна уже существовать.
sudo nft add chain inet [ таблица ] [ цепочка ]
sudo nft add chain inet test_table test_chain
Примечание: чтобы командный интерпретатор не интерпретировал ; как конец команды необходимо экранировать точку с запятой следующим образом \;
Эта цепочка фильтрует входящие пакеты. Приоритет (priority) задает порядок, в котором nftables обрабатывает цепочки с одинаковым значением hook. Параметр policy устанавливает действие по умолчанию для правил в этой цепочке. В данном случае мы установили действие accept (принимать пакет).
3. Добавление правила
Добавить правило (rule) в настраиваемую конфигурацию можно с помощью следующей синтаксической конструкции:
sudo nft add rule [ family ] [ table ] [ chain ] [ expression ] [ action ]
sudo nft add rule inet table1 chain_input ip saddr 8.8.8.8 drop
Данное правило добавляется в таблицу с именем table1 в цепочку chain_input и отбрасывает пакеты с ip-адресом источника отправления 8.8.8.8.
4. Удаление правила
Для удаления правила nftables используется команда со следующим синтаксисом:
sudo nft delete rule [ family ] [ table ] [ chain ] handle [ number ]
sudo nft delete rule inet table1 chain_input handle 3
5. Удаление цепочки
Цепочка удаляется с помощью следующей команды:
sudo nft delete chain [ family ] [ table ] [ chain ]
sudo nft delete chain inet table1 chain_input
6. Удаление таблицы
Таблицу можно удалить с конструкции со следующим синтаксисом:
sudo nft delete table [ family ] [ table ]
sudo nft delete table inet table1
Выводы
Сегодня мы познакомились с современным инструментом для редактирования правил брандмауэра. А также разобрались как выполняется настройка Nftables в Debian 10. Nftables вводит много новых семантических конструкций для более грамотной организации правил — set, map, family. Также данный пакет содержит много усовершенствований по сравнению с набором утилит для брандмауэра x_tables. В рамках этой статьи мы познакомились с инструментом nft, используемым для управления всем множеством правил межсетевого экрана.
Поскольку по умолчанию nftables не содержит никаких таблиц и цепочек, мы научились создавать наши первые таблицы и цепочки для всего множества правил нашего межсетевого экрана. Теперь мы умеем устанавливать приоритет для обработки подмножеств правил в цепочке, задавать действие по умолчанию для правил в созданной цепочке. Кроме того, мы научились добавлять правила. Так как структура таблиц и цепочек в nftables настраивается произвольно, то мы научились удалять цепочки и таблицы.
Нет похожих записей
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Администраторы, и пользователи интересующиеся, об nftables скорее всего ранее слышали уже не раз. Проект был анонсирован в 2008, затем была предварительная версия, чуть позже прослойка совместимости с iptables, и вот в начале 2014, nftables был включен в основную ветку ядра 3.13.
Установка nftables.
Пока что, его нет по умолчанию в дистрибутиве, так что поставим. Вместе с этим, поставим и утилиту, которая позволит нам транслировать правила iptables в nftables:
И запускаем в работу:
Немного теории.
Совсем немного. Своеобразный конспект. Описывая правила для обработки пакетов мы можем управлять:
- Правилами. Непосредственно то, с помощью чего мы описываем как будут обрабатываться пакеты.
- Инструкциями (Statements). Определяют что будет сделано с пакетом, который попал под определённое условие или правило. Здесь доступны accept, drop, reject, queue, return, jump, goto, continue.
Работа с nftables.
Рассмотрим базовый пример с открытием и закрытием порта с помощью nftables. Допустим, у нас есть сервис, который работает на 80 порте. Мы сперва ограничим доступ к нему, а затем откроем его вновь.
1. Для начала, создадим таблицу:
Проверим что она появилась у нас:
2. Теперь добавим цепочку:
И посмотрим что изменилось:
3. Добавим правило, которым ограничим доступ к 80 порту:
Опять посмотрим на изменения:
4. Логично предположить, что для открытия порта нам нужно выполнить:
Но получить доступ к 80 порту после этого нам не удастся, и если мы заглянем в список правил, будет понятно почему:
Нам нужно удалить правило с drop, для этого мы обращаем внимание на отметку handle 2 в выводе, и с её помощью удаляем запрещающее правило:
Проверяем текущее состояние:
И без проблем получаем доступ к 80 порту нашего сервера.
5. Если мы хотим полной очистки, то выполняем:
Транлсяция правил из iptables.
Для того, что бы быстро перевести имеющееся iptables правило в nft формат, можно воспользоваться утилитой iptables-translate. Работает она очень просто:
Т. е. мы просто вводим правило, и получаем его аналог, который можем использовать в nftables.
Nftables и firewalld.
По примерам конкретных правил для nft мы пройдём отдельно, в будущих заметках.
CentOS 8 уже запущен, вы все еще используете iptables, пришло время использовать nftables брандмауэра следующего поколения! .
Что такое nftables?
nftables Новая инфраструктура фильтрации пакетов, предназначенная для замены текущей iptables Новая структура фильтрации пакетов. nftables Родился в 2008 году, слит в конце 2013 года Ядро Linux ,Из Linux ядро 3.13 Версия начинается в большинстве сценариев nftables Это уже доступно, но полная поддержка (т.е. nftables Приоритет над iptables ) Должно быть в ядре Linux 3.15 версия.
nftables Предназначен для решения существующих tables Много ограничений инструмента. По отношению к старому iptables , nftables К наиболее привлекательным функциям относятся: улучшенная производительность, поддержка справочных таблиц, обновление правил транзакций, автоматическое применение всех правил и т. Д.
nftables В основном он состоит из трех компонентов: реализация ядра, libnl netlink Связь и nftables Пространство пользователя. Ядро обеспечивает netlink Оценка конфигурации интерфейса и набора правил выполнения, libnl Содержит основные функции для взаимодействия с ядром, пользовательское пространство может быть введено с помощью недавно представленного инструмента командной строки nft Взаимодействовать с пользователем.
nft Данные могут быть обменены путем хранения и загрузки в регистры. Другими словами, его грамматика и iptables разные. но nft Вы можете использовать выражение, предоставленное ядром, для имитации старого iptables Команда для поддержания большей гибкости при сохранении совместимости. Проще говоря, nft Да iptables И его производные ( ip6tables с участием arptables ) Суперсет.
Особенности nftables
nftables Имеет некоторые расширенные возможности, подобные языку программирования, такие как: определение переменных и включение внешних файлов, то есть возможность использовать дополнительные сценарии. nftables Его также можно использовать для фильтрации и обработки нескольких адресных кластеров.
Отличный от iptables , nftables Он не содержит встроенных таблиц, и администратор должен решить, какие таблицы необходимы и какие правила обработки добавить в эти таблицы.
Таблица содержит цепочки правил, которые содержат правила.
Преимущества nftables по сравнению с iptables
В iptables Добавление правила к нему будет очень медленным по мере увеличения количества правил. Эта ситуация nftables Его больше не существует, потому что nftables Используйте атомарные быстрые операции для обновления наборов правил.
Использовать iptables В то же время для каждого совпадения или доставки требуется поддержка модуля ядра. Поэтому, если вы что-то забыли или добавили новые функции, вам нужно перекомпилировать ядро. Пока в nftables Это уже не так, потому что в nftables Большая часть работы выполняется в пользовательском режиме, и ядро знает только некоторые базовые инструкции (фильтрация осуществляется с помощью псевдосостояния). Например, icmpv6 Поддержка через nft Простое исправление инструмента, в то время как iptables Для этого типа изменений требуется ядро и iptables Все можно обновить.
Основные операции nftables
nftables с участием iptables Точно так же он состоит из таблиц, цепочек и правил. Таблицы содержат цепочки, а цепочки содержат правила. Правила - это реальные действия.
В nftables В таблице находится контейнер цепи. Так что начните использовать nftables Когда вам сначала нужно сделать это добавить хотя бы одну таблицу. Затем вы можете добавить цепочку к своей таблице, а затем добавить правила в цепочку.
Управление таблицами nftables
против iptables Таблица в другом, nftables Там нет встроенной таблицы в. Количество и название таблиц определяются пользователем. Однако каждая таблица имеет только один адресный кластер и применима только к пакетам данных кластера. nftables Таблица может быть указана как один из следующих пяти кластеров:
кластер nftables | Инструмент командной строки, соответствующий iptables |
---|---|
ip | iptables |
ip6 | ip6tables |
inet | iptables и ip6tables |
arp | arptables |
bridge | ebtables |
ip (Т.е. IPv4) является кластером по умолчанию, если кластер не указан, кластер используется. Если вы хотите создать IPv4 с участием IPv6 Правила, пожалуйста, используйте inet Кластер. inet Разрешить объединение ip с участием ip6 Кластеры, чтобы упростить определение правил.
Примечание: inet Не может быть использован nat Тип цепи, можно использовать только для filter Тип цепочки.
Давайте взглянем nftables Как происходит управление таблицей, следующее nftables Основной синтаксис команды для создания таблиц.
Здесь мы можем создать inet Возьмите кластерную таблицу в качестве примера, чтобы продемонстрировать, как создавать и управлять новой таблицей.
В Red Hat Enterprise Linux 8 приоритетным низкоуровневым решением является nftables. В этой статье мы поговорим о том, как начать использовать nftables. Наиболее актуальной она будет для системных администраторов и DevOps-специалистов. Там, где это имеет смысл, мы поговорим о различиях между nftables и его предшественником — iptables.
Для начала необходимо отметить, что nftables – это userland-утилита, nft и подсистема ядра. Внутри ядра она строится на базе подсистемы netfilter. В этой статье мы будем говорить о взаимодействии пользователя с утилитой nft.
Здесь вы найдете примеры команд, которые сможете протестировать на машине. Они будут полезны для лучшего понимания содержания.
Примечание: в этой статье некоторые выходные данные могут быть достаточно длинными, поэтому мы сократим или уберем бесполезные или несущественные части вывода.
Начнем
Итак, как будет выглядеть настройка nftables по-умолчанию? Давайте выясним, выведя весь набор правил.
В результате мы получим… ничего. Ладно, это не очень интересно. О чем это говорит?
По умолчанию nftables не создает таблицы и цепочки, в отличие от своего предшественника iptables. Пустой набор правил имеет нулевую стоимость ресурсов. Для сравнения, вспомните iptables, где каждая предварительно созданная таблица и цепочка должны были учитываться, а базовые счетчики пакетов увеличивались, даже если в них было пусто.
Создание таблиц
В nftables вам понадобится создавать таблицы вручную. Таблицы должны определять семейство: ip, ip6, inet, arp, bridge или netdev. Здесь inet означает, что таблица будет обрабатывать пакеты ipv4 и ipv6. Именно это семейство мы и будем использовать в статье.
Примечание: Для тех, кто переходит с iptables, термин таблица может звучать неоднозначно. В nftables таблица – просто пространство имен, ни больше, ни меньше. По сути, она представляет из себя набор цепочек, правил, наборов и иных объектов.
Давайте создадим нашу первую таблицу и перечислим набор правил.
Отлично, теперь у нас есть таблица, но сама по себе она мало что дает. Давайте перейдем к цепочкам.
Создание цепочек
Цепочки – объекты, которые будут содержать правила брандмауэра.
По аналогии с таблицами, цепочки также нужно создавать вручную. При создании цепочки необходимо указать, к какой таблице она относится, а также тип, хук и приоритет. В этом руководстве мы не будем ничего усложнять и используем filter, input, и priority 0 для фильтрации пакетов, предназначенных для хоста.
Примечание: Обратный слэш () нужен, чтобы shell не интерпретировал скобку как конец команды.
Цепочки также могут быть созданы без указания хука. Созданные таким образом цепочки эквиваленты цепочкам, созданным пользователями в iptables. Правила могут использовать операторы jump или goto для выполнения правил в цепочке. Эта механика полезна для логического разделения правил или для того, чтобы делиться подмножеством правил, которые в противном случае продублировались бы.
Создание правил
Теперь, когда вы создали таблицу и цепочку, вы можете, наконец, добавить правила для брандмауэра. Давайте добавим правило для разрешения SSH.
Здесь следует отметить, что как только мы добавили его в таблицу семейства inet, это единственное правило будет обрабатывать как пакеты IPv4, так и пакеты IPv6.
Глагол add будет добавлять правило в конец цепочки. Также вы можете использовать глагол insert, чтобы добавить правило в начало цепочки.
Мы добавили два правила, а теперь давайте посмотрим, как будет выглядеть полный набор правил.
Также вы можете добавить правило в произвольное место в цепочке. Есть два способа сделать это.
- Используйте index, чтобы указать на индекс в списке правил. Использование add добавит новое правило после указанного индекса. Если же вы используете insert, то новое правило будет добавлено перед правилом с заданным индексом. Значения индексов начинаются с 0.
Примечание: Использование index с insert по факту эквивалентно опции iptables -I с индексом. Первое, о чем нужно помнить, так это о том, что индексы в nftables начинаются с 0. Во-вторых, индекс должен указывать на существующее правило. То есть писать "nft insert rule … index 0" в пустой цепочке недопустимо.
- Используйте handle, чтобы указать правило, до или после которого нужно вставлять другое правило. Для вставки после используйте глагол add. Чтобы вставить до правила, используйте insert. Вы можете получить handle правил, добавив флаг –handle при выводе правил.
В nftables handle правил стабилен и не изменится до тех пор, пока правило не будет удалено. Так ссылка на правило получается надежнее, чем просто индекс, который может поменяться при вставке другого правила.
Также вы можете получить handle правила во время создания, используя сразу два флага –echo и –handle. Правило будет выведено в CLI вместе с его handle.
Примечание: старые версии nftables использовали позицию ключевого слова. С тех пор механика ключевых слов устарела и появился handle.
Удаление правил
Удаление правил выполняется с помощью handle правила по аналогии с командами add и insert выше.
Сначала нужно найти handle правила, которое вы хотите удалить.
Затем используйте этот handle для удаления правила.
Листинг правил
В примерах выше мы выводили весь список правил. Существует много других способов вывести подмножество правил.
Вывести все правила в заданной таблице.
Вывести правила в заданной цепочке.
Наборы
В nftables есть нативная поддержка наборов. Они могут оказаться полезными, если вы хотите, чтобы правило работало с несколькими IP-адресами, портами, интерфейсами или по любым другим критериям.
Анонимные наборы
Любое правило может иметь inline-наборы. Эта механика полезна для наборов, которые вы не собираетесь изменять.
Например, следующая команда будет разрешать весь трафик с 10.10.10.123 и 10.10.10.231.
Недостатком этого метода является то, что если вам нужно изменить набор, то нужно будет заменять и правило. Чтобы получить мутабельные наборы, нужно использовать именованные наборы.
В качестве другого примера, вместо первых трех правил мы могли бы использовать анонимный набор.
Примечание: пользователи iptables скорее всего привыкли к использованию ipset. Поскольку в nftables есть собственная нативная поддержка наборов, ipset использовать не нужно.
Именованные наборы
Nftables также поддерживает мутабельные именованные наборы. Для их создания необходимо указать тип элементов, которые будут в них содержаться. Например, типы могут быть такими: ipv4_addr, inet_service, ether_addr.
Давайте создадим пустой набор.
Чтобы сослаться на набор в правиле используйте символ @ и имя набора после него. Следующее правило будет работать как черный список для IP-адресов в нашем наборе.
Конечно, это не особо эффективно, так как в наборе пусто. Давайте добавим в него несколько элементов.
Однако попытка добавить диапазон значений приведет к ошибке.
Чтобы использовать диапазоны в наборах, нужно создать набор с использованием флагов интервалов. Так нужно, чтобы ядро заранее знало, какой тип данных будет храниться в наборе, чтобы использовать соответствующую структуру данных.
Интервалы в наборах
В наборах также могут использовать диапазоны. Для IP-адресов это может быть крайне полезно. Для использования диапазонов, набор должен быть создан с использованием флагов интервалов.
Примечание: Нотация маски сети была неявно преобразована в диапазон IP-адресов. Аналогично, мы могли бы написать 10.20.20.0-10.20.20.255 и получить тот же эффект.
Конкатенации наборов
Наборы также поддерживают агрегатные типы и совпадения. То есть элемент набора также может содержать несколько типов, а правило может использовать оператор конкатенации «.» при обращении к набору.
В этом примере мы сможем сопоставлять IPv4-адреса, IP-протоколы и номера портов одновременно.
Теперь мы можем добавить элементы к списку.
Как видите, символьные имена (tcp, telnet) также можно использовать при добавлении элементов набора.
Использование набора в правиле аналогично именованному набору выше, но правило должно выполнять конкатенацию.
Также стоит отметить, что конкатенация может использоваться с inline-наборами. Вот последний пример, отражающий это.
Надеюсь, теперь вы понимаете всю силу наборов nftables.
Примечание: конкатенации наборов nftables аналогичны агрегатным типам ipset, например, hash:ip,port.
Verdict Map
Verdict map – это интересная функция в nftables, которая позволит вам выполнить действие, основываясь на информации в пакете. Проще говоря, они сопоставляют критерии с действиями.
Например, чтобы логически разделить набор правил, вам нужны отдельные цепочки для обработки TCP и UDP пакетов. Вы можете использовать verdict map, чтобы направлять пакеты в эти цепочки с помощью одного правила.
Конечно, по аналогии с наборами вы можете создавать мутабельные verdict map.
Ваши глаза вас не обманывают. Синтаксис с наборами и вправду очень схож. По факту, под капотом наборы и verdict map строятся на одном и том же типе данных.
Теперь вы можете использовать мутабельную verdict map в правиле.
Таблицы как пространства имен
Еще одна интересная вещь о таблицах в nftables – это то, что они также являются полноценными пространствами имен. То есть две таблицы могут создавать цепочки, наборы и другие объекты с одинаковыми именами.
Это свойство означает, что приложения могут организовывать правила в своих собственных цепочках, не затрагивая другие приложения. В iptables приложениям было тяжело вносить изменения в брандмауэр, не влияя на другие приложения.
Однако и тут есть один нюанс. Каждый хук таблицы или цепочки можно рассматривать как независимый и отдельный брандмауэр. То есть пакет должен пройти через все, чтобы в итоге быть принятым. Если table_one принимает пакет, его все еще может отклонить table_two. Именно здесь в игру вступает приоритезация хуков. Цепочка с более низким приоритетом гарантированно будет выполнена перед цепочкой с более высоким приоритетом. Если приоритеты равны, то поведение не определено.
Сохранение и восстановление набора правил
Правила nftables можно с легкостью сохранить и восстановить. Вывод list в nft можно использовать в инструменте, чтобы провести восстановление. Именно так работает служба nftables systemd.
Сохранить набор правил
Восстановить набор правил
Конечно же, вы можете включить службу systemd и восстановить правила при перезагрузке. Служба читает правила из /etc/sysconfig/nftables.conf.
Примечание: некоторые дистрибутивы, включая RHEL-8, отправляют предопределенную конфигурацию nftables в /etc/nftables. Эти сэмплы часто включают в себя конфигурацию таблиц и цепочек в стиле iptables. Они часто указаны в файле /etc/sysconfig/nftables.conf, но могут быть закомментированы.
Заключение
Надеюсь, эта статья стала хорошим введением и демонстрацией возможностей nftables. Однако мы только коснулись поверхности nftables. Есть множество особенностей, которые здесь не затрагивались. Вы можете найти более подробную информацию на странице документации nft и в вики. Помимо этого, вы можете прочитать несколько следующих статей в этом блоге, в которых мы будем говорить о более продвинутых аспектах nftables.
Читайте также: