IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/08/05
~AreEnn
~R4SAS
~orignal
~villain
&N00B
+relaybot
DUHOVKIN
Most2
Nausicaa
Nikat
Vort
Xeha
`
acetone_
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
onon
plap
poriori_
profetikla
soos
teeth
tensor
un
weko
whothefuckami
larchick интересный момент, один из узлов i2p (наверное) пытался подключиться ко мне по внутреннему ip моей локалки. Т.е мой внутренний адрес утек в сеть
Vort как можно об этом было узнать?
UNDERDOG Блять, каким образом ты себе это представляешь? Без открытия порта - даже просканить ничего не получится... Каким образом в твою локалку попасть можно было?
UNDERDOG Ты же в курсе, когда ты подключаешься по туннелю к своему узлу - происходит имитация подключения с локального ип 127.х.х.х?
larchick я вижу коннекты на порт открытый для i2p, но ip из локалки
larchick Т.е другие узлы знают мой локальный адрес
larchick следовательно где-то утечка
UNDERDOG Сколько туннелей у тебя создано?
larchick причем здесь туннели? дофига
UNDERDOG Ну вот блять
UNDERDOG Ктото по твоему туннелю и подключается
UNDERDOG если не ты сам
UNDERDOG если подключение с локального адресса
UNDERDOG значит подключение по туннелю какому-то идет
relaybot 13mauzer: да
UNDERDOG Пиздец, нанюхаются своих солей
UNDERDOG а потом теории какиетт строят
larchick ты не понял, я вижу что извне кто-то подключается на мой внутренний адрес
larchick правда я не понимаю как до меня дошел пакет
relaybot 13mauzer: из 127.0.0.1?
larchick mauzer какой-то внешний ip
larchick но не мой
UNDERDOG внутренний свой скажи
UNDERDOG и примерный вид внешнего
UNDERDOG 192/127?
relaybot 13mauzer: если ТАМ криво настроена маршрутизация то они легко могут отправлять на внешний шлюз внутренние пакеты
relaybot 13mauzer: а адреса внутренних пакетов у всех примерно одинаковые
larchick внутренний аля 192.168.1.7, а внешний выглядит как обычный ip из инета
relaybot 13mauzer: ну если ещё ктота не устраивает арп спуфинг
larchick обращение на порт открытый для i2p
relaybot 13mauzer: совпадение
larchick я аохожую ситуация видел при работе torrent клиента
larchick важный момент в том что другой узел знает мой внутрений адрес
larchick т.е где-то утечка
larchick только я не понимаю как такой пакет мог дойти до меня, ведь dest ip не равен ip моего шлюза
relaybot 13mauzer: дык
relaybot 13mauzer: об чём и реч
Vort larchick: ну так может твой шлюз и рассылает внутренний IP. а потом мне в лог сыпется вот такое: так вот от кого у меня сообщения в логе вида [05/Aug/2023:00:14:40 +0300]@380/error - SSU2: Incoming packet received from invalid endpoint 192.168.1.106:58751
Vort упс, кусок не того собщения скопировал
Vort думаю, стоит попробовать с какого-то белого IP попринимать UDP пакеты. и посмотреть, какой там будет адрес
Vort сейчас соберу со своего лога все такие адреса :) может, найдешь свой там )
larchick моего там точно нет) я эти сообщения на firewall смотрю, а не в логах
Vort larchick: точно нету? я вот список сделал: paste.i2pd.xyz/?0e00dbef696a631a#7irARtxkNR3ADKU3Q8WTYuVdRZoxv7oQ4jHbuUKCjoJu
larchick точно. буду разбираться со своим фаерволом, наверное я что-то упускаю
Vort запустил я для тестов XU узел через реальный NAT. результат мне не понравился. надо чинить интродьюсеров дальше
Vort поначалу количество транзитов дошло до 40, сейчас же (через несколько часов) стало болтаться в диапазоне 5-10 штук
Vort узел у меня через WiFi подключен, связь говняная, но не настолько, чтобы такой плохой результат иметь
Vort посмотрел логи и заметил две особенности:
Vort 1. однажды потерялась сессия к одному из интродьюсеров. но в RI интродьюсер при этом остался, на 0м месте. свежие и рабочие добавились на места 1,2,3
Vort 2. публикация RI, похоже, никак не связана с изменениями в интродьюсерах. это мне кажется странным - если интродьюсер пропал, то было бы неплохо уведомить флудфилов об этом как можно быстрее
Vort при попытке разобраться в ситуации №1 я попал на проблему, о которой я уже говорил. но скажу ещё раз: в логи обязательно нужно писать данные обо всех установках и разрывах сессий - с IP адресом и/или abbr от identhash
orignal если определяется внутрениий IP как внешний это явно сетевой роутер дурит и подменяет заголовки пакетов неправаильно
orignal а свой IP в i2p никогда не отсылается явно а берется только то что присылает другая сторона
Vort по поводу застрявшего потерянного интродьюсера: кое что я заметил. у него стоит [itag0] = [0]
orignal это у кого такой?
orignal я думал мы такие выкидываем
Vort это у моего XU узла какой-то глюк случился
orignal то есть это мы 0 публиковали?
Vort глюк, видимо, редкий - я сейчас поискал по netdb - и из 10470 RI только в 8 штуках такую хрень нашёл
Vort ага
orignal надо чинить
Vort да к нему вообще сессии давно нет. и просрочился он полчаса назад
orignal там где мы в список вставляем
orignal но в RI сидит
orignal потому что не может найти для удаления потому что 0
orignal вопрос как он вообще там оказался
Vort оо. я кое что нашёл. сейчас покажу
Vort это _не_ мой узел. просто в netdb нашлось: paste.i2pd.xyz/?0c11854a8544ff6c#EcudQhW1mSpXG1MntgcmDkbVPSb3cb5HWVpC6iVBWxwX
Vort "везёт" мне на редкие глюки :)
orignal что там?
Vort itag0=0;itag1=0;itag2=0;itag3=0;itag4=0;itag5=0;
Vort и так далее
Vort у кого-то конкретно переглючило
Vort вот и ответ, откуда RI с огромным количеством интродьюсеров берутся
orignal там были ненулевые
orignal все ясно откуда нули
orignal счас починю
Vort ну да, вначале идут нули, а потом три нормальных. так и у меня было
orignal починил
Vort пока что плохо понял суть - это решение проблем только с пустым тегом или и с дохлыми интродьюсерными сессиями?
Vort вот у меня сейчас в RI 5 интродьюсеров
Vort 1 дохлый + нулевой тег, 2 дохлый + НЕнулевой тег + три живых
Vort и есть подозрение, что второй дохлый скоро обзаведётся нулевым тегом. проверим
Vort хе. пока что чуть не так. сейчас 3 дохлых (1 ноль и два не ноль) + 3 живых
orignal так откуда нули вязись изначально
orignal я это сделал чтобы они там не появлялись
orignal при старте кстати надо делать очистку
orignal всех интредьюсеров
Vort ну при старте же пиртест запустится
Vort поменяет статус и почистить
Vort почистит*
Vort "<~orignal> я это сделал чтобы они там не появлялись" - то есть, исправление симптома?
orignal нет исправление причины
orignal отуда от брались
orignal точно почистит? ты же что то менял с этим
Vort а дохлые интродьюсеры в RI тоже исправлены? или это проблема номер два?
Vort "<~orignal> точно почистит? ты же что то менял с этим" - ну если статус поменяется. старт же идёт с Unknown? станет OK или Firewalled - и почистится. а вот если останется Unknown - тогда не знаю
orignal их должно чистить вот это i2p::context.ClearSSU2Introducers
orignal там всеь список вычищается
Vort ну значит ещё один баг (наверно)
Vort всё, я вижу, что получается. дохлятина с нулём связана как-то
Vort получилось так, как я и предполагал
Vort вначале застревает дохлый интродьюсер в RI. с нормальным тегом. а потом тег превращается в ноль
Vort если ты чинил не это, то значит придётся чинить ещё и это
orignal я чинил именно это
orignal как раз превращение тэга в ноль
orignal потмоу что там адрес пира остается тот же а тип сесиии меняется
Vort ну это превращение. а дохлый почему там оказывается - пока что загадка?
Vort его ж там вообще не должно быть как я понимаю
Vort хоть с нулём хоть без нуля
orignal естественно
Vort по-хорошему, мне надо сейчас взять последний коммит, добавить логирование на коннект и дисконнект сессий и ловить багу
orignal с нулем счас вообще не вставится
orignal возможно как то старые отсаются
Vort хотя бы понять последовательность событий
Vort я понял. два бага значит
orignal логгируй в RouterInfo вставки
Vort да по-моему SSU2: Introducer added достаточно. а вот сессий не видно, не сопоставить
Vort и для других целей это тоже понадобится
Vort так что однозначно надо делать
Vort сделал логирование. начал тестировать и уже ловятся странные вещи
Vort это на XR узле такое. XU пока ещё не обновил. paste.i2pd.xyz/?1d96bbfa3ec514e1#72T6sp1kFYB9rEB5qVBbDr5nMU9QQsfFVR71rTx9uf9U
Vort я уже разок ошибся с этим загадочным местом, поэтому с выводами не спешу. но надо будет получше глянуть
Vort R4SAS: похоже, билд msvc в GHA испортился. бинарник слинковался с zlib1__.dll, которого в архиве нету. глянь плз когда сможешь
R4SAS Vort: глянь в вывод cmake в ci
R4SAS там небось оно подсосалось из перла
Vort R4SAS: Found ZLIB: C:/Strawberry/c/lib/libzlib.a (found version "1.2.11")
R4SAS ну да, оно самое
Vort это я подумал, что MSVC быстрее соберётся, а тут облом )
R4SAS можно просто сделать указаение пути вручную, как это делал я когда то
Vort orignal: вот код с добавлением логов к сессиям. если там крешей я не наделал, то остальное должно быть ок: github.com/Vort/i2pd/commit/9bac680f2a3181bb861beb2dbf739d92a5ab6597
Vort я этот код ещё на XU узле погоняю, если не крешнется, то можно считать что тест пройден
Vort и вот уже готовы кое какие результаты. словил я потерю одного из интродьюсеров. не до конца понял, что произошло, правда. там какая-то путаница с ipv4 и ipv6 произошла
Vort сейчас grep`ну лог, выложу и RI выложу. есть шанс разгадать эту загадку
Vort у меня уже была сессия с этим узлом. но туда зачем-то полетел ещё HolePunch
Vort в итоге получилось две сессии и, похоже, из-за этого интродьюсер вылетел из RI
R4SAS посмотрим куда оно сейчас начнет лезть
Vort ещё один аналогичный факап с интродьюсером: paste.i2pd.xyz/?64f5c819b962a490#BuTYU4NxeVEMUi2zvwWmYwKy8KK6R5dExYksun8gSMv2
Vort и вот тут уже, похоже, родился "зомби"
Vort сессия к узлу то есть, да только не та, что надо - входящая. ну и на ней, конечно, нет тега
Vort R4SAS: теперь бинарь правильный
R4SAS ок
orignal ну так можно мержить?
Vort сейчас пойду гляну как там узел поживает
Vort полтора часа аптайма, креша нету. так что думаю, что можно. сейчас PR сделаю
orignal давай
orignal а что с нулевыми тагами то?
Vort не помогло. опять ноль пролез
larchick когда след. релиз планируется?
Vort посмотри те логи, что я кинул. там примерно понятно, откуда интродьюсеры-"зомби" берутся
orignal так ты понял откуда он берется?
orignal если мы его не вставляем
Vort почему-то пересоздаётся сессия с интродьюсером - исходящая меняется на входящую. почему, зачем - не знаю
orignal допустим
orignal но как 0 оказыватся в RI?
Vort похоже, код думает, что это интродьюсер, а он уже не интродьюсер
Vort а конкретный механизм - не знаю
orignal так это главное
orignal мы же вставляем его всего в одном месте
Vort ну моё дополнение логов сделано поверх фикса тегов. и в логе явно есть новые данные. так что старую версию я пускануть не мог
orignal а там стоит счас явная проверка на 0
Vort а при чём тут "вставляем"?
Vort он уже вставлен же
orignal ну так в RI он не меняется
orignal после того как вставили
Vort меняется... как-то. ну хз. я малость запутался
orignal как конкретно в RI оказывается 0?
orignal там либо вставка либо удаление
Vort добавления второй раз не было
Vort там логирование на добавлении
orignal ну тогда вопрос как же он мог стать нулем
Vort добавился он всего один раз. а потом как-то испортился
orignal ты же понимаешь что RI ничего не знает о сесии
orignal для него это просто набор данныз
Vort хехе
Vort кое что вижу
Vort не тут ли нолик рождается?
Vort зомби висит, висит, пока по таймеру ему ноль в тег за просрочку не пропишут
orignal да наверное тут
orignal то должно же чиститься
Vort ну так это вопрос номер два - почему получается зомби
orignal неее тут воппос в том чего он вообще публикуется
Vort я вообще не пойму из-за чего исходящая сессия меняется на входящую
orignal надо разбираться
orignal ну отвалилась
orignal а та сторона пересоздавала потому что данные шли
Vort то есть, мой узел думает, что живая, а интродьюсер пересоздаёт потому что нифига не живая по факту?
Vort и как же тогда он её пересоздаёт. через другого интродьюсера? :)))
Vort у меня же U узел
orignal а x3
orignal счнала с нулевым тагом разберемся
Vort начинаю понимать
Vort session->GetCreationTime () то "обновляется"
Vort точнее, сессия новая
orignal нет
Vort вот и не просрачивается, пардон
Vort в RI реальное время просрочки, а тут виртуальное, фейковое, от другой, свежей сессии
Vort а так как этот механизм тупит, то вступает в дело RouterInfo::UpdateIntroducers
orignal ладно я поразбираюсь
Vort в общем, я полагаю, что SSU2Server::UpdateIntroducers не понимает, что ему сессию подменили
Vort auto it1 = m_SessionsByRouterHash.find (it);
Vort так как он ищет её по хешу. и находит, но не ту, что надо, а свежую
orignal ну так я же это поправил
orignal в том коммите
orignal а ну да ты прав не все еще
orignal починю чеерз час
Vort там же работа по таймеру
Vort и если быстро сессию пересоздать...
Vort "<~orignal> починю чеерз час" окей, но проверять уже, наверно, буду завтра
orignal поправил
weko [16:21:48] <segfault> orignal: а зачем всё это легаси? зачем собирать проект компилятором 13 летней давности?
weko Насколько я помню, для какого-то дистра
orignal нет не поэтому
weko А для чего? Я думал это для centos
orignal нет потому что код написан был во времена C++11
orignal а если какой то хрен с горы собрался тут все рефакторить чтобы было по фэншую то идет на хуй вслед за предшественниками
orignal сентос это про поддержку openssl 1.0.2
orignal которую и правда давно пора выпилить
weko orignal: понемногу же имеет смысл заменять старые элементы новыми?
weko Всё такт
orignal имеет но не этому прерсонажу
orignal люди которые могут только "рефакторить" идут на хуй
orignal ибо ничего полезного он сделать не способен
orignal каждый вот такой приходит и начинает поучать как все непавильно сделано
relaybot 13apophis: лучше на рыбалку