Nft(8) — nftables — Debian unstable — Debian Manpages

Использование

В nftables не различаются временные правила, добавленные из командной строки, и постоянные, загруженные из файла или сохранённые в файл.

Все правила должны создаваться или загружаться утилитой nft. Подробнее о работе с ней см. раздел #Настройка.

Текущий набор правил можно узнать командой:

# nft list ruleset

Простой межсетевой экран

В пакет входит простая и надёжная конфигурация экрана, сохранённая в файле /etc/nftables.conf.

Служба nftables.service загрузит эти правила при запуске или включении.

Testing your rule

% ping -c .8.8.8
PING .8.8.8 .8.8.8 bytes of data.
bytes from .8.8.8: .31 ms

Then, if we list the rule-set, we obtain:

% nft -nn list table filter
table ip filter
chain input
filter hook input priority

chain output
filter hook output priority
ip daddr .8.8.8 counter packets bytes
tcp dport counter packets bytes

Note that the counters have been updated.

Установка nftables в Ubuntu

На данный момент единственный выход изучить новинку — это установить nftables самостоятельно. Нам потребуются библиотеки и стандартный набор для сборки ПО:

$ sudo apt-get install autoconf2.13 dh-autoreconf libmnl-dev libmnl0

Библиотеку можно поставить из сырцов, но пока версии, доступной в репозитории, вполне достаточно. Копируем код libnftables и nftables.

$ git clone git://git.netfilter.org/libnftables
$ git clone git://git.netfilter.org/nftables

Nft(8) — nftables — Debian unstable — Debian Manpages

В nftables добавлен модуль совместимости с iptables

Сборка в том и другом случае стандартна, переходим в каталог и даем команды:

$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

В некоторых системах (в Ubuntu, например) при конфигурировании nftables следует активировать ряд функций:

$ ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes ./configure

Далее вводим make oldconfig, переходим в Core Netfilter Configuration, где находим специфичные для nftables настройки (их, кстати, на порядок меньше, чем для iptables), собираем ядро.

Nft(8) — nftables — Debian unstable — Debian Manpages

Конфигурирование поддержки nftables в ядре Linux

NAT

Создадим новую таблицу ip nat:

Добавим цепочку POSTROUTING и PREROUTING:

Nft(8) — nftables — Debian unstable — Debian Manpages

Перебросим нестандартный порт 2228 на 22:

nft add rule nat PREROUTING tcp dport 2228 redirect to 22

А подключение по 22 порту будем дропать:

nft add rule nat PREROUTING tcp dport 22 counter drop

Nft(8) — nftables — Debian unstable — Debian Manpages

Давайте для удобства редактирования напишем скрипт который можно будет постоянно удобно поправлять.

Создадим скрипт .fw_nftables.sh:

Не забудьте точку, чтобы скрипт был скрыт!

Дадим права на выполнения:

Откроем его и добавим туда все что мы написали:

Nft(8) — nftables — Debian unstable — Debian Manpages

Вывод: мы сделали с вами базовую настройку nftables  для сервера с ip телефонией.

В некоторых дистрибутивах nftables уже установлен (RedHat 8, CentOS 8) по умолчанию. В Debian 10.2 установка производится очень просто:

sudo apt-get install nftables

Nft(8) — nftables — Debian unstable — Debian Manpages

Чем не устраивает iptables?

Проект netfilter/iptables был основан в 1998 году и с версии ядра 2.4 используется по умолчанию. Команда разработчиков сохранила основную идею, заложенную еще в ipfwadm, — список правил, состоящих из критериев и действия, которое выполняется, если пакет соответствует критериям. Netfilter разрешал подключать дополнительные модули (ранее архитектура ядра такой возможности не предоставляла). Это позволило очень просто развивать подсистему фильтрации, и со временем появилось большое количество новых функций и модулей. Полноценная поддержка IPv6 появилась только в 2011 году, что, правда, потребовало редизайна netfilter. В результате модуль NAT разделили на два независимых компонента, один из которых включает в себя ядро подсистемы NAT, а второй реализует поддержку протокола третьего уровня. Помимо фильтрации, модули обеспечивают классификацию трафика (вплоть до седьмого уровня OSI), балансировку нагрузки, манипуляцию с пакетами, маршрутизацию и прочее.

Nft(8) — nftables — Debian unstable — Debian Manpages

Iptables содержит большое количество модулей

Еще один важный мотив — необходимость сбросить текущий ABI (Application Binary Interface), представляющий собор набор соглашений между программами, библиотеками и ОС, обеспечивающими их взаимодействие на низком уровне. В iptables ABI жестко прописаны специфические для протоколов поля, поэтому расширить его сложно. Как результат, приходится сразу запускать iptables, arptables и ebtables, по существу выполняющие одну работу, но каждый на своем уровне. По общим оценкам дублируется 10 000 строк кода. Учитывая, что все защитные механизмы и цепочки (даже пустые) грузятся изначально и активны, iptables потребляет больше ресурсов, чем реально необходимо.

Пользователям и администраторам управлять большим количеством правил довольно тяжело, трудно с ходу разобраться, что делают все цепочки, правила начинают повторяться, их становится сложно обслуживать и обновлять. Чтобы настроить два разных действия (вроде MARK и ACCEPT), правила приходится дублировать. Каждое расширение имеет свой синтаксис, одни поддерживают диапазоны, отрицание, префиксы, другие — нет.

Nft(8) — nftables — Debian unstable — Debian Manpages

Дополнительные расширения к iptables со своим синтаксисом создают еще большую путаницу

Usage

All nftable commands are done with the nft utility from net-firewall/nftables.

root nft add table ip filter

Likewise, a table for arp can be created with

root nft add table arp filter

NoteThe name «filter» used here is completely arbitrary. It could have any name

root nft list tables ip

The contents of the table filter can be listed with:

root nft list table ip filter

using -a with the nft command, it shows the handle of each rule. Handles are used for various operations on specific rules:

root nft -a list table ip filter

root nft delete table ip filter

NoteIf You’re running this command from Bash you need to escape the semicolon

A non-base chain can be added by not specifying the chain configurations between the curly braces.

root nft delete chain ip filter input

NoteChains can only be deleted if there are no rules in them.

root nft add rule ip filter input tcp dport 80 drop

To delete a rule, you first need to get the handle number of the rule. This can be done by using the -a flag on nft:

root nft rule ip filter input tcp dport 80 drop

Про NFT:  Белуха nft

It is then possible to delete the rule with:

Adding a rule at a given position

If you want to add a rule at a given position, you have to use the handle as reference:

% nft -n -a list table filter
table filter
chain output
filter hook output priority
ip protocol tcp counter packets bytes # handle 8
ip saddr .0.0.1 ip daddr .0.0.6 drop # handle 7

If you want to add a rule after the rule with handler number 8, you have to type:

% nft add rule filter output position ip daddr .0.0.8 drop

Now, you can check the effect of that command by listing the rule-set:

% nft -n -a list table filter
table filter
chain output
filter hook output priority
ip protocol tcp counter packets bytes # handle 8
ip daddr .0.0.8 drop # handle 10
ip saddr .0.0.1 ip daddr .0.0.6 drop # handle 7

If you want to insert a rule before the rule with handler number 8, you have to type:

% nft insert rule filter output position ip daddr .0.0.8 drop

Removing rules

You have to obtain the handle to delete a rule via the -a option. The handle is automagically assigned by the kernel and it uniquely identifies the rule.

% nft -a list table filter
table ip filter
chain input
filter hook input priority

chain output
filter hook output priority
ip daddr .168.1.1 counter packets bytes # handle 5

% nft delete rule filter output handle

Note: There are plans to support rule deletion by passing:

% nft delete rule filter output ip saddr .168.1.1 counter

but this is not yet implemented. So you’ll have to use the handle to delete rules until that feature is implemented.

Replacing rules

You can replace any rule via the replace command by indicating the rule handle, which you have to find by first listing the ruleset with option -a:

To replace the rule with handle 2, specify its handle number and the new rule that you want to replace it:

nft replace rule filter input handle counter

Listing the ruleset after the above replacement:

# nft list ruleset
table ip filter
chain input
filter hook input priority policy accept
counter packets bytes

you can see that the old rule that counted TCP packets has been replaced by the new rule that counts all packets.

Трассировка правил

Наверняка бывало так, что нужный трафик ошибочно блокируется каким-то правилом, но ты не можешь понять, каким именно. У nftables для таких случаев есть встроенный механизм трассировки правил.

Рассмотрим его на очевидном примере. Пусть у тебя правило блокирует весь трафик сети 192.0.2.0/24.

$ sudo nft insert rule inet filter input ip saddr 192.0.2.0/24 drop

Предположим, ты о нем забыл и в упор не видишь его в настройках, а пользователи жалуются, что не проходит трафик с хоста 192.0.2.1. Не беда — мы можем включить трассировку для всех пакетов с адресом источника 192.0.2.1. Это делается опцией nftrace set 1.

$ sudo nft insert rule inet filter input ip saddr 192.0.2.1 meta nftrace set 1

Теперь в выводе команды nft monitor trace мы можем увидеть весь путь этого пакета через наш набор правил.

Теперь мы сможем найти нужное правило поиском по ip saddr 192.0.2.0/24. Это, конечно, тривиальный пример, и правило могло быть куда менее простым и очевидным, но в выводе трассировки ты всегда увидишь именно правило, которое отбросило пакет.

Как и с tcpdump/Wireshark, выбор критерия для трассировки — залог удачной отладки. Трассировка работает только для пакетов, которые попали под правило с nftrace set 1. Если условие недостаточно специфично, пакет в нее не попадает. Сделай условие слишком общим, вроде protocol tcp, и ты не сможешь найти нужное в огромном объеме вывода.

Тем не менее само наличие этого механизма открывает прежде недоступные возможности для отладки правил.

Продолжение доступно только участникам

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку!
Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя!
Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Примеры использования nftables

Теперь рассмотрим примеры nftables. Команда nft – это утилита администрирования фреймворком nftables при управлении потоками данных. Именно с помощью неё выполняется настройка nftables. Использует при работе интерфейс командной строки. Позволяет создавать новые правила nftables, удалять старые и просматривать уже созданные цепочки и таблицы правил.

Создание таблицы в nftables

При создании таблицы (table) должно быть определено семейство (family) адресов. Например, давайте создадим таблицу с именем, test_table, которая отрабатывает одновременно пакеты IPv4 и IPv6:

sudo nft add table inet test_table

Nft(8) — nftables — Debian unstable — Debian Manpages

Создание цепочки в nftables

Цепочки (chain) являются контейнерами для правил. Существуют два типа цепочек:

Базовые цепочки (base chain) — можно использовать в качестве точки входа для пакетов из стека протоколов.

Регулярные цепочки (regular chain) — можно использовать с действием Применяют для лучшей организации множества правил. При создании цепочки следует учитывать, что таблица, в которую мы хотим добавить цепочку, должна уже существовать.

Nft(8) — nftables — Debian unstable — Debian Manpages

Примечание: чтобы командный интерпретатор не интерпретировал ; как конец команды необходимо  экранировать точку с запятой следующим образом ;

Эта цепочка фильтрует входящие пакеты. Приоритет (priority) задает порядок, в котором nftables обрабатывает цепочки с одинаковым значением hook. Параметр policy устанавливает действие по умолчанию для правил в этой цепочке. В данном случае мы установили действие accept (принимать пакет).

Добавление правила

Добавить правило (rule) в настраиваемую конфигурацию можно с помощью следующей синтаксической конструкции:

sudo nft add rule inet table1 chain_input ip saddr 8.8.8.8 drop

Nft(8) — nftables — Debian unstable — Debian Manpages

Удаление правила

Для удаления правила nftables используется команда со следующим синтаксисом:

sudo nft delete rule inet table1 chain_input handle 3

Nft(8) — nftables — Debian unstable — Debian Manpages

Удаление цепочки

Цепочка удаляется с помощью следующей команды:

sudo nft delete chain inet table1 chain_input

Nft(8) — nftables — Debian unstable — Debian Manpages

Удаление таблицы

Таблицу можно удалить с конструкции со следующим синтаксисом:

sudo nft delete table inet table1

Nft(8) — nftables — Debian unstable — Debian Manpages

Конечно, писать низкоуровневые правила пользователи не будут, доступен понятный язык описания. Новый синтаксис правил непохож на iptables, главное отличие — использование иерархических блочных структур вместо линейной схемы. Группировка позволяет легко составлять, читать и понимать настройки без особых пояснений. Синтаксис при этом чем-то напоминает ipfw из FreeBSD.

Про NFT:  Погрузитесь в мир Funko NFT: купите новинку сегодня

