Опубликован выпуск пакетного фильтра nftables 0.9.3, развивающегося в качестве замены iptables, ip6table, arptables и ebtables за счёт унификации интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов. В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. Необходимые для работы выпуска nftables 0.9.3 изменения включены в состав будущей ветки ядра Linux 5.5...Подробнее: https://www.opennet.me/opennews/art.shtml?num=51980
Богомерзкий json. Можно погибнуть в этом нагромождении скобочек, запятых и форматирования, разгребая уровни вложения.
> Богомерзкий json.Это не JSON - не хватает двоеточий между параметром и значением и кавычек для строковых литералов. И массивы странные.
>> Богомерзкий json.
> Это не JSON - неБогомерзкий n-ginx?
Бо-й nginx.
>> Богомерзкий json.зато сразу понятна как целевая аудитория, так и стремление исключить любые ручные правки конфига.. где-то уже был ньюс о гуях на расте/джаве/etc. для этого поделия, копирующих внешность винфаервола? нет? - значит будет..
К нему в качестве фронтенда идет firewalld.firewall-cmd --add-service=https
Чем плохо?
firewalld по-умолчанию является фронтендом к iptables, который в свою очередь в современных дистрибутивах обычно заменен на генератор правил для nft.
При этом часть важных вещей, типа ip forward, через штатный интерфейс firewalld вообще никак не решается, и предполагается что ты будешь использовать т.н. direct-правила. И я так и не понял, как там писать direct-правила для nft. Впрочем, пока что и не надо было.
А объясните дураку еще одну вещь.Если firewalld - фронтэнд к iptables/nftables - не суть важно в контексте вопроса, к чему именно, то почему, скажем, в свежеустановленном centos 8 нет ни iptables, ни nftables - их надо доустанавливать из реп. НО при этом есть firewalld, и он как-то работает!
Я не изучал как именно это работает, но думаю он использует libxtables/libnftnl а не вызывает бинарники с параметрами.
Спасибо
А глянуть в официальную документацию религия не позволяет?
https://firewalld.org/documentation/firewalld-structure+nfta...
А я и заглянул. Вот сюда: https://firewalld.org/documentation/direct/options.html
Про добавление нативных правил для nft там ничего нет. Там только про iptables/ebtables А встроенных команд самого firewalld в некоторых случаях недостаточно.
https://firewalld.org/documentation/man-pages/firewalld.rich...
А теперь попробуй с помощью этих правил разрешить ip forward между интерфейсами в разных зонах.
Я не могу представить ни себя и ни другого админа, который будет делать через firewalld роутинг, NAT, PBR, sets и т.п. Почитай возможности iproute2 и iptables и станет понятно, что firewalld это малая часть всего этого на языке кутлху.Чем плох firewall-cmd --add-service=https ? По сравнению с print "Hello, world!" ни чем.
Ну я делал роутер на firewalld и networkd. Просто потому что захотелось упороться, а не в продакшн. В принципе, это реально. Только неудобно жутко. Даже на susefirewall2 роутер получался проще и лучше.
Там есть rich rules, которые всё это вполне позволяют
Именно. Они там есть потому, что firewalld только бестолковая обертка.
А нафиг оно нужно то если первоисточник (иптаблес)
проще(логичнее) для понимания? Какой смысл изучения этой ерунды,
когда надежнее и вернее залезть под капот?
ну вот решение и найдено - удалить нахрен iptables, чтобы под капотом был набор непонятных проводов, датчиков, надписей "no user servicable parts", можно - прикрытый второй крышкой, с двумя дырками - для маслянного щупа и для залива омывайки. Первая опциональна.
firewalld решает 4 задачи:
- унификация интерфейса iptables/nftables. Даже если iptables нет и даже утилит обратной совместимости нет, то оно универсальное.
- предложить готовый набор простых правил для большинства. Это самое статистическое большинство (видимо из клиентов редхата), ему не хочется знать iptables, ему надо 80-й и 443-й порт открыть, а тем кто делает NAT им и маскарада хватит. SNAT будьте любезны через rich-rule писать
- применяет гуманитарный подход работы с интерфейсами типа "частный", "доверенный", "публичный" итд в привязке к NetworkManager
- позволяет использовать системный рабочий фаервол для тех людей, которые хотят свои правила. Не вырубать фаервол и изобретать велосипед, а доопределить то что есть. Это касается только бекенда nft, в iptables так нельзя by design.Но справедливости ради, он убог, плохо документирован, многословен и пишет конфиги в xml. А что есть что-то лучше для менеджмента фаервола из юзерспейса? Не вручную правила ядру кормить, а именно пользовательский интерфейс управления?
> унификация интерфейса iptables/nftablesлол. Теперь у вас есть ТРИ совершенно разных интерфейса и три нескучных синтаксиса конфигов.
Эта унификация имела бы хоть малейший смысл, если бы у вас в одной и той же системе сегодня стоял iptables, а завтра nft. А послезавтра еще что-то. Но есть один ньюанс - даже если бы вы на самом деле стали так делать - вероятно, ровно потому, что понадобилась фича, которой у альтернативной версии - нет.
> Это самое статистическое большинство (видимо из клиентов редхата), ему не хочется знать
> iptables, ему надо 80-й и 443-й порт открыть,ему не надо - оно и о портах никаких ничего не знает. yum install apache2 прекрасно о них позаботился бы сам, без ненужных прослоек - и да, можно даже с автоугадавом какой файрвол тут стоит и стоит ли вообще.
> в iptables так нельзя by design.
в iptables так можно by design - так, к примеру, делает докер, оставляя место для ручных правил и добавляя свои к существующему файрволу. Но вы ведь не умеете iptables, да? Вот и дефективный редхатовец не умел, ему б попроще чо.
> А что есть что-то лучше для менеджмента фаервола из юзерспейса?
в десяточке, да, есть. windows advanced firewall. В частности - после местного аналога install apache - он бы открыл порты - _апача_, а не "80 и 443", на которых, вполне возможно, слушает кто-то совсем другой.
Но вот это для макак слишком сложная задача, это программировать надо уметь, а не нескучные оберточки ляпать вокруг изуродованных другими макаками остатков когда-то хорошего пакетного фильтра.
Проблема только еще и в том, что пакетные фильтры в XXI веке практически свое отслужили.
В редхате чтобы не слушал кто-то другой делает SELinux.
> В редхате чтобы не слушал кто-то другой делает SELinux.Не, он такого не умеет (в targeted mode, а остальные, собственно, для красоты, пользоваться ими невозможно). Он наоборот - чтоб апач не мог слушать dhcp какой-нибудь.
Собственно, у остальных той же ерундой c похожими результатами занимается apparmor.Итого две кривые полуфункциональные хрени вместо одной нормальной, а линукс все еще немного уже почти, но опять - не готов для десктопа.
> где-то уже был ньюс о гуях на расте/джаве/etc.вы отстали от жизни. cockpit и html5 наше всьо!
> копирующих внешность винфаервола
детально копировать внешность нельзя - слишком явно будет видно, что возможности винфайрвола скопировать не получится.
хотя, помнится, в гоме уже научились высовывать под руку диалог с невнятным предупреждением, но это опять лишь имитация того, что умеет винфайрвол.
Это был сарказм?
нет, попробуй через iptables ограничить доступ, предположим, netcat'у только внутрилокалочными адресами. Не юзеру, а /bin/netcat ;-)advanced firewall - умеет.
То есть хоть мелкий и малоэффективный, но шажочек в сторону настоящего application firewall - сделан. А в линухе был и останется бесполезный в 2k19 пакетный фильтр, теперь еще и настраиваемый только через интуитивно-приятные поделки.
> нет, попробуй через iptables ограничить доступ, предположим, netcat'уСам придумал проблему, сам ее решай iptables'ом.
Это не надуманная проблема, это реальный блокер линукса на десктопе."Разрешить/запретить приложению Х тип сетевого взаимодействия Y" - это задача на данный момент не выполнимая пользователем. Ему требуется обратиться к системному администратору чтобы:
1. Написать правила для фаервола
2. Написать оверрайд для политики SELinuxИ проблема тут не техническая, проблема тут организационно-инфраструктурная. Когда для выполнения задачи нужно взаимодействие 2-х подсистем ядре и еще чего-то в юзерспейсе, чтобы решить по-нормальному.
Обычно нужен целый редхат, который будет героически это решать добавляя новый модуль к системд или куда-то еще, чтобы получилось.
Ну, в винде проблема другая, там пользователь тычет в "разрешить" не особо задумываясь, о чем его спрашивают. Если прав хватает. А если нет, то "Ему требуется обратиться к системному администратору".
> нет, попробуй через iptables ограничить доступ, предположим, netcat'у только внутрилокалочными
> адресами. Не юзеру, а /bin/netcat ;-)А потом всем неткатам на машине. А потом произвольно придуманной группе процессов. А потом…
xt_cgroup? xt_selinux?
> копирующих внешность винфаервола?Лучше винбокс.
Эх, вот бы "винбокс", работающий поверх стандартных линуксов, а не это удолбанное поделие в виде RouterOS.
Двоешник, это ни разу не json.
Это вообще ни в каком виде не JSON. Кроме упомянутых : JSON характекрен заковычиванием всего. Стиль выше это си подобный синтаксис. На самом деле самый удобный если его правильно приготовить.
Оно, конечно, может быть и удобнее, но конфиг iptables читается куда легче. А это какой-то комшар.
А вы пишите для него правила в стиле iptables, раз вам так читабельнее.
nft add rule filter input iifname eth0 .........
nft add rule filter input iifname eth0 .........
nft add rule filter input iifname eth0 .........
жесть какая
вы, похоже, очередной вчерародившийся, "все старье нинужна,ниниужна!"если это г-но, что вы тут родили, кажется вам похожим на iptables, да еще когда речь явно идет об удобочитаемости его правил...
Не знаю как кто, но я разобрался с nftables за 1 день. Его структурный синтаксис мне как-то приятней.
разобрался - это кое-как ман прочитал?
Я так тоже могу, и не за один день, а за пять минут.> Его структурный синтаксис мне как-то приятней.
пока не надо изменить одно правило из пятиста.
Которое в этой куче мусора еще найти надо.
Для этого в nft изобрели даже сохраняемые комментарии.
угу, в nft, изобрели.как вы достали, вчерародившиеся...
Переделал все свои правила iptables в nftables. Получилось короче.
Чтобы получить хоть что-то читаемое пришлось писать так:add rule inet fw forward_udp \
ip saddr @VM_list_4 \
ip daddr @lan_list_4 \
log prefix "VM to LAN deny: " \
dropТ.е. одна табуляция -- условия проверки, две табуляции -- что делать. На iptables боевой фаервол занимает ~3100 строк, что за портянка будет если переписать его nft даже думать страшно.
Ну и как вишенка, полное отсутствие перспектив с ipt_netflow https://github.com/aabc/ipt-netflow/issues/45
Синтаксис другой, но хороший, легко читаемый. Есть возможность всё красиво отформатировать. А наличие переменных и инклюдов в конфиге - это вообще сказка.
Документация к нему есть?
Не "записки на манжетах" в виде десятка разрозненных wiki-страниц с неактуальными данными, а вменяемое что-то?
Документацию у авторов отобрали санитары
man 8 nft недостаточно хорош?
конечно нет, и не будет никогда, повторять подвиг автора lartc, которому ни одна с-ка из альтернативно-одаренных разработчиков не попыталась помочь, зато весело вопили "все не так и ты вообще ничего не понимаешь" - дураков уже двадцать лет не находится.Вот тебе ман, да, с сваленным в кучу миллионом команд и параметров, наслаждайся чтением (лучше - зазубри наизусть, как положено каждому примерному (запрещенное слово), любителю обмазываться свежайшим).
Интересно - iptables сначала сломают окончательно, потом удалят из ядра, или наоборот?
Есть, но некоторые мелочи из неё неочевидны (например, что нельзя там одну хрень писать если есть одно ключевое слово и другую, если она после первой).
Годнота, раньше на iptables-ах пользовался ferm, на фряхе пф-ом. Перешел на nftables без проблем
>Возможность сборки CLI-интерфейса с библиотекой linenoise вместо libreadline.Они хотят nftables и бздунам пропихнуть?
>>Возможность сборки CLI-интерфейса с библиотекой linenoise вместо libreadline.
> Они хотят nftables и бздунам пропихнуть?"Базовую систему" (нет, не б3дунов, а винукс Фо.) избавляют от GPLv3 зависимостей.
Микрософт сказал, что GPLv2== можно, а GPLv3+.... ....ещё не сказал -- нельзя.
А что так-то, Микрософт же тепереча стал борцом с патентами, участник OIN ? В GPLv3 главное отличие - отношение к патентам.
Классный инструмент, спасиб
Помер "Линукс"!
скорее, "сделался вечноживой". Но в целом, да, тот линукс - давным-давно мертв.А тут - "новый стандарт", под мудрым руководством ibm.
Оно появилось лет за 5 - 6 до покупки Шляпы ещё.
Поболе.
причем тут "оно", это просто еще один червяк в трупе, тыщи их. Линух как нормальная юникс-система кончился уже тогда.
Конкретно, когда?P.S. Кто тебя заставляет использовать, к примеру, тот же systemd? Или складывается впечатление, что ты кроме в RHEL или в CentOS не могёшь.
> Или складывается впечатление, что ты кроме в RHEL или в CentOS не могёшь.я в неподдерживаемую маргинальную хрень - не могу, потому что работаю ей за деньги, а не по любви.
И диверсий производить не могу - кому-то потом за мной разгребать. Поэтому если iptables заменяют враппером - будем использовать враппер, и наслаждаться глюками. Окончательно заменят firewalld+nft глюкалом - будем настраивать через rich rules. Потому что если вручную все это снести и заменить iptables - что-нибудь непременно сломается, не сегодня так завтра. А оно должно работать и поддерживаться специалистом, вероятно, из вчера-родившихся, поскольку я невечен. (зато он помнит наизусть стопиццот заклинаний для nft и знает как сгенерить имя для mount.unit)Ну и собрать на коленке свой дистрибутив - тоже уже не очень, ни времени, ни вдохновения. Поэтому для себя, помимо дорабатывающих свой век на древнем железе legacy - где-то freebsd, где-то 2008R2, а где-то уже скоро и 2019 будет.
И десяточка на недоноуте, потому что uefi32 и тачскрин не особенно оставляют выбор.А линуксу - место останется только на кофемолках.
Ну, хрен ли, я еще собак выгуливать могу. Никому не надо? Крупные породы, собаки со специальными требованиями, мойка лап включена.
Если есть волкодавы - можешь к нам приехать - волков бить - по 20 тр за шкуру платят)))
на него можно перетащить правила iptables не снимая свитера (вроде был какой то конвертер, но насколько он точный?)? И есть ли смысл, или сабж пока шибко сырой?
конвертер год назад, когда я попытался им воспользоваться, ниасилил тривиальный набор правил, по-моему, даже не имевших вложенных цепочек.Полагаю, это все, что нужно о нем знать.
я тоже мануально переходил. но синтаксис очень понравился, хотя есть некоторые неочевидные места и хреновый вывод ошибок. в целом стало удобнее ipt.
> я тоже мануально переходил. но синтаксис очень понравился, хотя есть некоторые неочевидные
> места и хреновый вывод ошибок. в целом стало удобнее ipt.с этого места поподробнее - что стало "удобнее", кроме чудовищного синтаксиса, непригодного для нормальной работы из шелла? (впрочем, пора забывать про нее вообще)
> хреновый вывод ошибоко да, они все за одно
# systecmt start proftpd
# echo $?
0
# pgrep proftpd
# echo $?
1
вы просто отсталый замшелый мамонт, неспособный зазубрить новый ненужный интерфейс - надо было journalctl "_SYSTEMD_UNIT=proftpd.service" -xe (как же ж удобно этот бред набирать) - и вы бы увидели... result is RESULT!И вообще, вон отсюда со своим замшелым ftp. Оно еще и в модном-современном файрволе застревает, и вообще устаревшее небебезопастное ненужно!
P.S. на самом деле - systemctl status proftpd - таки умеет exit codes, причем их существенно больше вариантов 0/1 - просто мы ж такие все из себя параллельные-быстрые, что не имеем возможности синхронно запустить юнит - хотя очень старались и даже отдельный свитч для асинхронного запуска предусмотрен, отключенный по умолчанию. Ну нишмагла, шибко торопилась.
Есть VPN провайдер с кучей серваков по всему миру, IP адреса и подсети у них не пересекаются.
У меня канал 100 мбит/с, один коннект openVPN к серваку даёт максимум 25 мбит/с.
Хочу запустить несколько одновременных openVPN подключений к разным сервакам, чтобы одновременно использовать эти коннекты и тем самым повысить общую скорость. В Компе стоит или одна или две сетевухи на выбор.
Проблема в том, что если запустить второй коннект с VPN серваку то openVPN переписывает правила маршрутизации под себя и работает только последний запущенный коннект, а остальные коннекты ничего через себя не пропускают.
Вопрос, как решить задачу? Задача вообще решаема?p.s. пример вывода в логе второго коннекта openVPN где он переписыват правила первого коннекта openVPN
/sbin/ip route del XX.XX.138.195/32
/sbin/ip route del 0.0.0.0/1
/sbin/ip route del 128.0.0.0/1
/sbin/ip addr del dev tun1 10.7.0.3/24
/sbin/ip link set dev tun1 up mtu 1500
/sbin/ip addr add dev tun1 10.7.3.2/24 broadcast 10.7.3.255
/sbin/ip route add XX.XX.138.195/32 via 192.168.1.1
/sbin/ip route add 0.0.0.0/1 via 10.7.3.1
/sbin/ip route add 128.0.0.0/1 via 10.7.3.1
Похожая идея описана тут, но у меня нету никаих ошибок при запуске второго коннекта, он просто переписывает все правила под себя.https://airvpn.org/entry/?aek_v=14&aek_id=a643f4c04a43bda89f...
Это лог первого коннекта/sbin/ip link set dev tun0 up mtu 1500
/sbin/ip addr add dev tun0 10.7.3.3/24 broadcast 10.7.3.255
/sbin/ip route add XX.XX.244.59/32 via 192.168.1.1
/sbin/ip route add 0.0.0.0/1 via 10.7.3.1
/sbin/ip route add 128.0.0.0/1 via 10.7.3.1
> Вопрос, как решить задачу? Задача вообще решаема?нет, нерешаема.
То есть была бы решаема (с некоторыми нехорошими глюками), если бы ты общался с хостом в той же vpn-сети.
А ты лезешь через nat вовне vpn, в результате, даже если бы у тебя получилось - у тебя syn уедет через один выходной _белый_ ip адрес, а следующий за ним пакет - через другой, и будет уронен на пол получателем, поскольку с тем-то айпишником он еще не знаком.Но вот заменить
/sbin/ip route add 0.0.0.0/1 via 10.7.3.1
/sbin/ip route add 128.0.0.0/1 via 10.7.3.1
на две разные половинки - вероятно можно.
Хинт: команды ip route можно набирать самому, а openvpn'ы, полагаю, вполне можно развесить на _разные_ туннели.У тебя оба лезут в tun1
>У тебя оба лезут в tun1Нет, они лезут правильно один в tun0, другой в tun1, это просто лог старый. Тем не менее оно все равно не работает.
>Но вот заменить
>/sbin/ip route add 0.0.0.0/1 via 10.7.3.1
>/sbin/ip route add 128.0.0.0/1 via 10.7.3.1
>на две разные половинки - вероятно можно.Чем это будет полезно?
> Нет, они лезут правильно один в tun0, другой в tun1, это просто лог старый.тогда иди в "форумы" (тут и не место, и сотрут быстро) и приведи там нормальные логи, целиком и из одной сессии, а заодно и конфиги openvpn.
Гадать на поддельных логах собранных из разных кусков, что на самом деле у тебя произошло, лично мне влом.> Чем это будет полезно?
тем что траффик на половину интернета пойдет в одну дырку, на другую половину - в другую. При наличии более чем одной сессии можно в сумме получить больше, чем пропускная способность единственной дырки.
С торрентами, учти, не прокатит.
Если в комп поставить несколько сетевых карт, подключить их к самодельным маршрутизаторам на rosberyPI (одна сетевуха к одному rosberyPI маршрутизатору) на которых на каждом будет поднят свой отдельный VPN подключённый к отдельному серваку.
Такой вариант позволит одновременно использовать эти VPN серваки и суммировать скорость?
RaspberryPI
такой вариант лишь продемонстрирует твою криворукость. Все можно сделать в пределах одного физического устройства и единственной сетевой карты с тем же самым результатом (что-то будет работать, что-то, из-за ната, нет).
росбери его на пи...
Откуда у людей такие наркоманские идеи?
люди ниасилили пяток страниц майкрософтовского учебника "что нужно знать про tcp/ip каждому недоучившемуся студенту, мечтающему о карьере админа". Не говоря уже о более сложных книжках.
Изучали предмет по манам, вон как там в тредике выше. Что делает ip ro ad - знают, но смысл этих действий - понимают очень и очень приблизительно.А сон разума всегда рождает чудовищ.
Проблема решается, используя VDS и баундинг. Просто, вместо реальных сетевых интерфейсов, у тебя будут ВПНы. Гугли на тему: bonding iproute2. Во времена, когда провайдеры были "неторопливыми и дорогими", решал так проблему подключения через двух провайдеров. Кстати, тебя еще ожидают незабываемые квесты с очередью пакетов и балансировкой нагрузки. Удачи!
вы бредите.
Вы не понимаете.
Если мне не изменяет склероз маршрут прописывается лишь если это указано в конфиге, можно не прописывать маршрут по умолчанию и воспользоваться советом поха разделив весь интЫРнет на колич4ство подсетей,кратных количству аплинков и прописать каждому его маршрут.
Вообще все это полная хрень и нормально решается лишь покупкой AS и BGP, как у взрослых дядь.
А все эти костылики с самопальным разделением и балансировкой годится лишь для обучения и понтов.но что-то мне подсказывает, что скороть упирается в канал, предоставляемый провайдером (с чего ты вообще взял что пров обязан предоставлять тебе 100мбит круглые сутки, гарантированная скорость обычно оговаривается отдешьно и стоит совсем другие шекели, не чита домашниму итОрнету за копейки) .
Либо упирается в сам опенвпн и его настройки сжатия и шифрования.
> Если мне не изменяет склероз маршрут прописывается лишь если это указано в конфигеу него там все пичально - если присмотришься, там оно тунель сносит и заново создает, а не толко маршрут по умолчанию подменяет, короче, сперва руки надо выпрямить, и не в новости про nftables разбираться, что он там понасоздавал.
> Вообще все это полная хрень и нормально решается лишь покупкой AS и BGP, как у взрослых дядь.
взрослые дяди, владельцы платных vpn-сетей, вполне могут предоставить услугу, не требующую по взрослому, без трусов, давать в ...пу райпу, но она будет за другие деньги, а пока они ему канал зашейпили на 25мегабит ;-)
Впрочем, возможно и не они, а у его провайдера столько во весь внешний мир, оверсабскрайбнутое раз в сто и с потерями.
А "костылики" с параллельной маршрутизацией это как раз правильное решение для больших сетей (внутреннее, необязательно для этого иметь свою as) - в отличие от пион...нецветочковых поделок с etherchannel и прочей бредятиной позапрошлого века, так любимых бестолковыми инженерами времен декадно-шаговых АТС.
>если присмотришься, там оно тунель сносит и заново создает, а не толко маршрут по умолчанию подменяетtun оно не сносит, во втором логе нужно заменить tun1 на tun0. Оно только маршрут подменяет, но одновременно висят оба tun0 и tun1, но используется только последний созданный.
>короче, сперва руки надо выпрямить
с руками всё нормально, я использовал только обычную команду (см. ниже) на запуск VPN, всё остальное openVPN сам делает.
sudo openvpn /etc/openvpn/tcp/dg43.tcp.ovpn
>скороть упирается в канал, предоставляемый провайдером (с чего ты вообще взял что пров обязан предоставлять тебе 100мбит круглые сутки, гарантированная скорость обычно оговаривается отдешьно и стоит совсем другие шекели, не чита домашниму итОрнету за копейки)У меня стоит машина на Linux и рядом iMac. Машина на Linux через один из VPN серваков выкачивает для торрент на скорости в 1.2 мбайт/с, через второй VPN сервак выкачивает на скорости 2.2 мбайт/с. iMac без всякого VPN выкачивает torrent на скорости 8-9 мбайт/с. Всё это проверялось много раз и почти одновременно.
чейта как-то стремно...надеюсь iptables еще долго не выкинут
Там net-tools уже выкидывают. :(Сабж я так и не осилил, но думаю рано или поздно придётся разобраться тоже.
>Там net-tools уже выкидывают. :(Их уже 20 лет выкидывают и никак выкинуть не могут. С iptables так же будет.
net-tools сломать очень сложно - слишком примитивен (в отличие от используемого в iproute) интерфейс ядра. А iptables сломают легко и непринужденно.Да и учитывая, что он по сути и так всегда был поломан - ждать, по-моему, осталось недолго. Кто- нибудь, нежно касаясь клавиатурки макбучека (оплаченного, конечно же, корпоративными денежками) провозгласит, что оно нинужно-нинужно, устаревшие портянки. И хор идиотиков - радостно подпоет.
> выполняется в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters).больше виртуальных машин. Что-то линукс быстро работает... аж подозрительно.
и эксплойтов этой х-ни давно что-то не публиковали...хотя бы kernel.unprivileged_bpf_disabled=1, надеюсь, все уже включили?
мне больше интересно при каком PPS оно загнется.
зависит же ж, что ты на нем наbpf'ал. iptables-то тоже можно все собрать в один огромный плоский список, и потом плакать что все медленно и пакеты теряет.Причем, не удивлюсь, если в bpf-исполнении такой список будет еще медленней ;-)
> не удивлюсь, если в bpf-исполнении такой список будет еще медленнейЯ не удивлюсь, если он окажется быстрее. Без тестов сложно сказать, как оно будет, потому что цепочка вызовов предкомпилированных фильтров и скомпилированная цепочка фильтров -- это заметно разные вещи. С чисто теоретической точки зрения можно предположить, что компиляция в этом случае открывает широкие просторы для оптимизации -- можно же и ненужные дублирующиеся телодвижения выкинуть, уменьшив таким образом нагрузку на проц, и локальность кода повысить, уменьшив таким образом нагрузку на кеш. А то, что это байткод, дык его потом можно в ядерный jit-компилятор засунуть, и получить native-код, который делает то же самое.
То есть тут ситуация, в которой вообще сложно удивляться какому бы то ни было результату сравнения производительности, потому что диванных рассуждений тут недостаточно, чтобы увести неопределённость предсказаний зело в сторону от 50/50 -- либо медленне, либо быстрее.
> С чисто теоретической точки зрения можно предположить, что компиляция в этом случае открывает
> широкие просторы для оптимизацииугу, а так же для очень нетривиального траблшутинга, когда компилятор что-то тебе такое наоптимизирует, совсем тобой неожидаемое. А отладчик bpf - это нечто, безусловно очень простое, понятное и доступное (его уже вообще хотя бы - пишутъ?)
А теперь вопрос знатокам - а нахрена оно все, с перекладыванием оптимизации на компилятор, сдалось в такой несложной, в общем-то, задаче, как набор правил примитивного пакетного фильтра? И нельзя ли вместо этого девляпса просто выпороть?
> То есть тут ситуация, в которой вообще сложно удивляться
да нет, удивляться "как так, да не может же ж быть" - вполне несложно, но, примерно оценивая и осмысленность поставленной эффективными менеджерами редхата задачи, и подход к ее решению, и общий уровень нынешнего софта - я заранее вношу поправку на ветер. И вот тогда - получается 50/50.
>> С чисто теоретической точки зрения можно предположить, что компиляция в этом случае открывает
>> широкие просторы для оптимизации
> угу, а так же для очень нетривиального траблшутинга, когда компилятор что-то тебе
> такое наоптимизирует, совсем тобой неожидаемое.Компилируй для траблшутинга без оптимизаций, проблем-то? Я всегда в сложных случаях отладки с C врубаю -O0.
> А отладчик bpf - это нечто,
> безусловно очень простое, понятное и доступное (его уже вообще хотя бы
> - пишутъ?)Зачем он тебе? Ты в байткоде bpf планируешь писать фильры?
> А теперь вопрос знатокам - а нахрена оно все, с перекладыванием оптимизации
> на компилятор, сдалось в такой несложной, в общем-то, задаче, как набор
> правил примитивного пакетного фильтра? И нельзя ли вместо этого девляпса просто
> выпороть?Ну, во-первых, файрволл станет примитивным, если из него выкинуть все фильтры и оставить интерпретатор простенького байткода. А до того, как такая чистка проведена, он вовсе не примитивный, достаточно глянуть на список опций в menuconfig, перечисляющий всякие разные опциональные фильтры. Во-вторых, оптимизации, о которых я говорю, будет выполнять либо компилятор, либо никто. Либо компилятор посмотрит на твои правила, и подумает как бы таких их посчитать максимально эффективно, либо он не будет смотреть и ничего не будет делать, и в рантайме будет выполняться куча вещей, которые можно было бы выполнить один раз компиляцией. Как собрать цепочки и состыковать ты в любом случае будешь думать самостоятельно, но в случае если эти цепочки реализуются на табличках itables, то при передаче каждого пакета с одного фильтра на другой, заглядывает в табличку, достаёт оттуда указатель на фильтр, из него достаёт указатель на функцию, вызывает её... во всём этом очень много ненужных телодвижений процессора, и много ненужных телодвижений кешу. Ты можешь быть хоть семи пядей во лбу оптимизатором, но всё равно используя iptables ты не избавишь систему от них, потому что iptables не для этого.
>> То есть тут ситуация, в которой вообще сложно удивляться
> да нет, удивляться "как так, да не может же ж быть" -
> вполне несложно, но, примерно оценивая и осмысленность поставленной эффективными менеджерами
> редхата задачи, и подход к ее решению, и общий уровень нынешнего
> софта - я заранее вношу поправку на ветер. И вот тогда
> - получается 50/50.Да, я знаю, что когда ты оцениваешь софт, ты делаешь это не по его техническим характеристикам, не по результатам тестов, а исключительно на основании своего субъективного отношения к менеджменту и к современным программистам. Ты мог бы не рассказывать об этом ещё раз, мне кажется все и так уже знают.
Ты ж админ, и всякие высоконагруженные случаи админишь? У тебя есть куча знаний и возможностей потестить? Ну дык потесть, выложи результаты тестов, раскрути свой аккаунт на хабре, или где там ты излагаешь результаты своих изысканий? Вот я ничего не админю, даже локалхост последнее время я не админю, потому что уже лет десять как он просто работает. Я иногда переустанавливаю систему, но тоже в "ленивом" режиме, чтобы оно само в фоне там собиралось и ставилось, не мешая при этом мне в интернетиках комментить. Но это даже не админство локалхоста, это, немного льстя себе, можно назвать "паверюзер". И это значит, что я не могу сравнить legacy iptables и интерпретатор байткода по производительности и прочему потреблению ресурсов на задачах хоть сколько-нибудь приближенных к реальности, потому что я не знаю, что это за задачи. Но меня гложет профессиональное любопытство, я бы с огромным интересом почитал бы про исследование нацеленное на сравнение, или даже нашёл бы скрипт который бы сравнивал, чтобы его можно было бы палочкой потыкать и своими глазами посмотреть, куда и зачем в разных случаях тратятся ресурсы.
Ты, казалось бы, обладаешь всеми квалификациями, для того чтобы провести такое исследование, но вместо этого ты рассуждаешь об эффективности менеджеров, и в прочую гуманитарщину лезешь, что мне совершенно неинтересно, потому что уж в гуманитарщине-то я точно больше твоего понимаю.
Тебе не надоело каждый раз портянки бредового текста строчить? Какие тесты, какой хабар?
Ну был вон там один анестезиолог, что-то пописывал и всех убеждал. Его сначала на резиновых катали. А потом на его идеях Инго всё Коновское переписал. И теперь Инго молодец а про Кона почти никто не помнит. Мне в своё время тоже хватило общения с авторами опенсурс ПО - снобов каждый если не второй то третий. И теперь я предпочитаю учиться на чужих ошибках и знать историю.
> теперь я предпочитаю учиться на чужих ошибках и знать историю.Чужие ошибки -- это конечно ленивый способ учиться, но люди тупые, они даже ошибиться как следует не могут. Пока сам не ошибёшься, не получишь настоящей ошибки.
Виртуальные машины -- это круто, это повышает надёжность. На компьютере Apollo крутилось от 5 до 7 виртуальных машин, даже несмотря на то, что там и так вычислительных ресурсов было с гулькин нос.