The OpenNET Project / Index page

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

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

16.12.2014 23:42

Проект 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
Тип: Программы
Короткая ссылка: https://opennet.ru/41282-nftables
Ключевые слова: nftables, iptables
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (75) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, ACCA (ok), 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 (ok), 01:16, 17/12/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё бы хорошо, но чертовы правила, состоящие из слов в одном регистре как-то очень неуютно парсятся глазами. iptables с их дефисами и таргетами большими буквами как-то легче в этом плане
     
     
  • 2.5, Аноним (-), 06:20, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Отправляйся-ка SQL читать, дядя. Нечего нам здесь регистры менять.
     
  • 2.7, llolik (ok), 08:43, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ИМХО дело привычки. Зато правила стали лаконичней и уютно структурируются, а не как при "старом режиме"  - порянка текста экранов на несколько без отступов, структуры и часто бывает что и комментариев, которая ещё не сразу пойми, что и делает.
     
     
  • 3.14, pavlinux (ok), 12:39, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Зато правила стали лаконичней и уютно структурируются, а не как при "старом режиме"
    > порянка текста экранов на несколько без отступов, структуры и часто бывает что и комментариев

    У народа какой-то патологический сидром футуризма - всё, что новое по определению лучше.
    Маяковский тоже это любил, застрелился (или помогли), так что вы аккуратнее.




    table ip filter {
         chain input {
              type filter hook input priority 0;

              # accept traffic originated from us
              ct state established,related accept

              # accept any localhost traffic
              iif lo accept

              # count and drop any other traffic
              counter drop
         }
    }





    iptables -t filter -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -t filter -I INPUT -i lo -j ACCEPT
    iptables -t filter -Z



    Это просто нириально тяжело!

     
     
  • 4.20, Аноним (-), 14:26, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Выстрой-ка пооптимальнее, чтобы нагрузка на процессор была поменьше. Напиши комментарии, как в первом случае. Тогда и поговорим.
     
     
  • 5.34, pavlinux (ok), 22:59, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем комментарии, там в командах все написано Вот тут ещё можно, пару строчек... большой текст свёрнут, показать
     
     
  • 6.39, Аноним (-), 06:03, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Вот это удобно, да?
     
     
  • 7.43, pavlinux (ok), 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 (ok), 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 (ok), 18:27, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    я таки пологаю что Павлин троль, накинул так, что никто и не заметил потому-что ... текст свёрнут, показать
     
     
  • 12.64, Аноним (-), 19:26, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Хм, и правда Значит, фиговый из павлина переводчик На чем основано такое заявл... текст свёрнут, показать
     
     
  • 13.66, pavel_simple (ok), 19:41, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    на опыте -- ибо это МСЭ кто сказал ... текст свёрнут, показать
     
  • 12.69, pavlinux (ok), 18:49, 20/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Доколе вы будете читать мои примеры как Святое писание D Начинали по CodingSt... текст свёрнут, показать
     
     
  • 13.70, pavel_simple (ok), 20:42, 20/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Павлин -- а это ты точно мне пейсал -- а то я чито-то не понимаю всмысле ниче... текст свёрнут, показать
     
  • 9.67, AlexAT (ok), 21:29, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Открою вторую страшную тайну, можно ещё lo в raw в NOTRACK запихнуть Чтобы во... текст свёрнут, показать
     
  • 4.24, User (??), 15:24, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Это просто нириально тяжело!

    Эталонное "насрано" с мешаниной из больших и маленьких букв в качестве optional-argument'ов, сочетание '-' и '--' в одной команде, UPPERCASE в качестве option-argument'ов, практически полное отсутствие сколько-нибудь вменяемой мнемоники для всего этого - в общем, дети, почитайте GNU/POSIX Utility Syntax Guidelines И НЕ ДЕЛАЙТЕ ТАК БОЛЬШЕ!!!1111АДЫНАДЫНАДЫН

    А еще лучше - посмотрите, как это сделано хотя бы в IPFW (Про PF молчу) и сделайте так же. Впрочем, за неимением гербовой - сойдет и первый вариант

     
     
  • 5.29, Crazy Alex (ok), 19:32, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Видишь ли, в этом "насрано" глав мгновенно выхватывает "ESTABLISED,RELATED" - и контекст для понимания готов, я уже знаю, о чем речь. Так же и таргет большими буквами четко виден, даже если за ним идут параметры. То есть можно быстро понять, о чем правило, а потом, если надо, смотреть детали. А мнемоника... Полтора десятка общеупотребимых параметров запоминается элементарно, а за остлаьным раз в пол-года в справочник заглянуть не проблема. Ну так это всегда так - распространённое помнишь, об остальном - читаешь при надобности.

    А в ipfw-подобном синтаксисе вот этих подсказок нет, там надо именно читать всё простыню. В принципе, так как здесь, в отличие от ipfw, имеем не параметры командной строки в простыне sh-скрипта, а отдельные файлы, редакторы, скорее всего, будут поддерживать раскраску, что может и снять проблему.

     
     
  • 6.31, User (??), 21:30, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Видишь ли, в этом "насрано" глав мгновенно выхватывает "ESTABLISED,RELATED" - и контекст для понимания готов, я уже знаю, о чем речь.

    Вот только все остальные, хвала Аллаху, милостивому и милосердному, привычку выделять каждое второе ВАЖНОЕ слово КАПСОМ почему-то не подхватили. Хотя... О, точно - MS PowerShell напоминает. Точно такое же "насрано" с CamelCase-Где-Надо--и-Где-Не-НАДО, раскраска всего и вся "под радугу" и вечная необходимость квотить пробелы... спасибо, обойдусь.
    > А мнемоника... Полтора десятка общеупотребимых параметров запоминается элементарно, а за остлаьным раз в пол-года в справочник заглянуть не проблема. Ну так это всегда так - распространённое помнишь, об остальном - читаешь при надобности.

    Заменить "запоминается" на "задрачивается" и ага. Вот только для большинства *nix'оводов firewall не является "предметом наипервейшей необходимости" - 99,95% *nix-инсталляций имеют firewall с десятком правил (Или не имеют его вовсе, ага), для которых многослойная архитектура iptables явно избыточна, достаточно плоского firewall'а, а там, где сложность реально нужна давным-давно стоят cisco-juniper-brocade. Как-то так.
    В отличие от - набор правил ipfw\pf\ipf именно что ЧИТАЕТСЯ любым носителем английского языка, минимально знакомым с предметной областью. Не надо ничего "задрачивать", в простых случаях (Которых абсолютное большинство) берешь, читаешь и пишешь по образцу. Profit!

     
     
  • 7.35, pavlinux (ok), 23:08, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Вот только все остальные, хвала Аллаху, милостивому и милосердному,
    > привычку выделять каждое второе ВАЖНОЕ слово КАПСОМ почему-то не подхватили.

    Чё ты гонишь? Видимо них...я не читаешь доки, книги, маны. Ну так забей в гугле Linux Firewall Howto

    Первые три ссцылки:
    http://www.howtogeek.com/177621/the-beginners-guide-to-iptables-the-linux-fir
    http://doc.norang.ca/iptables.html
    http://www.comentum.com/unix-linux-ip-firewall.html

     
     
  • 8.52, Аноним (-), 15:41, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    То-то, я смотрю, большинство админов настраивает iptables методом бездумной ... текст свёрнут, показать
     
  • 7.41, Аноним (-), 06:32, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    getopt. Что в ответ может предложить носитель языга?
     
     
  • 8.45, Аноним (-), 15:26, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Bison ... текст свёрнут, показать
     
     
  • 9.71, Аноним (-), 21:32, 20/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ну-ну ... текст свёрнут, показать
     
  • 7.75, Аноним (-), 12:36, 19/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >где сложность реально нужна давным-давно стоят cisco-juniper-brocade

    С "непонятно кем" встроенными бекдорами. Читай недавнюю новость на opennet. Поэтому доверие к такой "защите" стремится к нулю.

     
  • 4.42, Адекват (ok), 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 (ok), 13:08, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Когда всё, что нужнодля понимания, в одной строке, а не в начале блока, находящемся выше на четыре экрана - тоже свои плюсы есть. Но я, в общем-то, не против структуры. Только под такое надо, как минимум, раскраску в редакторе.
     
  • 2.13, pavlinux (ok), 12:21, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А чё толку, те же яйцы, только капслок держать

    nft ADD SET FILTER set1 { TYPE IPV4_ADDR ; POLICY MEMORY ;}

     
     
  • 3.17, Crazy Alex (ok), 13:11, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Смотря как капсы расставлять... Но мне в прицнипе не нравится, что подумали об удобстве для машины, но не для читающего
     
     
  • 4.18, Аноним (-), 13:23, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Айпитаблес - и для машины не удобен, ибо длинные цепочки правил все нагибают и занести 200 айпишников - чревато. И для человека - не очень. Хотя в плане длинных цепочек частично пролечено ipset. Но там читабельность еще больше в ауте: то что в правиле - одно, а то что в set со списком к которым правило применяется - другое. Две разные сущности.
     
     
  • 5.22, Crazy Alex (ok), 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-и битном синклере там :)
    А на писюгах - нет. Писюг - это море ресурсов, конфиг не надо парсить 100500 раз в секунду, так что пусть разбирает то что удобно людям. Период. АзЪ. Ы!.

     
     
  • 8.61, Аноним (-), 18:05, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Парадокс в том, что большинство людей в данном случае оказались по одну сторону ... текст свёрнут, показать
     
     
  • 9.68, Аноним (-), 21:42, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Да ладно вам спорить Радуйтесь, что не XML-е ... текст свёрнут, показать
     
  • 3.50, Аноним (-), 15:36, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > А чё толку, те же яйцы, только капслок держать
    > nft ADD SET FILTER set1 { TYPE IPV4_ADDR ; POLICY MEMORY ;}

    Такому админу для настройки фаервола нужен эникей-ассистент, который будет стоять рядом и в нужный момент зажимать Shift :)

     
     
  • 4.55, Аноним (-), 17:22, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Такому админу для настройки фаервола нужен эникей-ассистент, который будет стоять рядом
    > и в нужный момент зажимать Shift :)

    Стесняюсь спросить ЧЕМ у вас админ фаервол настраивает :))))

     
  • 2.21, User (??), 14:35, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Эээм... а как вы книжки читаете?
     
     
  • 3.23, Crazy Alex (ok), 15:14, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Отлично читаю.

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

     
     
  • 4.25, User (??), 15:32, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Отлично читаю.
    > Абзацы, большие буквы, знаки препинания, приличный шрифт и тому подобное - они
    > ж не просто так.

    Ну вот вам в примере выше все перечисленное, кроме разве что больших букв:



    table ip filter {
          chain input {
               type filter
    hook input priority 0;

               # accept
    traffic originated from us
               ct state
    established,related accept

               # accept
    any localhost traffic
               iif lo
    accept

               # count
    and drop any other traffic
               counter drop

          }
    }



    и? Н-Ад0 чТО--Нибудь втАКОм /РОДЕ,СдELатЬ ПуIIIеЙ чИтАеМ0$ти for?

     
     
  • 5.30, Crazy Alex (ok), 20:26, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Еще раз объясняю. В варианте iptables для того, чтобы найти нужный участок, правила не нужно читать. Достаточно выхватить взглядом те самые большие буквы - хоть таблицу, хоть таргет. Эдакий "визуальный grep". А детально смотреть только те строки, в которых есть нужное.

    А когда всё сплошняком - эту плошную простыню надо читать сплошняком.

    Возможно, у тебя нет этого навыка и поэтому ты не понимаешь, о чем речь.

     
     
  • 6.49, Аноним (-), 15:35, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Еще раз объясняю. В варианте iptables для того, чтобы найти нужный участок,
    > правила не нужно читать. Достаточно выхватить взглядом те самые большие буквы
    > - хоть таблицу, хоть таргет.

    Ах вот откуда берутся м^Hчудаки, которые пишут названия таблиц капсом, из-за чего над каждым приходится секунду думать - это новый таргет такой, или просто автор рулесета чудак.

     
  • 5.36, pavlinux (ok), 00:56, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Ну вот вам в примере выше все перечисленное, кроме разве что больших букв:

    А ты парсер и форматер написал, чтоб "сделай мне красива" было?!


    Мне правильный SQL синтаксис нравиться из-за того, что можно
    легко отличить команды от пользовательских данных.

    SELECT a.snum, sname, onum, 'Highest on', odate
    FROM (Salespeople a, Orders b WHERE a.snum = b.snum
    AND b.mak = (SELECT MAX(mak) FROM Orders c WHERE c.odate = b.odate) UNION
    SELECT a.snum, (sname, (onum 'Lowest on', odate
    FROM ( Salespeople a, Orders b WHERE a.snum = b.snum
    AND b.mak = (SELECT MIN(mak) FROM Orders c WHERE c.odate = b.odate);

    А это - "Многабукав, сам нах разбирайся"

    select a.snum, sname, onum, 'Highest on', odate
    from (salespeople a, orders b where a.snum = b.snum  
    and b.mak = (select max (mak) from orders c where c.odate = b.odate) union
    select a.snum, (sname, (onum 'Lowest on', odate
    from ( salespeople a, orders b where a.snum = b.snum
    and b.mak = (select  min(mak) from orders c where c.odate = b.odate);

     
     
  • 6.46, Аноним (-), 15:28, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Мне правильный SQL синтаксис нравиться из-за того, что можно
    > легко отличить команды от пользовательских данных.

     
    > А это - "Многaбукав, сам нaх разбирайся"

    Первое больше похоже на nftables, второе больше похоже на iptables. ИМХО.

     
  • 6.57, Аноним (-), 17:28, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Очень надеюсь что павлин - хороший мaльчик и вложенные селекты и юнион выделил ещё и идентами, но плoxой мaльчик опеннет сожрал чужой формат :)


     
  • 2.47, Аноним (-), 15:31, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Всё бы хорошо, но чертовы правила, состоящие из слов в одном регистре
    > как-то очень неуютно парсятся глазами. iptables с их дефисами и таргетами
    > большими буквами как-то легче в этом плане

    Открою вам страшную тайну: синтаксис nftables надо не "парсить глазами", а просто читать.
    Читается он отлично.

     
     
  • 3.65, Crazy Alex (ok), 19:33, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    В большинстве случаев правила файрволла читать (сплошняком) как раз не нужно. Нужно найти интересующий кусок и в нём разобраться/что-то подправить. Если меня интересует правило для SNAT, то чем быстрее я пропущу все ACCEPT/REJECT - тем лучше.
     

  • 1.6, pavel_simple (ok), 08:19, 17/12/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/

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

    пейсать и фантацировать это не одно и то-же.
    BPF зачастую реализуется в виде виртуальной машины (виртуальной -- потому-что опкоды интерпретируются), а зачастую например как на многих архитектурах в Linux или x86 во FreeBSD они компилируются в нативный код (jit).

    nftables не использует никакую компиляцию в байткод -- nftables в пространстве ядра представляет собой FSM, юзерспейсная часть nftables в зависимости от правил фильтрации подготавливает для ядра модель для данной FSM.

    >Подобный подход позволяет значительно
    > сократить размер кода фильтрации, работающего на уровне ядра и вынести все
    > функции разбора правил и логики работы с протоколами в пространство пользователя.

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

     
  • 1.8, я (?), 08:44, 17/12/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И чем оно лучше PF?
     
     
  • 2.9, savant (ok), 09:16, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    в отличие от PF у nftables нет фатального недостатка.
     
  • 2.27, Аноним (-), 17:12, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати да, меня тоже поражает стремление лялексоедов запилить очередной ни с чем не совместимый кривой велосипед вместо того, чтобы взять готовое проверенное годами решение вроде PF,
     
     
  • 3.28, pavel_simple (ok), 17:27, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Кстати да, меня тоже поражает стремление лялексоедов запилить очередной ни с чем
    > не совместимый кривой велосипед вместо того, чтобы взять готовое проверенное годами
    > решение вроде PF,

    как давно PF имеет возможность обрабатывать на разных ядрах?
    есть аналог TPROXY, RATEEST, NETMAP, cgroup, bpf, audit, cluster, owner ... десятки их?
    как насчёт побыстрому налабать свой модуль без пересборки ядра?
    как там с NAT/statefull filter tftp/sctp/sip/h323/pptp?
    как у вас теперь с поддержкой списков ip/сетей/портов/меток/комбинаций_вышеперечисленного ?

    покажите наконец ваш некривой велосипед -- то-то ляликсоиды подивяться

     
     
  • 4.32, User (??), 21:38, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >[оверквотинг удален]
    >> не совместимый кривой велосипед вместо того, чтобы взять готовое проверенное годами
    >> решение вроде PF,
    > как давно PF имеет возможность обрабатывать на разных ядрах?
    > есть аналог TPROXY, RATEEST, NETMAP, cgroup, bpf, audit, cluster, owner ... десятки
    > их?
    > как насчёт побыстрому налабать свой модуль без пересборки ядра?
    > как там с NAT/statefull filter tftp/sctp/sip/h323/pptp?
    > как у вас теперь с поддержкой списков ip/сетей/портов/меток/комбинаций_вышеперечисленного
    > ?
    > покажите наконец ваш некривой велосипед -- то-то ляликсоиды подивяться

    Ээээм... Cisco IOS?
    А от desktop'ного, мать его за ногу, linux'а хочется иметь firewall, правила которого можно с минимальными усилиями читать глазами, править пальцами (Не ломая их при этом) и понимать головой (Среднестатистического пользователя). Простые вещи должны делаться просто, сложные - немного сложнее, вместо этого... ну вы видите. "ЗАТО ИЗ ЭТОГО МОЖНО СОБРАТЬ АДРОННЫЙ КОЛЛАЙДЕР!!111"

     
     
  • 5.33, pavel_simple (ok), 21:52, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >> как там с NAT/statefull filter tftp/sctp/sip/h323/pptp?
    >> как у вас теперь с поддержкой списков ip/сетей/портов/меток/комбинаций_вышеперечисленного
    >> ?
    >> покажите наконец ваш некривой велосипед -- то-то ляликсоиды подивяться
    > Ээээм... Cisco IOS?
    > А от desktop'ного, мать его за ногу, linux'а хочется иметь firewall, правила
    > которого можно с минимальными усилиями читать глазами, править пальцами (Не ломая
    > их при этом) и понимать головой (Среднестатистического пользователя). Простые вещи должны
    > делаться просто, сложные - немного сложнее, вместо этого... ну вы видите.
    > "ЗАТО ИЗ ЭТОГО МОЖНО СОБРАТЬ АДРОННЫЙ КОЛЛАЙДЕР!!111"

    тот, кто считает что "для десктопного юзера" можно ждать какое-то понимание какого-то там синтиксиса pf/ipfw/netfilter/nftables/cisco_acl просто малолетний чудак.

    при чём тут ось для коммутаторов/маршрутизаторов? на какой вопрос вы ответили написав про иос?

     
  • 4.58, Аноним (-), 17:50, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > как давно PF имеет возможность обрабатывать на разных ядрах?

    Не так давно.
    > есть аналог TPROXY, RATEEST, NETMAP, cgroup, bpf, audit, cluster, owner ... десятки

    Это про знание каратэ, джиу-джитсу, айкидо и других страшных слов? :)
    > покажите наконец ваш некривой велосипед -- то-то ляликсоиды подивяться

    Выдыхай бобёр. Речь о синтаксе конфиг файла, я щщетаю :) что у pf-а оно более для людей. Тчк.

     
     
  • 5.59, pavel_simple (ok), 17:57, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Речь о синтаксе конфиг файла, я щщетаю :)

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

     
  • 5.62, Аноним (-), 18:10, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не так давно.

    Еще скажите, что оно нормально масштабируется хотя бы на 4-6 ядер :D

    >> есть аналог TPROXY, RATEEST, NETMAP, cgroup, bpf, audit, cluster, owner ... десятки
    > Это про знание каратэ, джиу-джитсу, айкидо и других страшных слов? :)

    Очевидно, возможности нормального фаервола для любителей pf выглядят как нечто заоблачное.

    > Выдыхай бобёр. Речь о синтаксе конфиг файла, я щщетаю :) что у
    > pf-а оно более для людей. Тчк.

    Это ваше личное мнение. А у других людей оно может быть и другое, и даже прямо противоположное :)

     

  • 1.10, robux (ok), 09:16, 17/12/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Покажите мне пример конфига Netfilter, и я скажу - практически применимо или нет.
     
     
  • 2.12, pavlinux (ok), 12:17, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    :D
     
     
  • 3.16, Crazy Alex (ok), 13:10, 17/12/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Странный конфиг
     
     
  • 4.37, pavlinux (ok), 00:58, 18/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Странный конфиг

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

    :D
    GOTO )

     

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

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

    [b]meta[/b]


    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



     

  • 1.72, Аноним (-), 17:51, 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

    а эта новомодная хрень так умеет?

     
     
  • 2.73, pavel_simple (ok), 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:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру