URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 100926
[ Назад ]

Исходное сообщение
"Выпуск пакетного фильтра nftables 0.4"

Отправлено opennews , 17-Дек-14 00:09 
Проект Netfilter представил (http://lists.netfilter.org/pipermail/netfilter-announce/2014...) четвёртый выпуск нового пакетного фильтра nftables (0.4), а также выпуск сопутствующей библиотеки libnftnl 1.0.3 (http://lists.netfilter.org/pipermail/netfilter-announce/2014...), предоставляющей низкоуровневый 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, которая проверяет корректность правил и транслирует их в байткод. Правила  могут как добавляться инкрементально, так и загружаться целиком из файла на диске. Синтаксис правил (http://people.netfilter.org/wiki-nftables/index.php/Main_Page) не похож (https://home.regit.org/netfilter-en/nftables-quick-howto/) на iptables и отличается использованием иерархических блочных структур  вместо линейной схемы.  Язык классификации правил основан на реальной грамматике, при обработке которой используется сгенерированный в bison парсер. Поддерживается словарный маппинг (хеши), поиск по наборам правил (sets), диапазоны значений (можно определять подсети), средства для отслеживания соединений, NAT, ведение лога. Для обеспечения совместимости с правилами iptables/ip6tables предоставляется специальная прослойка.


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


-  Поддержка операций с глобальными наборами правил (ruleset). Возможность появилась в ядре 3.18). Например, командой "<font color="#461b7e">nft flush ruleset</font>" можно разом очистить все таблицы, цепочки и правила. Посмотреть доступные наборы правил можно командой "<font color="#461b7e">nft list ruleset</font>". Результаты вывода данной команды можно сохранить в файл и затем загрузить при помощи "<font color="#461b7e">nft -f ruleset.file</font>" для восстановления сохранённого состояния, что будет аналогично выполнению iptables-restore c захватом правил для всех поддерживаемых семейств протоколов (ip, ip6, inet, bridge и arp);

-  Поддержка ведения полного лога для всех семейств протоколов, в том числе nfnetlink_log. Поддерживается начиная с ядра Linux 3.17;

-  Возможность автоматического выбора оптимальной реализации списка (set). Поддерживается начиная с ядра Linux 3.16. Метод оптимизации списка можно определить и вручную, например, для включения оптимизации по потреблению памяти можно указать "<font color="#461b7e">nft add set filter set1 { type ipv4_addr ; policy memory ; }</font>", а для оптимизации для достижения максимальной производительности - "<font color="#461b7e">nft add set filter set1 { type ipv4_addr ; policy performance ; }</font>". Аналогичным образом можно поступить и для словарей (maps), например "<font color="#461b7e">nft add map filter map1 { type ipv4_addr : verdict ; policy performace ; }</font>";

-  Полноценная поддержка операции отклонения (reject) с отправкой ответного сообщения об ошибке. Например, "<font color="#461b7e">nft add rule filter input reject with icmp type host-unreachable</font>" или "<font color="#461b7e">nft add rule filter input reject with tcp reset</font>";


-  Поддержка трансляции адресов (максарадинга) для IPv4 и IPv6. Например, "<font color="#461b7e">nft add rule nat postrouting masquerade</font>". Работает в ядрах Linux, начиная с 3.18;

-  Поддержка перенаправления запросов (redirect). Например, "<font color="#461b7e">nft add rule nat prerouting tcp dport 22 redirect to 2222</font>". Работает в ядрах Linux, начиная с 3.19-rc;

-  Поддержка NAT-флагов random, fully-random и persistent;

-  Проверка непротиворечивости пересечений между обновлениями и дампами ruleset;
-  Метаинформация о пакете расширена поддержкой сопоставлений pkttype, cpu и devgroup;

-  Добавлен скрипт для автоматического тестирования на предмет появления регрессивных изменений;
-  Возможность отключения использования библиотеки libreadline и отладки на стадии выполнения скрипта configure;
-  Система сборки переведена на использование autotools;

-  Изменение синтаксиса: Флаг 'queue' теперь рассматривается как разделённый запятыми список символов, например "<font color="#461b7e">nft add filter input counter queue num 0-3 fanout,bypass</font>";

-  По умолчанию прекращено преобразования имён в правилах. IP-адреса всегда должны задаваться в числовом представлении. Для резолвинга имён хостов следует явно указывать опцию '-N'.

URL: http://lists.netfilter.org/pipermail/netfilter-announce/2014...
Новость: http://www.opennet.dev/opennews/art.shtml?num=41282


Содержание

