<?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]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=34625</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=34625&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Второй выпуск пакетного фильтра nftables».]]></description>
		<lastBuildDate>Fri, 18 Apr 2014 13:53:28 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Второй выпуск пакетного фильтра nftables]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=405542#p405542</link>
			<description><![CDATA[<p>Проект Netfilter <a href="http://lists.netfilter.org/pipermail/netfilter-announce/2014/000206.html">представил</a> второй выпуск нового пакетного фильтра nftables (0.2), а также соответствующий выпуск вспомогательной библиотеки <a href="http://lists.netfilter.org/pipermail/netfilter-announce/2014/000207.html">libnftnl 1.0.1</a>.</p><p>В рамках проекта Nftables развивается новая реализация пакетного фильтра, унифицирующая интерфейсы фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов, и нацеленная на замену iptables, ip6table, arptables и ebtables. Для реализации поставленной задачи Nftables предоставляет на уровне ядра лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком. Непосредственно логика фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters).</p><p>Новые возможности, доступные в данной версии:</p><ul><li><p>Поддержка гибридных IPv4/IPv6 таблиц. По умолчанию, правила в такой таблице применяются как к IPv4, так и к IPv6-пакетам. Исключение составляют те правила, для которых протокол указан явно. Пример работы с <a href="http://git.netfilter.org/nftables/tree/files/nftables/inet-filter">подобной таблицей</a>:<br />&nbsp; &nbsp; &nbsp; &nbsp; nft inet filter input ip saddr 192.168.0.0/24 jump from_lan<br />&nbsp; &nbsp; &nbsp; &nbsp; nft inet filter input ip6 saddr 2001::/64 jump from_lan<br />&nbsp; &nbsp; &nbsp; &nbsp; nft inet filter input tcp dport ssh accept<br />&nbsp; &nbsp; &nbsp; &nbsp; nft inet filter input iif lo accept</p></li><li><p>Возможность изменения метаинформации о пакете, в частности, метки (аналог iptables -j MARK), класса шейпера (iptables -j CLASSIFY) и статуса трассировки (iptables -j TRACE). Например,</p><p>&nbsp; &nbsp; &nbsp; &nbsp; nft filter input mark set 0x1</p><p>&nbsp; &nbsp; устанавливает метку пакета в значение 1, а</p><p>&nbsp; &nbsp; &nbsp; &nbsp; nft filter input mark set mark | 0x1</p><p>&nbsp; &nbsp; устанавливает в единицу младший бит метки, не меняя остальные.</p><p>&nbsp; &nbsp; Особенный интерес представляет возможность использования меток соединений в словарях (maps), что позволяет, например, в рамках одного правила устанавливать различные метки в зависимости от исходных IP-адресов пакетов:</p><p>&nbsp; &nbsp; &nbsp; &nbsp; nft filter input mark set ip saddr map {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 192.168.0.0/24 : 0x1,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 192.168.1.0-192.168.1.64 : 0x2,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 192.168.2.1 : 0x3,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; * : 0x4<br />&nbsp; &nbsp; &nbsp; &nbsp; }</p><p>&nbsp; &nbsp; Кроме того, метка может быть рассчитана на основании арифметических операций с адресами пакета (аналог неофициального дополнения к iptables IPMARK):</p><p>&nbsp; &nbsp; &nbsp; &nbsp; nft filter input ip saddr 192.168.0.0/16 mark set ip saddr &amp; 0xff00</p></li><li><p>Управление метками соединений (аналог iptables -j CONNMARK). В частности, поддерживается возможность установки метки соединения на основании метки пакета и наоборот, а также прямое задание метки соединения.</p></li><li><p>Поддержка именованных меток соединений (аналог iptables -m connlabel).</p></li><li><p>Возможность балансировки пакетов, передаваемых на обработку вспомогательным программам, между несколькими очередями, что позволяет более эффективно организовывать работу на системах с большим трафиком (аналог iptables -j NFQUEUE --queue-balance).</p></li><li><p>Реализован экспорт набора правил в форматы XML и JSON. Возможность импорта ожидается в следующем выпуске.</p></li><li><p>Поддержка комментариев, встроенных непосредственно в правила (аналог iptables -m comment):</p><p>&nbsp; &nbsp; &nbsp; &nbsp; nft filter input tcp dport ssh accept comment &quot;SSH access&quot;</p></li><li><p>При чтении файла с правилами, содержащего ошибки, операция прерывается только после 10 ошибок (а не после первой, как раньше), что значительно ускоряет процесс отладки больших наборов правил.</p></li><li><p>Добавлена новая команда create для создания таблиц и цепочек. В отличие от уже имеющейся команды add, create не выдает ошибки, если создаваемый объект уже существует.</p></li><li><p>Исправлен ряд ошибок, в частности, улучшена работа с символьными переменными.</p></li><li><p>Также внесены некоторые изменения в синтаксис правил:<br /></p><ul><li><p>В некоторых meta-выражениях (mark, iif, iifname, iiftype, oif, oifname, oiftype, skuid, skgid, nftrace, rtclassid) явное указание слова meta теперь необязательно.</p></li><li><p>Приведены к единой схеме имена типов данных, используемые в декларации списков (set) и словарей (maps). В частности, типы, связанные с адресами, теперь именуются *_addr, с протоколами — *_proto, с интерфейсами — iface_*. Тип &quot;arphrd&quot; переименован в &quot;iface_type&quot;.</p></li></ul></li></ul><p>Источник: <a href="http://www.opennet.ru/opennews/art.shtml?num=39596">http://www.opennet.ru/opennews/art.shtml?num=39596</a></p>]]></description>
			<author><![CDATA[null@example.com (Rizado)]]></author>
			<pubDate>Fri, 18 Apr 2014 13:53:28 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=405542#p405542</guid>
		</item>
	</channel>
</rss>
