LINUX.ORG.RU
ФорумTalks

iptables ВСЁ

 ,


1

3
-rwxr-xr-x  0 root   root   100016 Aug  9 18:04 usr/sbin/xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/ip6tables-save -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/ip6tables-restore -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/ip6tables -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/ip6tables-legacy-save -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/ip6tables-legacy-restore -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/ip6tables-legacy -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/iptables-save -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/iptables-restore -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/iptables -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/iptables-legacy-save -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/iptables-legacy-restore -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/sbin/iptables-legacy -> xtables-legacy-multi
lrwxrwxrwx  0 root   root        0 Aug  9 18:04 usr/bin/iptables-xml -> /usr/sbin/xtables-legacy-multi
=======> Building '/usr/ports/core/iptables/iptables#1.8.0-1.pkg.tar.gz' succeeded.
prt-get: updating iptables from 1.6.2-1 to 1.8.0-1

-- Packages updated
iptables

prt-get: updated successfully
★★★★★

Ответ на: комментарий от intelfx

Ну вот мой банальный конфиг с шлюза: http://ix.io/1jMi

я смотрю, хотя бы оставили старую логику прохождения пакета по дефолтным цепочкам ядра (INPUT,FORWARD,OUTPUT, PRE*,POST*)

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 2)
Ответ на: комментарий от crypt

я смотрю, хотя бы оставили старую логику прохождения пакета по дефолтным цепочкам ядра

Нет, в nftables нет дефолтных цепочек.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Нет, в nftables нет дефолтных цепочек.

type filter hook input - ну теперь просто это выделили в понятие hook и ты должен вручную создать для него цепочку input. логика прохождения пакета та же.

crypt ★★★★★
()
Ответ на: комментарий от crypt

Логика прохождения пакета определяется подсистемой Netfilter. Netfilter никуда не делся. nftables — это другой интерфейс к тому же самому ядерному механизму.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

а, ок. я думал, это уже выкатывают bpf. если бы меня спросили, я бы сказал, что менять (или добавлять) юзерский интерфейс надо только с новой kernel-подсистемой.

crypt ★★★★★
()
Ответ на: комментарий от crypt

а, ок. я думал, это уже выкатывают bpf.

Но bpfilter тоже будет втыкаться в Netfilter.

Кстати, что самое смешное, ребята из bpfilter как раз предлагают оставить старый iptables-like интерфейс (правда, не помню, речь только про CLI или про ABI тоже).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Ну какой к чёрту жсон?

nft add rule ip filter input ip protocol vmap { tcp : jump tcp-chain, udp : jump udp-chain, icmp : jump icmp-chain }

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

crypt ★★★★★
()
Ответ на: комментарий от crypt

Ну если для тебя любые фигурные скобочки ­— это жсон...

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

:) ммм, вот оно что) хорошо, что netfilter остается и не все у меня в голове совсем устарело)

crypt ★★★★★
()
Ответ на: комментарий от crypt

Понимаешь, дело не в жсоне и не в скобочках, а в том, что в iptables такой структуры данных, как set или map, вообще нет.

Дело, опять же, не в скобочках, а в том, что синтаксис iptables(8), если его можно так назвать, вынуждает тебя в каждой команде повторяться, что, куда, с какой таблицей и цепочкой ты хочешь сделать. Синтаксис nft гораздо удобнее (в том числе за счёт того, что там настоящая КЗ грамматика, а не «давайте просто каждую строчку запихнём в getopt и скажем, что это конфиг»). Ты можешь вкладывать конструкции друг в друга, указывать несколько действий в одной строчке, не писать -t mangle -A FORWARD двадцать раз подряд и так далее. А то, что там скобочки — дело двадцатое. Или, по твоему, Си, например — это тоже «жсоноподобное баловство хипстоты и удел миллениалов»?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 5)
Ответ на: комментарий от system-root

nftables свои модули, лучше чем у iptables, потому что умеют эффективнее по заверениям разработчиков.

пока всё выглядит примерно так:
- nft лучше ipt.
-чем лучше?
- чем ipt!

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от intelfx

Ты можешь вкладывать конструкции друг в друга, указывать несколько действий в одной строчке

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

вот чем хорош iptables - у тебя куча правил и ты любое можешь удалить. или добавить. а как это выглядит в nftables?

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

вот чем хорош iptables - у тебя куча правил и ты любое можешь удалить. или добавить. а как это выглядит в nftables?

Да то же самое всё - любое вложенное во все эти древовидные штуки правило удаляется типа nft delete rule filter input ip saddr 1.2.3.4 drop

Ну и добавлять их так же можно, по одному, указывая «путь» вида table_name chain_name rule_definition а не писать простынки.

Можно и по номеру, nft list -a выдаст номера правил.

На самом деле просто ipset и iptables собрали в одну кучу и придумали новый синтаксис. Так что скорее всего, утилита для nft c iptables синтаксисом останется до самого конца nft и можно вообще не напрягаться, если не хочется.

