<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Выпуск пакетного фильтра nftables 0.4, идущего на смену iptables]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=37088</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=37088&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Выпуск пакетного фильтра nftables 0.4, идущего на смену iptables».]]></description>
		<lastBuildDate>Thu, 18 Dec 2014 10:51:55 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Выпуск пакетного фильтра nftables 0.4, идущего на смену iptables]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=436211#p436211</link>
			<description><![CDATA[<p>А кто-нибудь пользовался им?</p>]]></description>
			<author><![CDATA[null@example.com (pb13)]]></author>
			<pubDate>Thu, 18 Dec 2014 10:51:55 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=436211#p436211</guid>
		</item>
		<item>
			<title><![CDATA[Выпуск пакетного фильтра nftables 0.4, идущего на смену iptables]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=436204#p436204</link>
			<description><![CDATA[<p>Проект Netfilter <a href="http://lists.netfilter.org/pipermail/netfilter-announce/2014/000211.html">представил</a> четвёртый выпуск нового пакетного фильтра nftables (0.4), а также выпуск сопутствующей библиотеки <a href="http://lists.netfilter.org/pipermail/netfilter-announce/2014/000210.html">libnftnl 1.0.3</a>, предоставляющей низкоуровневый API для взаимодействия с подсистемой nf_tables. В пакет Nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, которая входит в состав ядра Linux начиная с выпуска 3.13.</p><p>Nftables нацелен на замену iptables, ip6table, arptables и ebtables, и примечателен унификацией интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов. Для реализации поставленной задачи Nftables предоставляет на уровне ядра лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком. В работе используются уже существующие типовые универсальные компоненты инфраструктуры Netfilter, в том числе применяются существующие хуки, система отслеживания состояния соединений, компоненты организации очередей и подсистема ведения лога.</p><p>Непосредственно логика фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Например, если в iptables при выполнении в правилах сопоставления номера входящего TCP-порта использовалась специальная предопределённая функция модуля ядра xt_tcpudp, то в nftables производится формирование инструкции &quot;прочитать в регистр 2 байта из определённой позиции заголовка пакета и сравнить содержимое регистра с указанным значением&quot;. Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя.</p><p>Для формирования правил фильтрации предлагается использовать утилиту nft, которая проверяет корректность правил и транслирует их в байткод. Правила могут как добавляться инкрементально, так и загружаться целиком из файла на диске. <a href="http://people.netfilter.org/wiki-nftables/index.php/Main_Page">Синтаксис правил</a> <a href="https://home.regit.org/netfilter-en/nftables-quick-howto/">не похож</a> на iptables и отличается использованием иерархических блочных структур вместо линейной схемы. Язык классификации правил основан на реальной грамматике, при обработке которой используется сгенерированный в bison парсер. Поддерживается словарный маппинг (хеши), поиск по наборам правил (sets), диапазоны значений (можно определять подсети), средства для отслеживания соединений, NAT, ведение лога. Для обеспечения совместимости с правилами iptables/ip6tables предоставляется специальная прослойка.</p><p>Особенности новой версии:<br /></p><ul><li><p>Поддержка операций с глобальными наборами правил (ruleset). Возможность появилась в ядре 3.18). Например, командой &quot;<span style="color: blue">nft flush ruleset</span>&quot; можно разом очистить все таблицы, цепочки и правила. Посмотреть доступные наборы правил можно командой &quot;<span style="color: blue">nft list ruleset</span>&quot;. Результаты вывода данной команды можно сохранить в файл и затем загрузить при помощи &quot;<span style="color: blue">nft -f ruleset.file</span>&quot; для восстановления сохранённого состояния, что будет аналогично выполнению iptables-restore c захватом правил для всех поддерживаемых семейств протоколов (ip, ip6, inet, bridge и arp);</p></li><li><p>Поддержка ведения полного лога для всех семейств протоколов, в том числе nfnetlink_log. Поддерживается начиная с ядра Linux 3.17;</p></li><li><p>Возможность автоматического выбора оптимальной реализации списка (set). Поддерживается начиная с ядра Linux 3.16. Метод оптимизации списка можно определить и вручную, например, для включения оптимизации по потреблению памяти можно указать &quot;<span style="color: blue">nft add set filter set1 { type ipv4_addr ; policy memory ; }</span>&quot;, а для оптимизации для достижения максимальной производительности - &quot;<span style="color: blue">nft add set filter set1 { type ipv4_addr ; policy performance ; }</span>&quot;. Аналогичным образом можно поступить и для словарей (maps), например &quot;<span style="color: blue">nft add map filter map1 { type ipv4_addr : verdict ; policy performace ; }</span>&quot;;</p></li><li><p>Полноценная поддержка операции отклонения (reject) с отправкой ответного сообщения об ошибке. Например, &quot;<span style="color: blue">nft add rule filter input reject with icmp type host-unreachable</span>&quot; или &quot;<span style="color: blue">nft add rule filter input reject with tcp reset</span>&quot;;</p></li><li><p>Поддержка трансляции адресов (маскарадинга) для IPv4 и IPv6. Например, &quot;<span style="color: blue">nft add rule nat postrouting masquerade</span>&quot;. Работает в ядрах Linux, начиная с 3.18;</p></li><li><p>Поддержка перенаправления запросов (redirect). Например, &quot;<span style="color: blue">nft add rule nat prerouting tcp dport 22 redirect to 2222</span>&quot;. Работает в ядрах Linux, начиная с 3.19-rc;</p></li><li><p>Поддержка NAT-флагов random, fully-random и persistent;</p></li><li><p>Проверка непротиворечивости пересечений между обновлениями и дампами ruleset;</p></li><li><p>Метаинформация о пакете расширена поддержкой сопоставлений pkttype, cpu и devgroup;</p></li><li><p>Добавлен скрипт для автоматического тестирования на предмет появления регрессивных изменений;</p></li><li><p>Возможность отключения использования библиотеки libreadline и отладки на стадии выполнения скрипта configure;</p></li><li><p>Система сборки переведена на использование autotools;</p></li><li><p>Изменение синтаксиса: Флаг &#039;queue&#039; теперь рассматривается как разделённый запятыми список символов, например &quot;<span style="color: blue">nft add filter input counter queue num 0-3 fanout,bypass</span>&quot;;</p></li><li><p>По умолчанию прекращено преобразование имён в правилах. IP-адреса всегда должны задаваться в числовом представлении. Для резолвинга имён хостов следует явно указывать опцию &#039;-N&#039;. </p></li></ul><br /><p>Источник: <a href="http://www.opennet.ru/opennews/art.shtml?num=41282">http://www.opennet.ru/opennews/art.shtml?num=41282</a></p>]]></description>
			<author><![CDATA[null@example.com (verg)]]></author>
			<pubDate>Thu, 18 Dec 2014 09:20:48 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=436204#p436204</guid>
		</item>
	</channel>
</rss>
