~AreEnn
~R4SAS
~acetone
~orignal
~villain
@onon
&N00B
DUHOVKIN
Most2
Nausicaa
Nikat
Opax
Ruskoye_911
Vort
Xeha
`
anon3
b3t4f4c3
corpel
fidoid
jarvi
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
qend
segfault
soos
teeth
tetrimer_
uis
un
user
vade
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
а потом теории какиетт строят
UNDERDOG
8)
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
jr
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
github.com/PurpleI2P/i2pd/blob/411063e3b5ce1ba356352aecbd83c04c0651543a/libi2pd/RouterInfo.cpp#L585
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: лучше на рыбалку