Язык классификации правил основан на реальной грамматике, при обработке которой используется парсер bison. К сожалению, документация в этом вопросе мало помогает, она просто еще не готова. О возможностях можно судить только по исходному коду nftables и обрывкам информации в специализированных мейл-листах.

Nft(8) — nftables — Debian unstable — Debian Manpages

Для настройки правил используется утилита nft

Правила могут содержать:

Теперь разрешаем доступ с подсети 192.168.1.0/24 и IP 192.168.0.10 по SSH, блокируем для всех доступ по 80-му порту и разрешаем все пакеты уже установленного соединения (connection tracking).

Счетчики — необязательный элемент в правилах, и, если он нужен, его необходимо активировать. Теперь в одном правиле можно указать сразу несколько действий. Например, подсчитаем количество пакетов, отправленных на 192.168.0.1, и заблокируем соединение:

nft add rule ip filter output ip daddr 192.168.0.1 counter drop

Вместо IP в правилах возможно использование доменного имени:

nft add rule ip6 filter output ip daddr example.org accept

Фильтр интерфейса позволяет указывать правило для конкретного сетевого интерфейса (сетевуха должна присутствовать в системе, иначе правило не будет активным):

nft insert rule filter input meta iif eth0 accept

Еще один нюанс. Утилита nft может работать в трех режимах, чем-то напоминая управление в Cisco. Например, все настройки можно указать в файле и затем просто скормить конфиг nft, это очень удобно для переноса рулесетов на несколько ПК. В каталоге files/nftables с исходными текстами уже имеется ряд шаблонов, перед началом использования nftables необходимо выбрать нужные и активировать:

# nft -f files/nftables/ipv4-filter
# nft -f files/nftables/ipv6-filter

Также есть режим командной строки, когда нужная настройка указывается сразу, и интерактивный режим CLI. Перейти в CLI просто:

# nft -i

Теперь можем последовательно давать команды или считывать настройки. Единичные правила группируются в таблице, образуя иерархическую блочную структуру, напоминающую pf и npf.

Правило можно вставить в нужную позицию (handle), здесь работают две директивы — add и insert. Первая добавляет правило после указанной позиции, а вторая — перед. Например, чтобы вставить правило перед handle 8, пишем:

nft insert rule filter output position 8 ip daddr 127.0.0.1 drop

Удаляются правила в цепочке при помощи параметра delete:

Если не указывать номер правила, то будет очищена вся цепочка. При помощи flush сбрасывается вся таблица:

nft flush table filter

Настройка NAT не сложнее, вначале необходимо загрузить модули:

modprobe nft_nat
modprobe nft_chain_nat_ipv4
modprobe nft_chain_nat_ipv6

И добавляем в нее правила:

nft add rule nat post ip saddr 192.168.1.0/24 meta oif eth0 snat 192.168.1.1
nft add rule nat pre udp dport 53 ip saddr 192.168.1.0/24 dnat 8.8.8.8:53

Первое активирует NAT для всего трафика с 192.168.1.0/24 на интерфейсе eth0, второе перенаправляет весь DNS-трафик на 8.8.8.8.

Nft(8) — nftables — Debian unstable — Debian Manpages

В поставке nftables идут шаблоны правил

Пакетный фильтр FF

От ipset новая система отличается тем, что поддерживает блокирование на уровне драйвера e1000. Набор утилит, работающий на уровне пользователя, обеспечивает сохранение БД-адресов на диске с кешированием базы в памяти ядра.

Главная задача FF — защита от DoS/DDoS-атак, блокирование различного флуда и паразитного трафика. В качестве примера представлен код для интеграции разработки с Postfix с целью борьбы с роботами спамеров, выступающий в роли более жесткой системы блокирования для серых списков и RBL-систем.

Ограничение скорости передачи

Если вы используете переходы (jumps), то целевая цепочка должна быть описана до перехода. Иначе будет получена ошибка Error: Could not process rule: No such file or directory.

Несколько сетевых интерфейсов с разными правилами

Если у вашей системы несколько сетевых интерфейсов и вы хотите использовать для них разные наборы правил, то создайте фильтрующую цепочку-диспетчер, а после неё опишите цепочки для сетевых интерфейсов. Например, пусть ваша машина выступает в качестве домашнего маршрутизатора и вы желаете запустить веб-сервер, доступный по локальной сети (интерфейс enp3s0), но не из публичного интернета (интерфейс enp2s0). Создайте таблицу вроде этой:

Можно поступить иначе — задать только одну строку iifname, например для интерфейса веб-сервера, а правила для остальных интерфейсов вместо диспетчеризации описать в одном месте.

Правила работы маскарадинга:

Пример правил межсетевого экрана для машины с двумя интерфейсами, локальным enp3s0 и публичным enp2s0:

Поскольку таблица выше относится к типу inet, то маскарадингу подвергаются пакеты и IPv4, и IPv6. Чтобы ограничить маскарадинг только IPv4-пакетами (т.к. у IPv6 большое пространство адресов и NAT не требуется) либо добавьте выражение meta nfproto ipv4 перед oifname «enp2s0» masquerade, либо измените тип таблицы на ip.

NAT с пробросом портов

Для вывода заблокированных адресов выполните nft list set inet dev blackhole.

Logging

Logging of e.g. dropped packages is possible by adding a line with the keyword log at the end of the rule-set, e.g. log prefix «nft.dropinput»;.

Adding a prefix will produce a log entry to /var/log/messages, such as:

/var/log/messagesexample entry in messages file

Logging will be written by default to messages file and will fill up the file with annoying information. Based on using the prefix, the syslog-ng filters will be used to redirect those to its own file nft.log.

/etc/syslog-ng/syslog-ng.confentries for logging nft entries to its own file

Examples

See the Nftables examples article.

Troubleshooting

Before loading new or edited rules check them with

No such file or directory

If this error is printed for every chain of a table definition make sure, that the table’s family is available through the kernel. This happens for example if the table uses family inet and the kernel configuration did not enable mixed IPv4 and IPv6 rules (CONFIG_NF_TABLES_INET).

A set definition of IP ranges causes this error if ranges overlap. For example 224.0.0.0/3 and 240.0.0.0/5 overlap completely. Either add auto-merge to the set’s options, drop the range that is fully included or change syntax to 224.0.0.0-255.255.255.255.

Default configuration of the save and restore function use numeric mode to store the rule set. The persisted rule set could have changed from the original upload from a manually written file. Such a transformation might break things. Therefore make sure:

If all three conditions are met remove the -n parameter from SAVE_OPTIONS in /etc/conf.d/nftables. Then load your rule set again from the manually written file and restart the service again. This cycles through save and restore and should create a fully working rule set.

Про NFT:  Epic games nft

This affected at least version 0.9.9, see bug #819456.

Family netdev and ingress hook

Broken packets should be rejected early which requires an ingress hook for family netdev. This sets up a chain that acts for a dedicated network device before packets enter further processing – improved performance. The configuration looks like this:

Family netdev and ingress chain

Mind the device name enp4s0. If this changes for example when changing hardware or an upgrade changed device naming this family is broken. In turn none of the rules will be loaded. The error looks like this (filename and line numbers differ depending on the host configuration):

Error at chains instead of non-existing device

Check the device name is actually correct and exists, e.g. ip addr list.

INFO

До появления iptables для обеспечения возможностей межсетевого экрана в Linux использовались проекты ipchains в Linux 2.2 и ipfwadm в Linux 2.0 (основанный на ipfw из BSD).

Installation

Nftables is very modular, so the bare minimum would depend on your intended purposes. A recommended minimum for basic IPv4 firewalling with NAT would be:

Nftables kernel requirements

NotePlease note: nftables masquerade will not work if iptables masquerade is in the kernel, so be sure to unload or disable it.

To use family inet for tables with mixed IPv4 and IPv6 rules:

Nftables inet family

If this is not enabled only families ip and ip6 can be used.

Early filtering based on network device requires netdev tables support:

Nftables netdev family

root emerge —ask net-firewall/nftables

Установите пакет или git-версию AUR.

Listing rules

% nft list table filter
table ip filter
chain input
filter hook input priority

chain output
filter hook output priority
ip daddr .8.8.8 counter packets bytes
tcp dport ssh counter packets bytes

You can also list rules by chain, for example:

% nft list chain filter ouput
table ip filter
chain output
filter hook output priority
ip daddr .8.8.8 counter packets bytes
tcp dport ssh counter packets bytes

There are plenty of output text modifiers than can be used when listing your rules, to for example, translate IP addresses to DNS names, TCP protocols, etc.

Configuration

Don’t forget to add nftables service to startup:

root rc-update add nftables default

NoteIt is suggested to invoke manually after altering the ruleset. Otherwise, if there is an issue during system shutdown and saving the ruleset fails, the system might boot up with an older ruleset.

After first setup:

root touch /var/lib/nftables/rules-save

root systemctl enable —now nftables-restore

Removing all the rules in a chain

% nft flush chain filter output

Назначение nftables

Об nftables впервые заговорили в октябре 2008 года на конференции Netfilter Workshop. Задача проекта — заменить подсистемы iptables, ip6table, arptables и ebtables одним решением. Разработкой новой подсистемы пакетной фильтрации стала заниматься та же команда, только под руководством Патрика Мак-Харди (Patrick McHardy). Альфа-версия была представлена в марте 2009 года, хотя до 2012 года проект практически спал.

Дерево патчей состояло из более 100 патчей, которые в конце октября 2013-го были объединены в 17. В стандартную ветку Linux nftables включен с версии 3.13, хотя высокоуровневые инструменты все еще находятся в разработке, а документация, ориентированная на пользователя, отсутствует. Старая и новая подсистемы будут некоторое время сосуществовать рядом, так как nftables еще требует доработки и тестирования. Для обеспечения обратной совместимости предоставляется специальная прослойка, позволяющая использовать iptables/ip6tables поверх инфраструктуры nftables.

В nftables реализована идея, схожая с BPF (Berkeley Packet Filters): правила фильтрации в пространстве пользователя компилируются в байт-код, а затем через Netlink API передаются в ядро. После этого для принятия решения по дальнейшим действиям с пакетом они выполняются с использованием так называемого конечного автомата (pseudo-state machine), который представляет собой простейшую виртуальную машину, выполняющую байт-код.

Все операции по определению условий и связанных с ними действий выполняются в пространстве пользователя, в ядре производится только базовый набор операций, таких как чтение данных из пакета, сравнение данных. Присутствует поддержка словарного маппинга и поиск по наборам правил (sets), работа которых реализована через хеши и rb-деревья. При этом элементы наборов могут быть заданы в виде диапазонов значений (можно определять подсети).

Отличается и алгоритм работы фильтра, он сделан более универсальным, теперь разборкой пакета занимаются операторы (expression). Специальный механизм payload expression загружает данные из пакета в один из регистров общего назначения. Базовое смещение, специфичное для протокола, берется из структуры nft_pktinfo и модулей netfilter (IPv4, ARP и так далее). То есть уже нельзя сказать: «сравни IP источника с IP 192.168.0.1», — теперь фильтр «знает», что нужно извлечь определенную часть заголовка, помещает ее в переменную и затем сравнивает с нужным адресом. Обработка пакета несколькими правилами за счет введения так называемого verdict register стала значительно проще. Также легко пропустить ненужные операции, вроде счетчиков, если в них нет необходимости, меньше ресурсов требует поиск и сопоставление с диапазоном.

Улучшенный API позволяет производить инкрементные обновления правил или атомарную замену правила, гарантирующие эффективность и согласованность, без выгрузки/загрузки всего набора в пределах одной транзакции Netlink.

Именно через Netlink работает утилита iproute2, пришедшая на смену ifconfig и route.

Management

Compared to building a ruleset with multiple calls in a shell script, this also ensures that failures in such a script do not end with an only partially applied ruleset.

/etc/nftables-localskeleton nftables config file

You can also backup your rules:

NoteIf you are loading your ruleset with from a file, do not overwrite this file with the nft list ruleset output. This overwrites comments and variable definitions.

Журналирование в nftables

Для регистрации событий используется Netfilter, при помощи модулей xt_LOG (регистрирует в syslog) и/или nfnetlink_log. Последний использует демон сбора информации ulogd2, вышедший примерно полтора года назад и способный накапливать данные на уровне отдельных пакетов или потоков и сохранять их, в том числе и в БД.

Механизм журналирования для каждого протокола настраивается через /proc.

# cat /proc/net/netfilter/nf_log
0 NONE (nfnetlink_log)
1 NONE (nfnetlink_log)
2 ipt_LOG (nfnetlink_log,ipt_LOG)

Оцените статью
NFT Эксперт