~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
orignal
LeaseSets: 401
orignal
похоже поменяли стратегию
Vort
у меня лизсеты как обычно. LeaseSets: 220 (это при Transit Tunnels: 18109)
Vort
по поводу вчерашних коммитов: на 2.50.1-3-gd4c47d90 за 10 часов аптайма не было ни креша ни зависания
Vort
по поводу 8319dd6: этот коммит на всякий случай или действительно такое происходит сейчас?
ubd
так чего смысл есть транк собирать?
Vort
если задолбали проблемы (которые починены в последних коммитах) и хочешь рискнуть - то стоит
Vort
orignal: не помогло исправление часов. завис у меня узел
Vort
вот такая картина при зависании: paste.i2pd.xyz/?db209de45e7fc6d7#7gSnpgE1NxY4wpf65xmh2gu4wA7gFrTE9k29Lqw7fdkt
Vort
работал у меня узел на уровне логирования error, а как завис - я переключил уровень на debug
Vort
вот выдержка из лога grep "from future\|exceeds clock skew":
Vort
зависание, скорее всего, случилось в 12:21:38
Vort
а debug уровень я включил в 12:25:30
Vort
что ещё странно - во время зависания была повышенная нагрузка на CPU: paste.i2pd.xyz/?21977a21f0283084#aMGQVXCrA2vtHSZ7C3F7Di8Ru5PXVHrPUfyMmG2ZQFY
Vort
адрес одного из i2p узлов с моего скриншота, 107.189.1.175, принадлежит выходному узлу Tor
Vort
если в процессе пир теста действительно принимается время от произвольных узлов, то это надо исправлять
`
> принадлежит выходному узлу Tor
`
Дадада, конечно, конечно..конечно )00
Vort
ээ. я криво выразился, да? вот он: metrics.torproject.org/rs.html#details/292FCACE773DC259B799914A23BE65A6A6178E8F
Vort
ну и это может быть совпадение, конечно же
Vort
хмм. а это, кстати, могло быть подключение не через Tor
Vort
на том адресе узел с разрешенными входящими
Vort
флудфил
Vort
похожая конфигурация на мою короче
Vort
странно, что сейчас к нему нормальный коннект идёт
Vort
то есть, у него, скорее всего, часы в порядке
Vort
непонятно тогда, почему он не отрубился вместе со всеми
Vort
во время глюка моего узла
conscius_
а если у моего сервера listen на 127.0.0.1, к нему смогут достучаться из i2p?
orignal
Vort по поводу такого коммита это результат обсуждания с дедом как должно быть правильно
orignal
скорее всего какой то тред завис
orignal
надо бы отладчиком в этот момент поключиться
conscius_
ага! Да, может, просто прогревается ш2з на телефоне без иггдрасиля медленно и мучительно
orignal
какой твой вопрос я не понял
`
он сам не понял
Vort
orignal: глянул логи которые я скинул?
Vort
там странный эффект
Vort
NTCP2: SessionRequest time difference
Vort
с очень различающимися значениями
Vort
вообще не похожими на то, что в NTCP2: RouterInfo is from future
Vort
если в "from future" тысячи, то в "SessionRequest time difference" - миллиарды
orignal
глянул но не понял в чем мысль
orignal
ты думаешь это таки часы?
orignal
просто я неправильно сделал?
Vort
да, я думаю, что часы
Vort
но детали пока неясны
Vort
откуда миллиарды к примеру? это секунды?
Vort
NTCP2: SessionRequest time difference 1566499968 exceeds clock skew
orignal
так посмотри по коду что печатается думашеь я помню
orignal
я думаю там миллисекунды
Vort
(int)(ts - tsA)
Vort
auto ts = i2p::util::GetSecondsSinceEpoch ();
Vort
секунды это. и что-то очень дохрена секунд
orignal
а сколкьо счас epoch в секундах?
orignal
может там tsA ноль?
Vort
ты про вот это? The current Unix epoch time is 1704028936
Vort
там скорее мусор
Vort
или в наших часах мусор
Vort
и пофиг что в пакете
orignal
1704028970
orignal
возможно
orignal
вот что я сделаю
orignal
если разница в SSU2 больше 24 часов то считаю просто ошибкой
Vort
предполагая, что основное количество узлов добросовестно ломилось к моему узлу, вывод таков, что это мусор у моего узла был
Vort
при чём, меняющийся
orignal
логично?
orignal
такой вопрос
Vort
так это может быть повреждение памяти где-то
orignal
а ты тот параметр пробовал?
Vort
отрубать синхронизацию?
orignal
да
orignal
чтобы убедиться что это точно синхронизация а не что то другое
Vort
не пробовал. но если зависания пропадут, это мало что покажет
orignal
покажет что проблема имеено в этом месте
Vort
ну сейчас соберу значит свежий коммит и попробую отрубить синхронизацию
Vort
а может быть что проблема рядом и цепляет часы как бы
Vort
грубо говоря, повреждение памяти около этого места
Vort
а вообще хз конечно
orignal
повреждение памяти чего? то глобальной переменной со смещением?
Vort
да это я почти наугад написал. просто мусорные значения в NTCP2: SessionRequest time difference как бы намекают
Vort
даже из нескольких смещений по 50 тыщ никак миллиард не получить
Vort
а самих по себе миллиардов почти не видно в логе
orignal
а если пришел SSU2 пакет с мусором?
Vort
кстати. я кое что видел. может это тебе подсказка будет
Vort
SSU2: SessionRequest token mismatch. Retry
Vort
довольно дофига было
orignal
а ну это обычное дело
orignal
ну короче я добавлю проверку смещения не более 24 часа
Vort
так а смысл вообще этой синхронизации какой тогда?
orignal
даже если у чувака неверная временная зона все равно достаточно
Vort
я не пойму в каких случаях она должна срабатывать
Vort
а, ну типа только зона
orignal
когда часы съехали на несколько минут
Vort
а если батарейка биоса сдохла, то работать не будет?
orignal
что бывает довольно часто
orignal
так у него много чего тогда не будет работать
orignal
если дата совсем неправильная
orignal
обычно бывает дата правильная просто часы расходятся
Vort
ну тогда логично про 24 часа. хотя эту багу чётко выловить надо бы
Vort
24 часа могут её просто замаскировать
orignal
ну это да я просто думаю о будущих атаках
Vort
orignal: по поводу отрубания фичи с синхронизацией через SSU2. что-то я не вижу, где это
Vort
кажется, нашёл. nettime.frompeers
orignal
nettime.frompeers=false
Vort
с документацией у этой фичи не очень-то
Vort
такс, я в рестарт
orignal
надо написать будет
Vort
orignal: смотри что я нашёл. это опять выборка из лога с утренним зависанием: paste.i2pd.xyz/?c651f23266bfb47c#RWuL97XuxWzye3DkMjd4HC7JAyuwxCZvbz6psKT6cvm
orignal
ну это понятно
orignal
потому что у тебя часы сдвинулсиь
Vort
так на числа посмотри
Vort
это уже даже не миллиарды, а дохуяллиарды
orignal
да хуня какя то
relaybot
13mauzer: да
orignal
короче смотрим что с отключенной синхронизацией
Vort
оно то так. но надо бы понять, откуда при 4 байтном таймстампе берётся 8 байт мусора
orignal
там 8 байт для смещения
Vort
да, но добавляется туда ведь 4 байта?
Vort
смещение изначально ноль
Vort
затем прибавили 4 байта
orignal
ну видимо несколько раз
orignal
или много раз
Vort
да и вообще, это же не важно, что там в g_TimeOffset именно для этого сообщения
orignal
возможно смещение не в ту сторону ставится
orignal
важно
Vort
adjusted BY ведь
Vort
а там знаковые переменные
orignal
потому что GetSecondsSinceEpoch выдает с ним
orignal
я просто думаю может смещение ставлю не в ту сторону?
Vort
знаковые переменные говорю же
Vort
их нельзя переполнить так просто
Vort
в AdjustTimeOffset: offset = (m_PendingTimeOffset + offset)/2;
Vort
всё блин. мусор попал или в m_PendingTimeOffset или в offset
Vort
при чём, 8 байтный мусор
orignal
все
orignal
нашел багу
orignal
счас закоммичу
orignal
починил
orignal
вот багу нашли
Vort
хорошо. но всё равно природа огромных чисел неясна
orignal
нарастает при каждом соединении вместо коррекции
orignal
так сказать положительна обратная связь
Vort
то есть, там что-то типа прогресии выходит?
orignal
типа да
Vort
ну тогда понятно
orignal
просто не надо писать код бухим))
Vort
этот баг объясняет большие числа, но не объясняет, какого фига вообще узел попадает в эту ветку
Vort
orignal: поясни, пожалуйста, таймстампы собираются таки со всех подряд пакетов пока Testing идёт или есть какой-то фильтр?
Vort
просто если со всех подряд, то атакующий вполне может упорно срать негодными таймстампами и когда-то нибудет таки попадёт на Testing
Vort
когда-нибудь*
Vort
то есть, важно, чтобы это наш узел выбирал (рандомом), чьим таймстампам доверять
Vort
иначе получается, что выбирает атакующий
orignal
да со всех с кем в этот момент устанавливаются соединения
orignal
нет это мы выбираем
orignal
с кем соединяться
Vort
только исходящие?
orignal
да
orignal
э
orignal
тот ответ прилетает в SessionCreated
Vort
тогда для сбивания времени дважды должно не повезти с рандомным выбором узла
orignal
case eSSU2SessionStateSessionCreatedReceived:
orignal
case eSSU2SessionStateTokenReceived:
orignal
только в этом состоянии
orignal
именно
Vort
а это откуда вылазит? SSU2: RouterInfo in SessionConfirmed is from future for 57778 seconds
Vort
уже входящие? или тоже исходящие?
Vort
пытаюсь понять, связаны эти строчки или нет
orignal
RI это другое
orignal
по нему часы не меняются
orignal
SessionConfirmed да это входящее
Vort
ещё вопрос (давно интересующий): разве узлы со сдвинутым временем не дисконнектятся и их RouterInfo не выкидываются?
orignal
R4SAS тут пшек чего то выдал
orignal
а вот этого я не помню
orignal
из будушего да выкидываются
Vort
просто это странная ситуация, что к ним вообще возможны исходящие
orignal
а из прошлого ну по истичени.
orignal
ну смотри
orignal
допустим у него таймстамп сутки назад
orignal
и почему невозможно то?
orignal
может он реально сутки назад опубликовался
orignal
а сам роутер годный
orignal
просто у тебя в netdb запись старая
Vort
50к смещения вроде из будущего были
Vort
то есть, к узлам из будущего исходящих быть не должно?
orignal
из будущего должны выкидываться
orignal
либо в netdb в момент получения был порядок а часы у него поехали быстрее
Vort
вот это уже важно
Vort
короч надо проверить, каким образом 50к из будущего может добраться до функции синхронизации времени
orignal
например рестартовали
orignal
всю железку
orignal
а часы не сихнронизировались
Vort
надо подумать, какие могут быть причины для установки SSU2 соединения "по нашей инициативе"
Vort
с пир тестом понятно - это должен быть рандом
Vort
а вот насчёт всего остального - не уверен
Vort
к примеру, если рвётся NTCP2, то пойдёт ли реконнект?
Vort
то есть, не может ли атакующий так загадить сеть, чтобы начали теряться пакеты и завис Testing, а потом начать рвать коннекты со своим модифицированными узлам, провоцируя реконнект по SSU2?
orignal
там случайный выбор
orignal
в приципе может конечно запросить построение тоннелейц
Vort
слишком уж большое невезение должно быть чтобы дважды за время Testing словить неправильное время
Vort
такое ощущение, что с чистым рандомом это крайне маловероятно
Vort
дважды коннект к одному узлу пойти не может? во время перегрузки сети
Vort
ну то есть чтобы дважды от одного узла словить неправильное время
conscius
а если у меня сайтик и до него долго идут коннекты, и он лежит на ноде с network: firewalled - symmetric nat, есть смысл вырубать ipv4 и насаживать его на иггдрасиль?
Vort
conscius: мне кажется, что без разницы. сеть сейчас тормозит сама по себе из-за атак
conscius
так и атакуют? Вот же =(
Vort
можно меньше хопов сделать для дестинейшена, но это, конечно, снизит анонимность
Vort
под атакой 3ххоповые туннели очень плохо строятся
conscius
Network: Mesh на телефоне, думаю я вообще первый кто так сделал)
conscius
ускорилось дико
conscius
4 минуты, tunnel creation success rate 44% на телефоне через игу
conscius
хоть бы выкуп чтоли потребовали или чего, зачем отаки
`
забесплатно можно и побольше отак
`
и почащще
orignal
может и к одному и тому же
orignal
на узлы с ygg атака не влияет
orignal
нет не надо ipv4 выключать
orignal
symmetric nat порядок
Vort
как я понимаю, с "nettime.frompeers = false" в логах должно вылезти "Clock skew detected" при попытке испоганить время узла
Vort
если вдруг несколько подряд таких сообщений вылезет - значит, это не случайность
orignal
да
orignal
именно так
orignal
счас я сделаю вот что
orignal
если 2 смещения сильно расходятся то считать их лажей
orignal
все сделал думаю последний коммит в 2023
Vort
я примерно так это и представлял. но против атаки это не поможет
orignal
естественно нет
orignal
тут надо более сложный алгоритм
Vort
это делает случайность ещё менее вероятной
orignal
типа список пиров куда пир тест отправили
Vort
мне кажется, что вначале нужно более качественное логирование
orignal
и смотреть только их
Vort
чтобы было понятно, из-за чего пошёл коннект к узлу
Vort
ну и вариант с доработкой пиртеста... это опять то же, о чём я и думал )
Vort
уже столько доработок для него запланировано... )
Vort
такое ощущение, что его полностью переделать придётся
`
Кто-то написал что-то 🦀переделывать🦀???
`
)00
orignal
ну первое что я сделаю это разнесу по времени 4 и 6
orignal
и сделаю интревалы в конфиге
Vort
интервалы между чем? между пакетами или между тестами?
orignal
между тестами
Vort
это вообще странно. зачем?
orignal
на 4 надо чаще а на 6 реже например
orignal
а то счас одинаково и это непривильно
Vort
ну одинаковость сбить - это нормально. чтобы нагрузка была равномернее
orignal
ну вот я и хочу для начала их разнести
Vort
но вот надо ли юзеру это задавать - сомневаюсь
orignal
одному чуваку надо
Vort
между пакетами - и то важнее задавать. хотя и для этого мне кажется, что можно универсальные значения подобрать
orignal
потому что у него в определнное время становится Firewalled
orignal
потому что у опососа какое то оборудование бывает перегружено
Vort
реально становится?
orignal
нет
orignal
тесты фейлятся
Vort
если сделать динамическое количество пакетов - то эта проблема уйдёт
orignal
да кстати надо экспоненциальный интервал
orignal
следущий тест отправляется все с большим интервалом
Vort
можно и это, но максимальное количество тоже надо увеличивать
Vort
5 пакетов просрать - это запросто. а вот 50 - это уже явно глючит сеть
orignal
логично