Сообщения в этом обсуждении
"Выпуск пакетного фильтра nftables 0.4"
Отправлено ACCA , 17-Дек-14 00:09 
Наконец-то маскарад доделали, а то вообще неприлично было.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 17-Дек-14 01:02 
А шейпинг встроили ?

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 17-Дек-14 01:20 
Dummynet, не?

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 17-Дек-14 13:29 
> А шейпинг встроили ?

man tc же :)


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 19-Дек-15 12:21 
За это отвечает другая подсистема ядра QoS. Зачем дублировать функциональность?

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Crazy Alex , 17-Дек-14 01:16 
Всё бы хорошо, но чертовы правила, состоящие из слов в одном регистре как-то очень неуютно парсятся глазами. iptables с их дефисами и таргетами большими буквами как-то легче в этом плане

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 17-Дек-14 06:20 
Отправляйся-ка SQL читать, дядя. Нечего нам здесь регистры менять.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено llolik , 17-Дек-14 08:43 
ИМХО дело привычки. Зато правила стали лаконичней и уютно структурируются, а не как при "старом режиме"  - порянка текста экранов на несколько без отступов, структуры и часто бывает что и комментариев, которая ещё не сразу пойми, что и делает.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavlinux , 17-Дек-14 12:39 
> Зато правила стали лаконичней и уютно структурируются, а не как при "старом режиме"
> порянка текста экранов на несколько без отступов, структуры и часто бывает что и комментариев

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


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

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

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 17-Дек-14 14:26 
Выстрой-ка пооптимальнее, чтобы нагрузка на процессор была поменьше. Напиши комментарии, как в первом случае. Тогда и поговорим.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavlinux , 17-Дек-14 22:59 
> Напиши комментарии, как в первом случае. Тогда и поговорим.

Зачем комментарии, там в командах все написано.

Вот тут ещё можно, пару строчек.  

proto gre and ((ip[((ip[0]&0xf)<<2):4] & 0xff7fffff) = 0x3001880b) and
                   (
                    (
                     (ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) +
                   12)]=0x21) and ((ip[((((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] &
                   0x80) >> 5) + 12)+1 +12):4] & 0xffffff00 = 0x52754000) or
                   ((ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) + 12)+1
                   +9]=17) and ((ip[(((((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] & 0x80)
                   >> 5) + 12)+1 +((ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] &

                   0x80) >> 5) + 12)+1]&0xf)<<2))+12):4]=0x64323a69) )))
                    ) or (
                     (ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) +
                   12):2]=0xff03) and (ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] &
                   0x80) >> 5) + 12)+2]=0x21) and ((ip[((((ip[0]&0xf)<<2) +
                   ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) + 12)+3 +12):4] & 0xffffff00 =
                   0x52754000) or ((ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] &
                   0x80) >> 5) + 12)+3 +9]=17) and ((ip[(((((ip[0]&0xf)<<2) +
                   ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) + 12)+3 +((ip[(((ip[0]&0xf)<<2)
                   + ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) +
                   12)+3]&0xf)<<2))+12):4]=0x64323a69) )))
                    ) or (
                     (ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) +
                   12):4]=0xff030021) and ((ip[((((ip[0]&0xf)<<2) +
                   ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) + 12)+4 +12):4] & 0xffffff00 =
                   0x52754000) or ((ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] &
                   0x80) >> 5) + 12)+4 +9]=17) and ((ip[(((((ip[0]&0xf)<<2) +
                   ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) + 12)+4 +((ip[(((ip[0]&0xf)<<2)
                   + ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) +
                   12)+4]&0xf)<<2))+12):4]=0x64323a69) )))
                    ) or (
                     (ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) +
                   12):2]=0x0021) and ((ip[((((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] &
                   0x80) >> 5) + 12)+2 +12):4] & 0xffffff00 = 0x52754000) or
                   ((ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] & 0x80) >> 5) + 12)+2
                   +9]=17) and ((ip[(((((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] & 0x80)
                   >> 5) + 12)+2 +((ip[(((ip[0]&0xf)<<2) + ((ip[((ip[0]&0xf)<<2)+1] &

                   0x80) >> 5) + 12)+2]&0xf)<<2))+12):4]=0x64323a69) )))
                    )
                   )



"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 06:03 
Вот это удобно, да?

"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavlinux , 18-Дек-14 15:21 
> Вот это удобно, да?

Там просили "чтобы нагрузка на процессор была поменьше."


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 15:38 
>> Вот это удобно, да?
> Там просили "чтобы нагрузка на процессор была поменьше."

Открою страшную тайну - можно было просто правило с -i lo перенести повыше, чтобы оно не дергало conntrack на локальных пакетах.


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 17:10 
Наглядно на тему: работая над кодом програмы её можно ускорить на 10-15%, а рабоная над алгоритмом - на пару порядков! :)

"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavel_simple , 18-Дек-14 17:24 
>>> Вот это удобно, да?
>> Там просили "чтобы нагрузка на процессор была поменьше."
> Открою страшную тайну - можно было просто правило с -i lo перенести
> повыше, чтобы оно не дергало conntrack на локальных пакетах.

cat /proc/net/ip_conntrack |wc
     30     420    4478
cat /proc/net/ip_conntrack |grep -c 127.0.0.1
0

на друой машине
cat /proc/net/ip_conntrack | wc
  10208  142628 1505300
cat /proc/net/ip_conntrack | grep -c 127.0.0.1
30

оптимизатор унылый


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 18:03 
Вы таки полагаете, что доказали одним конкретным случаем некую всеобъемлющую закономерность?

"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavel_simple , 18-Дек-14 18:27 
> Вы таки полагаете, что доказали одним конкретным случаем некую всеобъемлющую закономерность?

я таки пологаю что Павлин троль, накинул так, что никто и не заметил потому-что


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

сии правила делают инсерт -- но не читавшим соответствующий ман этого не понять.
, кроме того ответственно заявляю что на МСЭ общение на интерфейсе lo минимально, и даже если МСЭ имеет такие нестандартные функции как transparent http/ftp proxy поиск в контраке делали не дибилы, о чём сведующие люди могли поинтересоваться в find ./ -iname '*conntrac*'


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 19:26 
> сии правила делают инсерт

Хм, и правда. Значит, фиговый из павлина переводчик.

> кроме того ответственно заявляю что на МСЭ общение на интерфейсе lo минимально

На чем основано такое заявление?

> поиск в контраке делали не дeбилы

Тем не менее, это наиболее тяжелая операция во всем процессе обработки пакетов фаерволом.


"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavel_simple , 18-Дек-14 19:41 
>> сии правила делают инсерт
> Хм, и правда. Значит, фиговый из павлина переводчик.
>> кроме того ответственно заявляю что на МСЭ общение на интерфейсе lo минимально
> На чем основано такое заявление?

на опыте -- ибо это МСЭ

>> поиск в контраке делали не дeбилы
> Тем не менее, это наиболее тяжелая операция во всем процессе обработки пакетов
> фаерволом.

кто сказал?


"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavlinux , 20-Дек-14 18:49 
>> Вы таки полагаете, что доказали одним конкретным случаем некую всеобъемлющую закономерность?
> я таки пологаю что Павлин троль, накинул так, что никто и не заметил потому-что
> 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
> сии правила делают инсерт -- но не читавшим соответствующий ман этого не
> понять.

Доколе вы будете читать мои примеры как Святое писание? :D
Начинали по CodingStyle... Закончим, как всегда ассемблерными вставками в фирмварь сетевухи?!  


"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavel_simple , 20-Дек-14 20:42 
>>> Вы таки полагаете, что доказали одним конкретным случаем некую всеобъемлющую закономерность?
>> я таки пологаю что Павлин троль, накинул так, что никто и не заметил потому-что
>> 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
>> сии правила делают инсерт -- но не читавшим соответствующий ман этого не
>> понять.
> Доколе вы будете читать мои примеры как Святое писание? :D
> Начинали по CodingStyle... Закончим, как всегда ассемблерными вставками в фирмварь сетевухи?!

Павлин? -- а это ты точно мне пейсал? -- а то я чито-то не понимаю.
всмысле ничего не понимаю.. вот, совсем запутался Ж:(


"Выпуск пакетного фильтра nftables 0.4"
Отправлено AlexAT , 18-Дек-14 21:29 
Открою вторую страшную тайну, можно ещё lo в raw в NOTRACK запихнуть... Чтобы вообще conntrack не дёргало.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено User , 17-Дек-14 15:24 
> Это просто нириально тяжело!

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

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Crazy Alex , 17-Дек-14 19:32 
Видишь ли, в этом "насрано" глав мгновенно выхватывает "ESTABLISED,RELATED" - и контекст для понимания готов, я уже знаю, о чем речь. Так же и таргет большими буквами четко виден, даже если за ним идут параметры. То есть можно быстро понять, о чем правило, а потом, если надо, смотреть детали. А мнемоника... Полтора десятка общеупотребимых параметров запоминается элементарно, а за остлаьным раз в пол-года в справочник заглянуть не проблема. Ну так это всегда так - распространённое помнишь, об остальном - читаешь при надобности.

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено User , 17-Дек-14 21:30 
>Видишь ли, в этом "насрано" глав мгновенно выхватывает "ESTABLISED,RELATED" - и контекст для понимания готов, я уже знаю, о чем речь.

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

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavlinux , 17-Дек-14 23:08 
> Вот только все остальные, хвала Аллаху, милостивому и милосердному,
> привычку выделять каждое второе ВАЖНОЕ слово КАПСОМ почему-то не подхватили.

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

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 15:41 
> Чё ты гонишь? Видимо них...я не читаешь доки, книги, маны. Ну так
> забей в гугле Linux Firewall Howto

То-то, я смотрю, большинство "админов" "настраивает" iptables методом бездумной копипасты из гугла, и допиливает напильником под свои нужды при помощи а) ненаучного тыка б) создания тем "памагите пажалуйста" на каком-нибудь LOR-е.


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 06:32 
getopt. Что в ответ может предложить носитель языга?

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 15:26 
> getopt. Что в ответ может предложить носитель языга?

Bison.


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 20-Дек-14 21:32 
Ну-ну.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 19-Дек-15 12:36 
>где сложность реально нужна давным-давно стоят cisco-juniper-brocade

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Адекват , 18-Дек-14 07:31 
Спорим, что конфиг будет очень критичен к количеству отступов от края, и если кто-то не дай бог сделает лишний отступ или на один меньше - правило не будет работать, просто молча на будет работать без объяснения причин ?

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 15:32 
> Спорим, что конфиг будет очень критичен к количеству отступов от края, и
> если кто-то не дай бог сделает лишний отступ или на один
> меньше - правило не будет работать, просто молча на будет работать
> без объяснения причин ?

Вы проиграли.

И так будет с каждым, кто не читал, но осуждает.


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 19-Дек-15 12:42 
Там блоки формируются с помощью {...}. Так что не надо сравнивать с Питоном.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Crazy Alex , 17-Дек-14 13:08 
Когда всё, что нужнодля понимания, в одной строке, а не в начале блока, находящемся выше на четыре экрана - тоже свои плюсы есть. Но я, в общем-то, не против структуры. Только под такое надо, как минимум, раскраску в редакторе.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavlinux , 17-Дек-14 12:21 
А чё толку, те же яйцы, только капслок держать

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Crazy Alex , 17-Дек-14 13:11 
Смотря как капсы расставлять... Но мне в прицнипе не нравится, что подумали об удобстве для машины, но не для читающего

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 17-Дек-14 13:23 
Айпитаблес - и для машины не удобен, ибо длинные цепочки правил все нагибают и занести 200 айпишников - чревато. И для человека - не очень. Хотя в плане длинных цепочек частично пролечено ipset. Но там читабельность еще больше в ауте: то что в правиле - одно, а то что в set со списком к которым правило применяется - другое. Две разные сущности.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Crazy Alex , 17-Дек-14 15:12 
Только когда дизайнили новое - о машине подумали, а о человеке не особенно

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 06:04 
Умалишённые - не люди. О нормальных людях подумали.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 15:24 
Мы, умалишенные, не согласный с вашим не толерантным комментарием. Держите минус.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 17:20 
> Умалишённые - не люди. О нормальных людях подумали.

Это в тебе гармонЪ играет, половое созревание, то-сё ...
Ну ниче, вырастишь, поймёшь что так прогибать человеков под машину можно когда но только когда нужно. Ну на каком нить 8-и битном синклере там :)
А на писюгах - нет. Писюг - это море ресурсов, конфиг не надо парсить 100500 раз в секунду, так что пусть разбирает то что удобно людям. Период. АзЪ. Ы!.


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 18:05 
> А на писюгах - нет. Писюг - это море ресурсов, конфиг не
> надо парсить 100500 раз в секунду, так что пусть разбирает то
> что удобно людям. Период. АзЪ. Ы!.

Парадокс в том, что большинство людей в данном случае оказались по одну сторону баррикад с машинами.


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 21:42 
Да ладно вам спорить. Радуйтесь, что не XML-е :)

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 15:36 
> А чё толку, те же яйцы, только капслок держать
> nft ADD SET FILTER set1 { TYPE IPV4_ADDR ; POLICY MEMORY ;}

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 17:22 
> Такому админу для настройки фаервола нужен эникей-ассистент, который будет стоять рядом
> и в нужный момент зажимать Shift :)

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено User , 17-Дек-14 14:35 
Эээм... а как вы книжки читаете?

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Crazy Alex , 17-Дек-14 15:14 
Отлично читаю.

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено User , 17-Дек-14 15:32 
> Отлично читаю.
> Абзацы, большие буквы, знаки препинания, приличный шрифт и тому подобное - они
> ж не просто так.

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

 
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?

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Crazy Alex , 17-Дек-14 20:26 
Еще раз объясняю. В варианте iptables для того, чтобы найти нужный участок, правила не нужно читать. Достаточно выхватить взглядом те самые большие буквы - хоть таблицу, хоть таргет. Эдакий "визуальный grep". А детально смотреть только те строки, в которых есть нужное.

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

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 15:35 
> Еще раз объясняю. В варианте iptables для того, чтобы найти нужный участок,
> правила не нужно читать. Достаточно выхватить взглядом те самые большие буквы
> - хоть таблицу, хоть таргет.

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavlinux , 18-Дек-14 00:56 
> Ну вот вам в примере выше все перечисленное, кроме разве что больших букв:

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


Мне правильный 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);


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 15:28 
> Мне правильный SQL синтаксис нравиться из-за того, что можно
> легко отличить команды от пользовательских данных.

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

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 17:28 
Очень надеюсь что павлин - хороший мaльчик и вложенные селекты и юнион выделил ещё и идентами, но плoxой мaльчик опеннет сожрал чужой формат :)



"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 15:31 
> Всё бы хорошо, но чертовы правила, состоящие из слов в одном регистре
> как-то очень неуютно парсятся глазами. iptables с их дефисами и таргетами
> большими буквами как-то легче в этом плане

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Crazy Alex , 18-Дек-14 19:33 
В большинстве случаев правила файрволла читать (сплошняком) как раз не нужно. Нужно найти интересующий кусок и в нём разобраться/что-то подправить. Если меня интересует правило для SNAT, то чем быстрее я пропущу все ACCEPT/REJECT - тем лучше.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavel_simple , 17-Дек-14 08:19 

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

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

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

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

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено я , 17-Дек-14 08:44 
И чем оно лучше PF?

"Выпуск пакетного фильтра nftables 0.4"
Отправлено savant , 17-Дек-14 09:16 
в отличие от PF у nftables нет фатального недостатка.

"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 17-Дек-14 17:12 
Кстати да, меня тоже поражает стремление лялексоедов запилить очередной ни с чем не совместимый кривой велосипед вместо того, чтобы взять готовое проверенное годами решение вроде PF,

"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavel_simple , 17-Дек-14 17:27 
> Кстати да, меня тоже поражает стремление лялексоедов запилить очередной ни с чем
> не совместимый кривой велосипед вместо того, чтобы взять готовое проверенное годами
> решение вроде PF,

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

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено User , 17-Дек-14 21:38 
>[оверквотинг удален]
>> не совместимый кривой велосипед вместо того, чтобы взять готовое проверенное годами
>> решение вроде 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"


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

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

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 17:50 
> как давно PF имеет возможность обрабатывать на разных ядрах?

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

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

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavel_simple , 18-Дек-14 17:57 
> Речь о синтаксе конфиг файла, я щщетаю :)

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 18-Дек-14 18:10 
> Не так давно.

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

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

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

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

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


"Выпуск пакетного фильтра nftables 0.4, идущего на смену ipta..."
Отправлено robux , 17-Дек-14 09:16 
Покажите мне пример конфига Netfilter, и я скажу - практически применимо или нет.

"Выпуск пакетного фильтра nftables 0.4, идущего на смену ipta..."
Отправлено pavlinux , 17-Дек-14 12:17 
:D

"Выпуск пакетного фильтра nftables 0.4, идущего на смену ipta..."
Отправлено Crazy Alex , 17-Дек-14 13:10 
Странный конфиг

"Выпуск пакетного фильтра nftables 0.4, идущего на смену ipta..."
Отправлено pavlinux , 18-Дек-14 00:58 
> Странный конфиг

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

:D
GOTO )


"Выпуск пакетного фильтра nftables 0.4, идущего на смену ipta..."
Отправлено anonymousZ , 17-Дек-14 16:01 
Оно конечно правильно, но подскажите: что там с маркировкой пакетов для tc/ip ro?

"Выпуск пакетного фильтра nftables 0.4, идущего на смену ipta..."
Отправлено pavlinux , 18-Дек-14 01:03 
> Оно конечно правильно, но подскажите: что там с маркировкой пакетов для tc/ip
> ro?

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

meta


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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено Аноним , 21-Дек-14 17:51 
а как он скриптуется? например, в 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

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


"Выпуск пакетного фильтра nftables 0.4"
Отправлено pavel_simple , 21-Дек-14 18:23 
> а как он скриптуется? например, в 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 я бы называть на вашем месте тоже не стал.