The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

16.12.2014 23:42  Выпуск пакетного фильтра nftables 0.4, идущего на смену iptables

Проект Netfilter представил четвёртый выпуск нового пакетного фильтра nftables (0.4), а также выпуск сопутствующей библиотеки libnftnl 1.0.3, предоставляющей низкоуровневый API для взаимодействия с подсистемой nf_tables. В пакет Nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, которая входит в состав ядра Linux начиная с выпуска 3.13.

Nftables нацелен на замену iptables, ip6table, arptables и ebtables, и примечателен унификацией интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов. Для реализации поставленной задачи Nftables предоставляет на уровне ядра лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком. В работе используются уже существующие типовые универсальные компоненты инфраструктуры Netfilter, в том числе применяются существующие хуки, система отслеживания состояния соединений, компоненты организации очередей и подсистема ведения лога.

Непосредственно логика фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Например, если в iptables при выполнении в правилах сопоставления номера входящего TCP-порта использовалась специальная предопределённая функция модуля ядра xt_tcpudp, то в nftables производится формирование инструкции "прочитать в регистр 2 байта из определённой позиции заголовка пакета и сравнить содержимое регистра с указанным значением". Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя.

Для формирования правил фильтрации предлагается использовать утилиту nft, которая проверяет корректность правил и транслирует их в байткод. Правила могут как добавляться инкрементально, так и загружаться целиком из файла на диске. Синтаксис правил не похож на iptables и отличается использованием иерархических блочных структур вместо линейной схемы. Язык классификации правил основан на реальной грамматике, при обработке которой используется сгенерированный в bison парсер. Поддерживается словарный маппинг (хеши), поиск по наборам правил (sets), диапазоны значений (можно определять подсети), средства для отслеживания соединений, NAT, ведение лога. Для обеспечения совместимости с правилами iptables/ip6tables предоставляется специальная прослойка.

Особенности новой версии:

  • Поддержка операций с глобальными наборами правил (ruleset). Возможность появилась в ядре 3.18). Например, командой "nft flush ruleset" можно разом очистить все таблицы, цепочки и правила. Посмотреть доступные наборы правил можно командой "nft list ruleset". Результаты вывода данной команды можно сохранить в файл и затем загрузить при помощи "nft -f ruleset.file" для восстановления сохранённого состояния, что будет аналогично выполнению iptables-restore c захватом правил для всех поддерживаемых семейств протоколов (ip, ip6, inet, bridge и arp);
  • Поддержка ведения полного лога для всех семейств протоколов, в том числе nfnetlink_log. Поддерживается начиная с ядра Linux 3.17;
  • Возможность автоматического выбора оптимальной реализации списка (set). Поддерживается начиная с ядра Linux 3.16. Метод оптимизации списка можно определить и вручную, например, для включения оптимизации по потреблению памяти можно указать "nft add set filter set1 { type ipv4_addr ; policy memory ; }", а для оптимизации для достижения максимальной производительности - "nft add set filter set1 { type ipv4_addr ; policy performance ; }". Аналогичным образом можно поступить и для словарей (maps), например "nft add map filter map1 { type ipv4_addr : verdict ; policy performace ; }";
  • Полноценная поддержка операции отклонения (reject) с отправкой ответного сообщения об ошибке. Например, "nft add rule filter input reject with icmp type host-unreachable" или "nft add rule filter input reject with tcp reset";
  • Поддержка трансляции адресов (маскарадинга) для IPv4 и IPv6. Например, "nft add rule nat postrouting masquerade". Работает в ядрах Linux, начиная с 3.18;
  • Поддержка перенаправления запросов (redirect). Например, "nft add rule nat prerouting tcp dport 22 redirect to 2222". Работает в ядрах Linux, начиная с 3.19-rc;
  • Поддержка NAT-флагов random, fully-random и persistent;
  • Проверка непротиворечивости пересечений между обновлениями и дампами ruleset;
  • Метаинформация о пакете расширена поддержкой сопоставлений pkttype, cpu и devgroup;
  • Добавлен скрипт для автоматического тестирования на предмет появления регрессивных изменений;
  • Возможность отключения использования библиотеки libreadline и отладки на стадии выполнения скрипта configure;
  • Система сборки переведена на использование autotools;
  • Изменение синтаксиса: Флаг 'queue' теперь рассматривается как разделённый запятыми список символов, например "nft add filter input counter queue num 0-3 fanout,bypass";
  • По умолчанию прекращено преобразование имён в правилах. IP-адреса всегда должны задаваться в числовом представлении. Для резолвинга имён хостов следует явно указывать опцию '-N'.


  1. Главная ссылка к новости (http://lists.netfilter.org/pip...)
  2. OpenNews: Второй выпуск пакетного фильтра nftables
Лицензия: CC-BY
Тип: Программы
Ключевые слова: nftables, iptables
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, ACCA, 00:09, 17/12/2014 [ответить] [смотреть все]
  • +3 +/
    Наконец-то маскарад доделали, а то вообще неприлично было.
     
  • 1.2, Аноним, 01:02, 17/12/2014 [ответить] [смотреть все]
  • +/
    А шейпинг встроили ?
     
     
  • 2.4, Аноним, 01:20, 17/12/2014 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    Dummynet, не?
     
  • 2.19, Аноним, 13:29, 17/12/2014 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    > А шейпинг встроили ?

    man tc же :)

     
  • 2.74, Аноним, 12:21, 19/12/2015 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    За это отвечает другая подсистема ядра QoS Зачем дублировать функциональность ... весь текст скрыт [показать] [показать ветку]
     
  • 1.3, Crazy Alex, 01:16, 17/12/2014 [ответить] [смотреть все]  
  • +/
    Всё бы хорошо, но чертовы правила, состоящие из слов в одном регистре как-то очень неуютно парсятся глазами. iptables с их дефисами и таргетами большими буквами как-то легче в этом плане
     
     
  • 2.5, Аноним, 06:20, 17/12/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • –6 +/
    Отправляйся-ка SQL читать, дядя. Нечего нам здесь регистры менять.
     
  • 2.7, llolik, 08:43, 17/12/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    ИМХО дело привычки Зато правила стали лаконичней и уютно структурируются, а не ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.14, pavlinux, 12:39, 17/12/2014 [^] [ответить] [смотреть все]  
  • +2 +/
    У народа какой-то патологический сидром футуризма - всё, что новое по определени... весь текст скрыт [показать]
     
     
  • 4.20, Аноним, 14:26, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Выстрой-ка пооптимальнее, чтобы нагрузка на процессор была поменьше Напиши комм... весь текст скрыт [показать]
     
     
  • 5.34, pavlinux, 22:59, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Зачем комментарии, там в командах все написано Вот тут ещё можно, пару строчек... весь текст скрыт [показать]
     
     
  • 6.39, Аноним, 06:03, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Вот это удобно, да?
     
     
  • 7.43, pavlinux, 15:21, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Там просили чтобы нагрузка на процессор была поменьше ... весь текст скрыт [показать]
     
     
  • 8.51, Аноним, 15:38, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Открою страшную тайну - можно было просто правило с -i lo перенести повыше, чтоб... весь текст скрыт [показать]
     
     
  • 9.53, Аноним, 17:10, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Наглядно на тему работая над кодом програмы её можно ускорить на 10-15 , а рабо... весь текст скрыт [показать]
     
  • 9.56, pavel_simple, 17:24, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    cat proc net ip_conntrack 124 wc 30 420 4478 cat proc net ip_con... весь текст скрыт [показать]
     
     
  • 10.60, Аноним, 18:03, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Вы таки полагаете, что доказали одним конкретным случаем некую всеобъемлющую зак... весь текст скрыт [показать]
     
     
  • 11.63, pavel_simple, 18:27, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    я таки пологаю что Павлин троль, накинул так, что никто и не заметил потому-что ... весь текст скрыт [показать]
     
     
  • 12.64, Аноним, 19:26, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Хм, и правда Значит, фиговый из павлина переводчик На чем основано такое заявл... весь текст скрыт [показать]
     
     
  • 13.66, pavel_simple, 19:41, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    на опыте -- ибо это МСЭ кто сказал ... весь текст скрыт [показать]
     
  • 12.69, pavlinux, 18:49, 20/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Доколе вы будете читать мои примеры как Святое писание D Начинали по CodingSt... весь текст скрыт [показать]
     
     
  • 13.70, pavel_simple, 20:42, 20/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Павлин -- а это ты точно мне пейсал -- а то я чито-то не понимаю всмысле ниче... весь текст скрыт [показать]
     
  • 9.67, AlexAT, 21:29, 18/12/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    Открою вторую страшную тайну, можно ещё lo в raw в NOTRACK запихнуть Чтобы во... весь текст скрыт [показать]
     
  • 4.24, User, 15:24, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Эталонное насрано с мешаниной из больших и маленьких букв в качестве optional-... весь текст скрыт [показать]
     
     
  • 5.29, Crazy Alex, 19:32, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Видишь ли, в этом насрано глав мгновенно выхватывает ESTABLISED,RELATED - и ... весь текст скрыт [показать]
     
     
  • 6.31, User, 21:30, 17/12/2014 [^] [ответить] [смотреть все]  
  • –1 +/
    Вот только все остальные, хвала Аллаху, милостивому и милосердному, привычку выд... весь текст скрыт [показать]
     
     
  • 7.35, pavlinux, 23:08, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Чё ты гонишь Видимо них я не читаешь доки, книги, маны Ну так забей в гугле ... весь текст скрыт [показать]
     
     
  • 8.52, Аноним, 15:41, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    То-то, я смотрю, большинство админов настраивает iptables методом бездумной ... весь текст скрыт [показать]
     
  • 7.41, Аноним, 06:32, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    getopt. Что в ответ может предложить носитель языга?
     
     
  • 8.45, Аноним, 15:26, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    > getopt. Что в ответ может предложить носитель языга?

    Bison.

     
     
  • 9.71, Аноним, 21:32, 20/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Ну-ну.
     
  • 7.75, Аноним, 12:36, 19/12/2015 [^] [ответить] [смотреть все]  
  • +/
    С непонятно кем встроенными бекдорами Читай недавнюю новость на opennet Поэт... весь текст скрыт [показать]
     
  • 4.42, Адекват, 07:31, 18/12/2014 [^] [ответить] [смотреть все]  
  • –6 +/
    Спорим, что конфиг будет очень критичен к количеству отступов от края, и если кт... весь текст скрыт [показать]
     
     
  • 5.48, Аноним, 15:32, 18/12/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    Вы проиграли И так будет с каждым, кто не читал, но осуждает ... весь текст скрыт [показать]
     
  • 5.76, Аноним, 12:42, 19/12/2015 [^] [ответить] [смотреть все]  
  • +/
    Там блоки формируются с помощью {...}. Так что не надо сравнивать с Питоном.
     
  • 3.15, Crazy Alex, 13:08, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Когда всё, что нужнодля понимания, в одной строке, а не в начале блока, находяще... весь текст скрыт [показать]
     
  • 2.13, pavlinux, 12:21, 17/12/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    А чё толку, те же яйцы, только капслок держать nft ADD SET FILTER set1 TYPE IP... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.17, Crazy Alex, 13:11, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Смотря как капсы расставлять Но мне в прицнипе не нравится, что подумали об у... весь текст скрыт [показать]
     
     
  • 4.18, Аноним, 13:23, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Айпитаблес - и для машины не удобен, ибо длинные цепочки правил все нагибают и з... весь текст скрыт [показать]
     
     
  • 5.22, Crazy Alex, 15:12, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Только когда дизайнили новое - о машине подумали, а о человеке не особенно
     
     
  • 6.40, Аноним, 06:04, 18/12/2014 [^] [ответить] [смотреть все]  
  • –1 +/
    Умалишённые - не люди. О нормальных людях подумали.
     
     
  • 7.44, Аноним, 15:24, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Мы, умалишенные, не согласный с вашим не толерантным комментарием Держите минус... весь текст скрыт [показать]
     
  • 7.54, Аноним, 17:20, 18/12/2014 [^] [ответить] [смотреть все]  
  • +2 +/
    Это в тебе гармонЪ играет, половое созревание, то-сё Ну ниче, вырастишь, по... весь текст скрыт [показать]
     
     
  • 8.61, Аноним, 18:05, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Парадокс в том, что большинство людей в данном случае оказались по одну сторону ... весь текст скрыт [показать]
     
     
  • 9.68, Аноним, 21:42, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Да ладно вам спорить. Радуйтесь, что не XML-е :)
     
  • 3.50, Аноним, 15:36, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Такому админу для настройки фаервола нужен эникей-ассистент, который будет стоят... весь текст скрыт [показать]
     
     
  • 4.55, Аноним, 17:22, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Стесняюсь спросить ЧЕМ у вас админ фаервол настраивает ... весь текст скрыт [показать]
     
  • 2.21, User, 14:35, 17/12/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Эээм... а как вы книжки читаете?
     
     
  • 3.23, Crazy Alex, 15:14, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Отлично читаю Абзацы, большие буквы, знаки препинания, приличный шрифт и тому ... весь текст скрыт [показать]
     
     
  • 4.25, User, 15:32, 17/12/2014 [^] [ответить] [смотреть все]  
  • +2 +/
    Ну вот вам в примере выше все перечисленное, кроме разве что больших букв code... весь текст скрыт [показать]
     
     
  • 5.30, Crazy Alex, 20:26, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Еще раз объясняю В варианте iptables для того, чтобы найти нужный участок, прав... весь текст скрыт [показать]
     
     
  • 6.49, Аноним, 15:35, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Ах вот откуда берутся м Hчудаки, которые пишут названия таблиц капсом, из-за чег... весь текст скрыт [показать]
     
  • 5.36, pavlinux, 00:56, 18/12/2014 [^] [ответить] [смотреть все]  
  • +2 +/
    А ты парсер и форматер написал, чтоб сделай мне красива было Мне правильный ... весь текст скрыт [показать]
     
     
  • 6.46, Аноним, 15:28, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Первое больше похоже на nftables, второе больше похоже на iptables ИМХО ... весь текст скрыт [показать]
     
  • 6.57, Аноним, 17:28, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Очень надеюсь что павлин - хороший мaльчик и вложенные селекты и юнион выделил е... весь текст скрыт [показать]
     
  • 2.47, Аноним, 15:31, 18/12/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Открою вам страшную тайну синтаксис nftables надо не парсить глазами , а прост... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.65, Crazy Alex, 19:33, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    В большинстве случаев правила файрволла читать сплошняком как раз не нужно Ну... весь текст скрыт [показать]
     
  • 1.6, pavel_simple, 08:19, 17/12/2014 [ответить] [смотреть все]  
  • +/
    пейсать и фантацировать это не одно и то-же BPF зачастую реализуется в виде вир... весь текст скрыт [показать]
     
  • 1.8, я, 08:44, 17/12/2014 [ответить] [смотреть все]  
  • +/
    И чем оно лучше PF?
     
     
  • 2.9, savant, 09:16, 17/12/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    в отличие от PF у nftables нет фатального недостатка.
     
  • 2.27, Аноним, 17:12, 17/12/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Кстати да, меня тоже поражает стремление лялексоедов запилить очередной ни с чем... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.28, pavel_simple, 17:27, 17/12/2014 [^] [ответить] [смотреть все]  
  • +4 +/
    как давно PF имеет возможность обрабатывать на разных ядрах есть аналог TPROXY,... весь текст скрыт [показать]
     
     
  • 4.32, User, 21:38, 17/12/2014 [^] [ответить] [смотреть все]  
  • –2 +/
    gt оверквотинг удален Ээээм Cisco IOS А от desktop ного, мать его за ногу,... весь текст скрыт [показать]
     
     
  • 5.33, pavel_simple, 21:52, 17/12/2014 [^] [ответить] [смотреть все]  
  • +/
    gt оверквотинг удален тот, кто считает что для десктопного юзера можно ждать... весь текст скрыт [показать]
     
  • 4.58, Аноним, 17:50, 18/12/2014 [^] [ответить] [смотреть все]  
  • +/
    Не так давно Это про знание каратэ, джиу-джитсу, айкидо и других страшных слов ... весь текст скрыт [показать]
     
     
  • 5.59, pavel_simple, 17:57, 18/12/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    > Речь о синтаксе конфиг файла, я щщетаю :)

    в каком слове оригинального вопроса шла речь о синтаксисе? как в рамках указанного синтаксиса (pf) можно использовать отдельные модули обработки трафика?

     
  • 5.62, Аноним, 18:10, 18/12/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    Еще скажите, что оно нормально масштабируется хотя бы на 4-6 ядер D Очевидно, в... весь текст скрыт [показать]
     
  • 1.10, robux, 09:16, 17/12/2014 [ответить] [смотреть все]  
  • +/
    Покажите мне пример конфига Netfilter, и я скажу - практически применимо или нет.
     
     
  • 2.12, pavlinux, 12:17, 17/12/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    :D
     
     
  • 3.16, Crazy Alex, 13:10, 17/12/2014 [^] [ответить] [смотреть все]  
  • +2 +/
    Странный конфиг
     
     
  • 4.37, pavlinux, 00:58, 18/12/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    > Странный конфиг

    :)
    Метка же, GOTO D

    :D
    GOTO )

     
  • 1.26, anonymousZ, 16:01, 17/12/2014 [ответить] [смотреть все]  
  • +/
    Оно конечно правильно, но подскажите: что там с маркировкой пакетов для tc/ip ro?
     
     
  • 2.38, pavlinux, 01:03, 18/12/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > Оно конечно правильно, но подскажите: что там с маркировкой пакетов для tc/ip
    > ro?

    А по мануалить?

    [b]meta[/b][code]
    length Length of the packet in bytes: meta length > 1000
    protocol ethertype protocol: meta protocol vlan
    priority TC packet priority
    mark Packet mark
    iif Input interface index
    iifname Input interface name
    iiftype Input interface type
    oif Output inteface index
    oifname Output inteface name
    oiftype Output interface hardware type
    skuid UID associated with originating socket
    skgid GID associated with originating socket
    rtclassid Routing realm
    [/code]

     
  • 1.72, Аноним, 17:51, 21/12/2014 [ответить] [смотреть все]  
  • +/
    а как он скриптуется например, в iptables можно так iptables -F wan_in_flt for... весь текст скрыт [показать]
     
     
  • 2.73, pavel_simple, 18:23, 21/12/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > а как он скриптуется? например, в iptables можно так:
    > iptables -F wan_in_flt
    > for src in 'cat some_file_with_ip_addresses'; do iptables -A wan_in_flt -s $src -j
    > ACCEPT ; done
    > а эта новомодная хрень так умеет?

    ты только-что понтанулся неумением пользоваться netfilter'ом. нищим тут не подают и поэтому нернём nftables я бы называть на вашем месте тоже не стал.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor