Опубликован выпуск пакетного фильтра nftables 0.9.4, развивающегося в качестве замены iptables, ip6table, arptables и ebtables за счёт унификации интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов. В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. Необходимые для работы выпуска nftables 0.9.4 изменения включены в состав будущей ветки ядра Linux 5.6...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=52656
Изменение TTL запилили?
# nft -f /etc/nftables/ipv4-mangle.nft
# nft add rule ip mangle output oif eth0 ip ttl set 255
> mangleЭто какой хук?
# cat /etc/nftables/ipv4-mangle.nft
#!/usr/sbin/nft -ftable mangle {
chain output { type route hook output priority -150; }
}
Я новичок в файрволах. Есть ли смысл учить iptables, или можно сразу nftables? Если что, пользуюсь Ubuntu.
Если новичок, то сразу учи nft или знакомься с надстройками типа firehol/shorewall. iptables жив и будет жить еще достаточно долго, но nft его заменяет и новичку нет смысла его изучать.Это нам тяжело переучиваться, все же с релиза ядра 2.4 живем с iptables, а тебе с нуля проще сразу учить то что будет жить дальше.
присоединяюсь к совету.
Только нам не потому "тяжело переучиваться" что "с 2.4" живем.
Я лично довольно давно живу. ipf пережил, fwadm пережил, ipchains пережил, и никого из них жалко совершенно не было (ну, правда, пока не выяснилось что нас нае..ли, и обещанных "прям в следующей версии" возможностей ipchains в iptables не будет никогда, потому что проталкивавшая в ядро новое-стильное-модное-молодежное макака уже унеслась в туманную даль, гордо неся обо.ный хвост, а оставшиеся неасиляторы тривиальные баги чинили по десять лет, видимо, не смогли разобраться в коде - но мы уже как-то привыкли без packet tracer'а и без нормального gre conntrack/nat)Но это потому что их писали - для людей. А эту хрень написали для макак, которые руками фильтры никогда не настраивали в принципе - им это было не по уму. Зато они умели г-нокодить, и понакодили порождений снов разума. И вот теперь получите инструмент - удобный уже им, а не нам. Ведь удобство труда горе-разработчиков в стотыщ раз важнее каких-то поганых пользователей.
удваиваю firehol.
очередной собачий язык учить - так себе занятие.
Один написан на perl, другой собран только для убунты и арча
Так iptables - deprecated.
Смысл учить то, что мертво? :)
учитывая что nftables это абстракция над iptables - да
Ты чёт перепутал.
можно сразу учить где там галочки у гуевого интерфейса к systemd-firewalldА, не разглядел, бубунта... выброси на...й. Ну то есть можешь, конечно, потратить время на ее ufw, но не говори что тебя не предупреждали.
По-моему, уже даже глядя на примеры в этой новости, вполне можно сообразить, что авторам nft в голову не приходит что кто-то будет эти правила старательно долбить руками. Этот бред абсолютно не человекочитаем и не человеконаписуем. Вся затея была в том чтобы сделать удобно - пейсателям на пихоне и игого. Если ты не собираешься к ним присоединяться, тебе не то что не потребуется, а вредно для себя и окружающих лезть туда руками.
Потому что твоя самоделка, в результате, будет конфликтовать с штатными системными средствами.
Вот их надо освоить, да - чтобы когда на чужой машине надо открыть порт - не ломать там существующую конфигурацию.
Пожалуйста прекратите путать людей. Логика работает в BPF, а это ну ни как не пространство пользователя. Будьте уж поаккуратнее в том, что вы пишите публично
> Логика работает в BPF, а это ну ни как не пространство пользователя.Внимательно перечитайте новость, там написано, что в пространстве пользователя обрабатываются логика определения правил фильтрации и генерируется BPF-код, а сам BPF код как раз выполняется в ядре:
"обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в специальной виртуальной машине, напоминающей BPF".
А по поводу логики работы с протоколами в user space, вот выдержка из документации:"Even worse, the capabilities and syntax tend to vary from one protocol to the next. By moving all of that knowledge out to user space, nftables greatly simplifies the in-kernel code and allows for much more consistent treatment of all protocols."
Там не BPF, а своя виртуальная машина. На BPF так и не переделали.
Улучшено информирование о месте ошибки в правилах.
# nft delete rule ip y z handle 7
Error: Could not process rule: No such file or directoryкто-нибудь, забейте этим улучшаторам их улучшизмы в задницу - раз они не понимают, что начинать улучшение надо с удаления нахрен слов про "файлы и directory", когда ни о каких файлах речь не идет вообще.
Представляю, как там код в ядре написан, такими-то руками.
Минорщина. Утилита не для обычного пользователя, а сисадмин поймет, что это ENOENT.>Представляю, как там код в ядре написан, такими-то руками.
Ох да, щас бы по шаблону обработки ошибок в С - передать код ошибки в strerror о качестве остального кода судить.
> Минорщина. Утилита не для обычного пользователя, а сисадмин поймет, что это ENOENT.Сейчас пошли «стильно-модно-молодёжные» смузи-админы типа присутствующего здесь «нах», профессиональные занятия которых были слишком далеки от глубокого копания в системе, и поэтому возможности приобрести подобные знания у них не было.
> Минорщина. Утилита не для обычного пользователя, а сисадмин поймет, что это ENOENT.да, у него ж встроенный хрустальный шар для гадания что тут на самом деле хотели сказать.
> Ох да, щас бы по шаблону обработки ошибок в С - передать код ошибки в strerror о качестве
> остального кода судить.когда хрустального шара не завезли - вполне по таким признакам и судить. Если у макаки в голове подобные шаблоны - и она не видит даже уже полезши улучшать именно этот кусок, что сообщение об ошибке тут ни к селу, ни к городу, и что вместо волшебного strerror надо взять и написать свой обработчик - очевидно что такими же шаблонами слеплен и весь остальной код.
А скорее это и не в голове шаблон, а копипаста со стековерфлоу, "всегда ж так делали, фиг его знает почему там про файлы какие-то - нехай админы разбираются, они привычные, гадать на кофейной гуще".
P.S. если что - вторым образцом подобного дерьмокода, как вчера выяснилось, оказался btrfs.
Впрочем, я и не ожидал ничего другого.
> да, у него ж встроенный хрустальный шар для гадания что тут на самом деле хотели сказать.Это называется "квалификация".
С точки зрения непрофессонала, и многие вещи в IT (да и в любой другой специализированной области) могут выглядеть не интуитивно. В этом вопросе стоит принимать в расчёт только мнение профессионалов, к коим вы, очевидно, не относитесь.
В хрустальную документацию пусть посмотрит, ага)>очевидно
А мне почему-то очевидно, откуда сообщение про файлы, а вот про качество кода уже не совсем.
>нехай админы разбираются, они привычные
Работа такая - разбираться в тонкостях системы, не?
>гадать на кофейной гуще
О, нет. В новых утилитах как раз нормальные сообщения с подсказками, это от этих ваших олдовых тулов такого никогда не дождешься.
> Работа такая - разбираться в тонкостях системы, не?ЛОЖНОЕ сообщение о причинах ошибки - это не "тонкости системы", а м-дизм макаки разработчика. Я уж не знаю, каким упертым кретином надо быть, чтобы упорно не желать это признать. Работа копаться в макачьем г-не, различая его сорта на вкус - ну да, такая.
Сколько бы ты ни хвастался своим "мне очевидно".
Мне вот, получивши подобную херню от btrfs (причем, естественно, в таком месте, где руками не очень поотлаживаешь) было совсем неочевидно, чего именно она не нашла - то ли с точкой монтирования чего не так, то ли с модулем, то ли с mount backend.
Оказалось, нет, это она не нашла subvol. Что мешало разработчику вывести subvolume not found, а не заставлять гадать какого еще "файла" ему надо? То что он - макака, perror и всех дел. Они всегда так делают - задними банан чистят, пока передними дроч..ут, а хвостом пишут код.Поэтому совершенно не удивляет, когда и в других, более критичных местах, этот код оказывается точно таким же макачьим г-ном. Хвост-то обос..ный.
ты что живого кода никогда в глаза не видел? если enoent это no such file то при чем тут девелоперы нфт?
все он правильно сказал, на уровне файрвола никаких файлов нет. А то так можно дойти до того, что и виндовый бсод можно кидать.
https://ru.qwe.wiki/wiki/Everything_is_a_file
Ну собственно ошибка про это и говорит - файла-то нет. :)
> все он правильно сказал, на уровне файрвола никаких файлов нет.А в man 3 errno нет варианта "таблица не найдена" :)
Из доступных вариантов действительно ближе всего
ENOENT No such file or directory (POSIX.1).
>> все он правильно сказал, на уровне файрвола никаких файлов нет.
> А в man 3 errno нет варианта "таблица не найдена" :)и что с того, тyпая макака?
> Из доступных вариантов действительно ближе всего
> ENOENT No such file or directory (POSIX.1).а из недоступных макаке - от if(errno==ENOENT) { /* todo: добавить проверок по косвенным признакам, почему такое вернули */ printf("reasonable error description"); } - причем у них такой if двумя строками ниже дурацкого perror, и до отказа от использования файлового апи для работы с чем-то, совершенно на файлы непохожим, когда ты сам же и автор апи.
но ты же феерично туп, как любой модный смузиразработчик, и такие сложные идеи в обезьянкину головку не помещались?
сделайте одолжение все авторы подобных комментариев (я нимало не удивлен их количеством на опеннете) - не лезьте в опенсорс, а? Вас с нетерпением ждут в ентерпрайзной разработке, там все такие.
при том что можно вместо perror проявить остатки разума и написать no such entry, например. А perror использовать только когда вернулось что-то, что программа просто не понимает.
Или уж вообще не использовать стандартные коды ошибок там, где им очевидно не место и нужны специфические.А, да, откуда у пилящих nft макак разуму-то быть. Филе не найдено!
Причем *потом* они все равно ошибку парсят руками чтобы разобраться, где ж нарисовать крышечку (и надо ли вообще, или это какая-то другая ошибка). Шедевр макачьей логики. Но они ничего неправильного в этом не видят.
iptables -D FORWARD 654
iptables: Index of deletion too big.
iptables -D FORWARD -i lo
iptables: Bad rule (does a matching rule exist in that chain?).это вот еще не макака написала. Хотя и попахивало уже тогда.
iptables -A FORWARD -j NONEXISTENT
Couldn't load target `NONEXISTENT':No such file or directory
тут действительно не нашелся и файл в том числе, но вообще-то можно было и предположить, что это название таблицы а не модуля, и что опечатки встречаются в тысячи раз чаще чем отсутствующий модуль. Тем не менее - и тут вполне понятно, что конкретно не так, без всяких "крышечек"Новые-модные молодежные - даже так не умели.
"Макаки, макаки!" — кричал высококвалифицированный специалист, никогда не слышавший про errno и perror.
> "Макаки, макаки!" — кричал высококвалифицированный специалист, никогда не слышавший
> про errno и perror.вот такие м-ки как ты и пишут такой код.
Использующие errno и perror, предназначенные для работы с файлами и сокетами там, где нет никаких файлов.
да еще имеюще наглость что-то вякать про мою квалификацию - когда уже носом ткнули в нормально написанное до них.
> Использующие errno и perror, предназначенные для работы с файлами и сокетами там, где нет никаких файлов.Ага, EAFNOSUPPORT, ECONNABORTED, ECHLD, EHOSTDOWN — ну точно про файлы.
Ещё раз отмечу, что вы потрясающий специалист!> да еще имеюще наглость что-то вякать про мою квалификацию
Да пошутил я! Ни в коем случае не собирался всерьёз говорить о том, чего нет.
> Ни в коем случае не собирался всерьёз говорить о том, чего нет.Орнул и плюсанул
> кто-нибудь, забейте этим улучшаторам их улучшизмы в задницу - раз они не понимают, что начинать улучшение надо с удаления нахрен слов про "файлы и directory", когда ни о каких файлах речь не идет вообще.Боюсь, что авторы glibc не согласятся кромсать perror ради этого.
авторов поделки по имени nft никто не заставлял его вызывать. За две строчки до кода, еще и вручную таки правильно разбирающегося с причинами ошибки. Могли потратиться на лишний printf.Более того, поскольку ядерный интерфейс писали за соседним смузи - никто не заставлял вообще пользоваться не для того предназначенными кодами ошибок вместо своих, заточенных именно под файрвол, а не работу с файлами.
Использование местечковых кодов ошибки вместо стандартных, специально для "специалистов" вашего уровня, которые никогда не слышали про ENOENT, выглядит несколько неоправданно.Ведь вас же к админству чего-то, кроме локалхоста, никто не подпустит :)
А ваш локалхост будет защищён роутером провайдера, настроенным куда более грамотными людьми, чем вы (на самом деле, даже мой кот более квалифицированный админ, чем вы), так что и здесь всё под контролем.
+1
на самом деле, загрёбывает регулярно тратить время на догадки "а о чём же может быть это сообщение?" "кто виноват?" "что делать?"
Чтоб не быть голословным, весь свой код проглядел, передокументировал и в тексты ошибок или usage info вставил примеры и указания, что делать. Потому что я хочу чтоб моим софтом пользовались люди.
Оно умеет в постоянные правила без костылей?
постоянные умеет, без костылей не умеет.
> Оно умеет в постоянные правила без костылей?Как и любая подсистема ядра с настраиваемыми правилами (sysctl, ipsec, routing, iscsi target, rfkill, alsa, etc), фаервол не занимается сохранением своего состояния сам. Для этого существуют userspace-программы, которые восстанавливают ядерные правила при загрузке (и, опционально, сохраняют их при выключении).
> Для этого существуют userspace-программы, которые восстанавливают ядерные правила при
> загрузке (и, опционально, сохраняют их при выключении).и опционально - фейлятся при запуске, оставляя дыру открытой.
линyпсы такие линyпсы.
А у вас на винде типа всё идеально?
внезапно-нестартовавшего файрвола, оставившего открытой маршрутизацию (даже не локальные порты, а форвардинг) - последние пятнадцать лет не наблюдали, знаете ли. Если знаете, как этого добиться - расскажите, иногда как раз бывает надо.А у вас в б-жественной бубунточке и прекрасном де6иллиане - из коробки никакого файрвола вообще нет, даже номинального. Надо знать о том где он и как называется, и не забыть поставить - наперегонки с подбирающими эксплойты, если адрес в публичной сети. Судя по логам - успевают не все.
25 лет назад была, конечно, одна забавная история, но в винде тогда никакого файрвола не было, это был 3d party софт. Одной очень нынче уважаемой корпорации (я тогда поставил себе галочку - никогда с ее продуктами дел не иметь - ни разу не пожалел).
kvm к сожалению использует iptables
И многие другие пока продолжат. Docker, Kubernetes, VirtualBox...Потому что у iptables версии уже давно начинаются с единицы, а значит, есть гарантии стабильности интерфейса.
> И многие другие пока продолжат. Docker, Kubernetes, VirtualBox...
> Потому что у iptables версии уже давно начинаются с единицы, а значит,
> есть гарантии стабильности интерфейса.от того что макака начнет ляпать версии а-ля гугль - интерфейс лучше не сделается.
А вот iptables уже давно выпилен, включить обратно в современных системах непросто, и чем они там "пользуются", каким кривым враппером - лучше не знать.
P.S. а доскер ваш и вообще банкрот
> А вот iptables уже давно выпилен, включить обратно в современных системах непросто,Вот это новость! У вас на десяточке был iptables?
kvm - это модуль ядра. как он может использовать userspace-приложение?
Чувствую что скоро люди будут в квм пробрасывать сетевуху, устанавливать РоутерОС и настраивать сеть там, в том числе и фаервол.В следующей переписке под названием fckTables придется писать байткодом, это ведь удобно, для разработчиков :)
А в RouterOS тоже будет nftables, просто с нескучным фронтом от микротика :)
> А в RouterOS тоже будет nftables, просто с нескучным фронтом от микротика
> :)главное верьте, верьте, что макачье дерьмо кому-то нужно
> Чувствую что скоро люди будут в квм пробрасывать сетевуху, устанавливать РоутерОС и
> настраивать сеть там, в том числе и фаервол.ты перепутал с asaV/juniper (кому на _нормальный_ файрвол денег не хватило - нормальный - это ни разу не пакетный фильтр)
а так да, сто лет уже так делаем.
Вот когда-то оооочень давно - в vmware пробрасывали сетевуху и устанавливали линукс. Но эти времена давным-давно прошли.
> а так да, сто лет уже так делаем.Позвольте вам не поверить.
Выше вы уже наглядно продемонстрировали, что к IT вы можете иметь отношение разве что в качестве уборщика в датацентре. А им даже перетыкать кабели строго-настрого запрещено.
пока что это вы и вам подобные м-ки демонстрируете.Тщась доказать, что no such file - это именно те слова, которые надо выводить, когда ни о каком файле речь в помине не идет. Извиняйте, но вы - м-к. Эталонный. И все кто разделяет эту прекрасную идею - тоже. Второе место на конкурсе - ваше.
Я бы вам, на всякий случай, пол в датацентре подметать тоже не доверил - м-к он везде м-к.
Не то, чтобы меня очень интересует мнение об мне какого-то уборщика, но ваш гнев весьма забавен.
Продолжайте :)
Подожду немного и перейду сразу на bpfilter