полинукс – Telegram
полинукс
430 subscribers
119 photos
5 videos
1 file
33 links
Download Telegram
полинукс
Photo
well, я что-то написала. проблема только одна: получилось говно :)
раз уж пишу на гошке, захотелось заюзать всякие канонично-гошные концепции и полностью обмазаться горутинами и каналами. в процессе пришлось осознать, почему обычно при написании сетевого ПО все делают один поток на чтение из сокета, один на написание (я спамила горутину на каждое чтение из сокета. спойлер: оно начинает течь. и умирать одной большой кучей, когда таймаут подключения истечет)
что сейчас есть:
~ ❯ ./ping ya.ru
PING ya.ru (77.88.44.242) with 12(40) bytes of data
20 bytes from ya.ru (77.88.44.242): icmp_seq=1 ttl=245 time=15.66 ms
20 bytes from ya.ru (77.88.44.242): icmp_seq=2 ttl=245 time=16.16 ms
20 bytes from ya.ru (77.88.44.242): icmp_seq=3 ttl=245 time=14.31 ms
20 bytes from ya.ru (77.88.44.242): icmp_seq=4 ttl=245 time=16.48 ms
^C
--- 77.88.44.242 ping statistics ---
5 packets transmitted, 4 received, 20% packet loss, 4001 ms
rtt min/avg/max/mdev = 14.306/15.655/16.484/0.832 ms
~ ❯ ./ping ya.ru -c 3
PING ya.ru (5.255.255.242) with 12(40) bytes of data
20 bytes from ya.ru (5.255.255.242): icmp_seq=1 ttl=244 time=16.86 ms
20 bytes from ya.ru (5.255.255.242): icmp_seq=2 ttl=244 time=16.72 ms
20 bytes from ya.ru (5.255.255.242): icmp_seq=3 ttl=244 time=17.37 ms

--- 5.255.255.242 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, 3000 ms
rtt min/avg/max/mdev = 16.719/16.985/17.374/0.281 ms

видите странности? я вижу.
а) общее время всегда подозрительно близко к кратному тысяче числу. почему? потому что я не смогла нормально написать ожидание получения пакета Т-Т. я пыталась это делать через неблокирующие операции, но в итоге все равно пришла к тупому time.sleep(1s). в оригинальном пинге кажется тоже используется сон, но там делей вычисляется динамично исходя из rtt предыдущих пакетов
б) второе вытекает из первого: на первом примере видно, что пакетов отправлено больше, чем получено. почему так? потому что пакеты отправляются каждую секунду независимо от того, пришло ли что-то до этого, и всегда получается так, что во время интеррапта тебе что-то не пришло Т-Т

производительность конечно получилась мое почтение, цпутайм на уровне))
~ ❯ time ping 8.8.8.8 -c 3
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=107 time=7.47 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=107 time=8.41 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=107 time=8.69 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 7.474/8.190/8.691/0.519 ms

________________________________________________________
Executed in 2.02 secs fish external
usr time 0.62 millis 621.00 micros 0.00 millis
sys time 3.45 millis 319.00 micros 3.13 millis

~ ❯ time ./ping 8.8.8.8 -c 3
PING 8.8.8.8 (8.8.8.8) with 12(40) bytes of data
20 bytes from 8.8.8.8: icmp_seq=1 ttl=107 time=9.45 ms
20 bytes from 8.8.8.8: icmp_seq=2 ttl=107 time=8.47 ms
20 bytes from 8.8.8.8: icmp_seq=3 ttl=107 time=8.23 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, 3002 ms
rtt min/avg/max/mdev = 8.230/8.717/9.446/0.525 ms
s from ya.ru (77.88.44.242): icmp_seq=1 ttl=245 time=15.66
Executed in    3.01 secs      fish           external
usr time 43.85 millis 0.00 millis 43.85 millis
sys time 23.10 millis 1.43 millis 21.67 millis

код тоже просто ужасен, огромная куча мешанины и спагетти, две поллинг горутины (то есть while true))) и не очень понятные зависимости. eh.. ну.. я пыталась..
из плюсов оно нормально работает с потерей пакетов:
~ ❯ sudo tc qdisc add dev wlan0 root netem loss 50% 25%
~ ❯ ./ping 8.8.8.8 -c 5
PING 8.8.8.8 (8.8.8.8) with 12(40) bytes of data
20 bytes from 8.8.8.8: icmp_seq=1 ttl=107 time=8.74 ms
20 bytes from 8.8.8.8: icmp_seq=3 ttl=107 time=9.07 ms
20 bytes from 8.8.8.8: icmp_seq=5 ttl=107 time=9.38 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 3 received, 40% packet loss, 5002 ms
rtt min/avg/max/mdev = 8.739/9.065/9.385/0.264 ms
🔥6👍1💯1
заметки про ebpf

я тут в рамках микропроекта решила наконец разобраться, что такое ebpf и как его правильно готовить 🤪

краткое введение в ebpf: это фича, позволяющая писать программы на ограниченном си, которые будут безопасно запускаться в кернелспейсе. эта технология позволяет хендлить ивенты и изменять поведение ос, не теряя при этом в производительности (при условии, что ты пишешь оптимальный код, конечно же)). как по мне, самое интересное его применение это xdp: он позволяет обрабатывать пакеты, попадающие в сетевуху еще до того, как они будут обработаны системой (под пакетик будет аллоцирован буфер и все такое). на ebpf есть много хорошей доки (официальная, туториалы от eunomia, дока от цилиума).

предположим, мы написали простой hello world (как здесь). что делать дальше? как его собрать и запустить пастись в кернелспейс? как взаимодействовать с написанным через юзерспейс?
для этого есть несколько инструментов, самые известные из них:
👁сборка через старый добрый clang и инъекция кода ручками. xdp загружать довольно просто: пара строк команды ip. за другие типы програм не шарю(. никто не мешает идти по этому, классическому пути, но я побоялась что умру в процессе написания юзерспейс части утилиты на сях
👁тулсет от eunomia. юзает wasm (кек). я попыталась его заюзать, но поняла, что если захочется припилить юзерспейс, то при использовании их доки придется страдать и учиться писать на сях (пример)
👁bcc. тулкит, благодаря которому родилось невероятное количество полезных утилит (не, вы только посмотрите. еще и лабы для того, чтобы научиться ими пользоваться, есть). я попыталась его заюзать, но жопа сгорела, когда я поняла, что там линковщик немного с приколом. тебе нужно писать код, отличающийся от манов для чистого ebpf, а мне не хотелось слишком сильно прилипать к одной платформе. из плюсов можно довольно быстро и удобно разрабатывать и писать юзерспейс часть программы на питончике
👁cilium ebpf. тулкит для гошки от создателей ebpf-based имплементации нетворкинга для кубернетиса. забавная штука, на которой я в итоге и остановилась. через нее можно сбилдить кернелспейс часть утилиты и потом удобно аттачить её и получать доступ к ее переменным и структурам из юзерспейса. создатели настолько преисполнились в своем познании, что написали свой модуль для того, чтобы писать ебпф программы не на си, а сразу на ассембли🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥5
три месяца без постов😃

а я время зря не теряла!! просто не хотелось постить недоделки, а штуки все не доводятся до завершения...🫠

за это время я:
👁все же допилила ту штучку с ebpf (линк с кратким описанием: https://github.com/ktp0li/epbf-ping-fooler). сейчас неторопливо пишу об этом статью, контента набралось больше, чем на постик (хотя делать её или нет — хороший вопрос, учитывая, что относительно недавно выходила статья от другого челика с точно такой же идеей)
👁почти допилила маленький сократитель ссылок с авторизацией на го+тс (https://github.com/b4ck5p4c3/linkshort). там осталось только одну ручку докрутить и задеплоить, но все не могу сесть х) тс кстати довольно приятный язык! если не смотреть на жс-специфику
👁снова сменила работу (так получилось...), чичас досиживаю испыталку в озоне, жестко насилую там нджинксы в команде, что отвечает за весь л4 и л7 балансинг
👁села изучать зиг (он прикольновый :3) и чичас пишу на нём маленькую программу под uefi. хочу сделать что-то подобное неофетчу, но не имея никакого интерфейса для простого фетчинга информации о системе в виде ОС. единственный способ в таком случае достать подобного рода инфу — парсить системные таблички, такие как smbios и acpi. первые сейчас и паршу х))
👁на выходных законтрибутила в сорс для любимой читалки манги!! там буквально пара строчек, но я тааааак довольна, что вот несколько дней все не работало, а теперь благодаря мне можно снова спокойно читать мангу >:33 (https://github.com/Skittyblock/aidoku-community-sources/pull/929)

а между тем этому канальчику уже стукнул год. спасибо всем, кто ставит реакции и комментит, это очень греет мне душу <3
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄3017🔥9👍3❤‍🔥2👏1😁1💅1
я снова в тбилиси😮

в этот раз приехала на две недели: первая отпуск, вторую буду работать (god bless удаленка, тут еще и +1 к мск, вставать можно попозже :3). за пару дней успела зайти в тбилисский спейс и увидеться со знакомыми ребятами оттуда, покататься на 🤪бэхе🤪 (@beloe_vedro) одного из них, порешать вопросики связанные с банками и пересечься с прелестной @fixmes. оче оче надеюсь в этот отпуск успеть много всего увидеть потрогать понюхать :33

если вы в это же время тоже будете в тби, то буду рада пересечься!!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
21🔥65💅1
еще раз сходили в forthspace🤪

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

придя в ф0, мы с другом решили заняться чем-то смешным и сели патчить его мобилку :33 нашей задачей было заставить работать google pay на grapheneOS. для этого нужно любым из возможных способов добавить модуль play integrity fix.
сначала мы пытались пропатчить boot.img через apatch. мобила падала в бутлуп. почему? а вооот, в ишью целая перепись тех, кто не может пошить пиксель после мартовского обновления безопасности))
потом пытались поставить магиск. со второй попытки догадались патчить не boot.img, а init_boot.img. но даже после успешной установки magisk мы так и не смогли поставить zygisk😭 ни отдельная инсталляция, ни попытки установки через магиск так и не позволили нам загрузить модуль
по итогу друг психанул и поставил себе сток, говорит, что теперь его жизнь стала лучше🕺
Please open Telegram to view this post
VIEW IN TELEGRAM
18💅5🖕3❤‍🔥2😁1😢1
вы когда-нибудь поднимали сетевые лабы?