Вот следующая итерация линуксячьего фильтра bpfilter может поинтереснее быть, хотя там тоже, скорее всего какой-либо вариант iptables останется.

Stanson ★★★★★
()
Ответ на: комментарий от Iron_Bug

почему ты считаешь, что чтобы быть лучше обязательно должно быть серьёзное обоснование, с какими-то новыми фичами, эффективными на 300% алгоритмами и прочим, прочим?
для меня, чтобы быть лучше — достаточно не быть iptables.
например, мне нравится ipfw именно в плане UX. лет ему тоже не мало, но почему-то не забили болт на на интерфейс и опыт пользователя при написании конфигов, в отличии от.
достаточно не быть iptables и ты сразу становишься лучше.

system-root ★★★★★
()
Ответ на: комментарий от system-root

с какими-то новыми фичами, эффективными на 300% алгоритмами и прочим, прочим

о каких «новых фичах» и 300% речь, если это всё тот же netfilter? чота я не понимаю логику этих хипстеров.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

тот же netfilter, но, теже кучи айпишников, ведь не в него грузится, а как-то хранится в структурах модулей, по ним делается поиск и всякое такое, типа принятие решения. в nftables заявляют лучшую производительность. «Faster packet classification through enhanced generic set and map infrastructure.»

system-root ★★★★★
()
Ответ на: комментарий от system-root

типа принятие решения

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

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)

чота я решила почитать про архитектуру этого nft и некоторые вещи прямо-таки пугают:

Move most rule handling to userspace. ... Instead, the nft tool would ask the kernel to load a number of bytes starting at a particular offset.

https://developers.redhat.com/blog/2016/10/28/what-comes-after-iptables-its-s...

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

или я что-то не понимаю? в общем, надо смотреть код. что там наворотили.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

надо смотреть код

будешь? тогда запишим тебя в гуру этого дела и будем кастовать.

system-root ★★★★★
()
Ответ на: комментарий от Iron_Bug

netfilter — это механизм. Дай пакет, выбрось пакет, пометь пакет, заNAT'ь пакет. Всё. iptables, nftables, bpfilter — это программируемая логика. Если хочешь так считать, три разных виртуальных машины, исполняющие код, который написал админ. Производительность работы файрволла зависит в первую очередь от них.

Странно, что тебе приходится всё это объяснять; судя по интенсивности твоих криков в ядерных тредах, ты вроде как должна знать внутреннюю архитектуру Linux как свои пять пальцев.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

единственное, что реально фильтрует - это netfilter. остальное всё лишь способы залить в него нужные правила.

Это неправда (выделение моё). Смотри выше.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

и это они на каждый пакет дёргают передачу из кернела в юзерспейс?

Нет.

или я что-то не понимаю?

Скорее так.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Дай пакет, выбрось пакет, пометь пакет, заNAT'ь пакет. Всё.

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

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

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от intelfx

ты можешь писать расширения. но они будут в кернеле. а тут предлагают расширения в юзерспейсе. ну не может юзерспейс с дёрганьем данных работать шустрее кернела.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Дай пакет, выбрось пакет, пометь пакет, заNAT'ь пакет. Всё.

а что ещё нужно?

Вот ты действительно не понимаешь, что я написал в том сообщении?

intelfx ★★★★★
()
Ответ на: комментарий от Iron_Bug

а тут предлагают вундервафлю в юзерспейсе, которая будет на каждый пакет дёргать данные из кернела в юзерспейс

ты можешь писать расширения. но они будут в кернеле. а тут предлагают расширения в юзерспейсе

И это снова неправда.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от intelfx

И это снова неправда.

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

ах да, там ещё какая-то скриптятина сбоку присунута для юзерспейса. но я это даже не считаю за серьёзный инструмент.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от intelfx

понимаешь, есть два пути оптимизации скорости: либо засунуть всё в ядро (монолитный кернел) и тогда будет быстро, потому что приоритеты и вот это всё. либо всё полностью вытащить из кернела и прямо в юзерспейсе весь TCP/IP стек парсить и тогда не будет переходов между кернелом и юзерспейсом. я изучала оба подхода. мне юзерспейсный вариант даже больше нравится, потому что он устойчивее. но когда дёргают пакеты из кернела, а обработчик предлагают делать в юзерспейсе - это какая-то лажа. и чем развесистее юзерспейсный обработчик - тем она хуже.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

что неправда?

Неправда то, что я процитировал.

intelfx ★★★★★
()
Ответ на: комментарий от Iron_Bug

Слушай, ну ты либо прикидываешься, либо совсем недалёкая. С какого места разжевать нужно?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

обработчик предлагают делать в юзерспейсе

По ходу, обработчик не в юзерспейсе

With the new nftables virtual machine approach, you will most likely not need such upgrade to support a new protocol. A relatively simple nft userspace software update should be enough to support new protocols.

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

TheAnonymous ★★★★★
()
Ответ на: комментарий от intelfx

Понимаешь, дело

Понимаю, чего тут не понять. Предложили более универсальный синтаксис, чтобы поглотить ipset. На данный момент развития it индустрии - json наиболее любимое (не мной) решение. В примере не только скобочки, а такое же разделение элементов.

p.s.

Скобочки, запятые и пр. я не люблю за то, что в bash cmd и bash скриптах их приходится экранировать. А bash скрипты - мой очень привычный инструмент.

p.p.s.

Вот только русских слов типа КЗ не надо. Это мне как ЭВМ режет ухо и нифига не понятно. Давайте пользоваться терминами от лидеров индустрии.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 3)
Ответ на: комментарий от system-root

по поводу производительности. встреваю в ваш разговор с Iron_Bug с тестами (а сам заодно и синтаксис сравню):

https://developers.redhat.com/blog/2017/04/11/benchmarking-nftables/

цитирую выборочно:

As before, the intuitive nftables setup performs worse than iptables, though this time the margin is much bigger.

В данном сравнении разница в производительности определяется разницей между in-kernel системами: netfilter vs modified netfilter (new nftables virtual machine subsystem).

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от intelfx

nftables — это другой интерфейс к тому же самому ядерному механизму.

хмм... я тебя не так понял. я думал, ты имеешь ввиду другой _юзерский_ интерфейс: новая утилита, новый json-like синстаксис. однако это также и новый фреймвор для классификации пакетов в виде простой вируальной машины (типа ява-машины) внутри ядра. А логика прохождения действительно сохраняется.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

какого решения? где? единственное, что реально фильтрует - это netfilter.

выходит, что nftables заменяет (или опционально добавляет?) парсер пакетов внутри netfilter. и вот тут начинаются споры о производительности и сравнения.

и это они на каждый пакет дёргают передачу из кернела в юзерспейс?

слава богу нет. такая опция есть, но только для особых случаев.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 2)
Ответ на: комментарий от intelfx

три разных виртуальных машины, исполняющие код, который написал админ

я сразу говорю, что придираюсь к словам, но на самом деле только две из них правильно называть виртуальными машинами. логично, что любой админский конфиг преобразуется в машинную форму, но старый классификатор (не nftables, не bpf) цитирую «has protocol awareness built-in so deeply into the logic that the code has had to be replicated four times» (https://lwn.net/Articles/564095/)

crypt ★★★★★
()
Ответ на: комментарий от madcore

Не пробовал. Но по-идее должно как-то работать, не зря же iptables-nft-save сделали.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от crypt

Вот только русских слов типа КЗ не надо. Это мне как ЭВМ режет ухо и нифига не понятно. Давайте пользоваться терминами от лидеров индустрии.

CS, так понятнее?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от crypt

я думал, ты имеешь ввиду другой _юзерский_ интерфейс: новая утилита, новый json-like синстаксис. однако это также и новый фреймвор для классификации пакетов в виде простой вируальной машины (типа ява-машины) внутри ядра. А логика прохождения действительно сохраняется.

Да, совершенно верно. Новый интерфейс, новый классификатор, но тот же самый Netfilter.

intelfx ★★★★★
()
Ответ на: комментарий от crypt

я сразу говорю, что придираюсь к словам, но на самом деле только две из них правильно называть виртуальными машинами. логично, что любой админский конфиг преобразуется в машинную форму, но старый классификатор (не nftables, не bpf) цитирую «has protocol awareness built-in so deeply into the logic that the code has had to be replicated four times»

Ну тут можно поспорить. В любом случае ты пишешь список действий, который компилируется в некий байт-код и исполняется ядром по порядку для каждого пакета. Только в случае iptables набор команд этой машины очень-очень высокоуровневый.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Ну тут можно поспорить.

Основываясь на предыдущем опыте, я не сомневаюсь, что ты готов спорить с кем угодно.:) Смысла в этом мало (как и в прошлый раз), потому что опять же весовые разные. Jonathan Corbet - и кернел девелопер со стажем, и редактор lwn.

crypt ★★★★★
()
Ответ на: комментарий от intelfx

ах да, и я забыл упомянуть в этом треде systemd. на днях journald у меня просто задыхался на ноуте(!), отъедая 50% одного ядра. ну а ты продолжай спорить, конечно.:)

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от crypt

Основываясь на предыдущем опыте, я не сомневаюсь, что ты готов спорить с кем угодно.:)

Конечно. А что ещё делать, если большинство людей несут херню?

Смысла в этом мало (как и в прошлый раз), потому что опять же весовые разные. Jonathan Corbet - и кернел девелопер со стажем, и редактор lwn.

И снова глупая апелляция к авторитету. Скучно.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Скучно

ну прости) я-то не за спорами сюда прихожу. а спорщика ты на лоре найдешь. в спорщиках здесь недостатка нет)

crypt ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.