некоторый период своей жизни я активно это делала. и одно дело, когда у тебя условно только циска: взял пакет трейсер и готово. если же нет, то все, что тебе остается, это виртуализация. и меня всегда расстраивало, что даже на микролабу уходит немалое количество ресурсов: минимум два гига придется выделить под три линукс хоста и одну л2 циску (256 * 3 + 1024 или больше)

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

у меня была задача напилить что-нибудь простое, маленькое и на линукс+циска. сначала взяла cisco xrd, появившийся пару лет назад образ, поставляемый сразу в контейнере. звучит вкусно, пока ты в каком-то тележном чате не находишь этот образ, пробуешь... и видишь системд. в контейнере. и что система падает, если ей скормить меньше двух гигов оперативки. (никто конечно не обещал lightweight, но я тааак надеялась😭)
зато потом я узнала, что последние версии iol (cisco ios on linux) теперь дистрибутятся в формате бинарника!! их довольно просто запаковать в контейнер и они хавают всего 150-200 мегабайт в дефолтной конфигурации. плюс докер, кажется, прокидывает между контейнерами tap интерфейсы, что дает вполне живой л2 (arp точно есть)

и теперь моя мини-лаба жрет не два гига, а 150 мбайт :3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥283👍1
рассказываю сейчас, что делала зимой про пинг и ебпф в подвале😇
Please open Telegram to view this post
VIEW IN TELEGRAM
9
дорогие пользователи сети интернет. последнее время мне нравится играть в балатро, поэтому я решила нарисовать своего любимого персонажа, масюню, в антураже этой игры и теперь хочу поделиться этим со всем миром. надеюсь, вам понравится масюня-джокер

было приятно полноценно разрисоваться впервые за пару лет, удивлена, что мозг еще хоть что-то помнит х)
28😍8❤‍🔥2🥰2💅1
за последние полгода у меня накопилось достаточно материала, который я буду постепенно кидать сюда, но сейчас срочное включение🍊

мы вместе с лучшим радиодедом ever, radioegor146, напилили цтф таску :3 с меня идея, прорешка и райтап, с его большой умной головы вся имплементация и прочая техническая часть (как и финализация идеи и приведение её к чему-то стоящему)

флаг можно сдать завтра до 20:00 -> https://hackquest.zeronights.org/#day3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥142