myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему

> Поддержка NAT Traversal хабом, Организация файлообмена между пассив. пользователями средствами хаба

Теги
Нет тегов для показа
Meloun
сообщение 5.1.2012, 1:27
Сообщение #21


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Цитата(mariner @ 5.1.2012, 1:40) *
Я читал старую версию протокола. Там вроде при установлении соединения "лички" была команда. То есть я мог видеть, что они начали болтать. Ну и запретить хабом до ввода капчи слать эту команду.

Честно не помню коннект на личку отдельно передаётся или просто конект неважно для чего (скачивание файла или личка). Даже если на личку коннект отдельно передается, мы можем поставить только капчу, спам-фильтр прикурутить уже не удастся.

В общем у ADC свои неприятные тараканы имеются. Моё мнение после изучение документации ADC это, то что он как-то прям больше подходит именно для клиент-клиент взаимодействия, соотв. самой первой АДЦ командой которую портировали в клиенты была ADCGET и ведь ничего не мешало работать в совместимом режиме. Крупный стратегический просчёт разработчиков бросить старый протокол и переползать на абсолютно новый такой же сырой ИМХО.
Go to the top of the page
+Quote Post
Ksan
сообщение 5.1.2012, 4:35
Сообщение #22


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Э, не надо нам таких фишек, чтоб могли отправлять приваты помимо хаба, так вообще спамом забьют приваты..
Сейчас хоть как-то удаётся справляться с помощью скриптов..
И какому врагу человечества такое пришло в голову придумать и внедрить куда-то?
Go to the top of the page
+Quote Post
Meloun
сообщение 5.1.2012, 6:24
Сообщение #23


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Возвращаясь к исходной теме топика.

Поковырялся в реализации NAT Traversal для Стронга плюс вдумчиво почитал как это реализовано в ADC. Средствами хаба для старых клиентов это замутить неполучится, вся фишка в том, что для формирования "дырок" в NATах необходимо чтобы клиенты инициировали новое подключение с того же локального порта с которого они подключены к хабу. К сожалению старые клиенты выбирают этот порт рандомно всегда. Обломинго.

Однако! Средствами хаба можно помочь СтронгДЦ-клиентам в пассиве установить соединение между НАТами в случаях если НАТы не сохраняют соответствие между локальным портом клиента и портом открытым наружу. В этом случае клиент не знает номер внешнего порта, соответственно будет облом. На стороне хаба можно просто подменить в CTM командах порт на тот с которого клиент подключен к хабу. В результате еще больше повышаем вероятность установки коннекта между пассивными клиентами. Эта фича также справедлива и для ADC хабов.
Go to the top of the page
+Quote Post
Delia
сообщение 5.1.2012, 8:34
Сообщение #24


Продвинутый участник
****

Группа: Пользователи
Сообщений: 133
Регистрация: 12.5.2010
Пользователь №: 6 838
Спасибо сказали: 24 раза




Цитата
Ребята которые пилят ФлэксХаб

в итоге делают херню. Причины озвучивались не раз, и их много. Например, глупейшая невозможность юзать русские ники. Блондинки в шоке.
Цитата
если под твоим CID сидит кто-нибудь другой ты не войдешь на ADC хаб, вот она и проблема по сути еще и уязвимость

И повод заставить кое-кого обновить клиент. Ибо иначе всё вышенадуманное работать один хрен не будет.

Касательно спереть CID. Всё хорошо, но каким хреном ты из него PID получишь?
Реальная история. Года два назад была мода(быстро утухла) - генерить себе осмысленную фразу в СИДе. Чувак хотел написать что-то вроде JUCYRULES. Обсчитал то ли первые два, то и первые четыре символа, а потом, говорит, всё, нужно комп месяцами гонять, чтоб ПИД рассчитать, а суперкомпьютера под рукой как-то нету.
Цитата
The PID of the client. Hubs must check that the hash(PID) == CID and then discard the field before broadcasting it to other clients. Must not be sent in C-C connections.

Из описания INF команды.
Или я неправ?
Go to the top of the page
+Quote Post
Enyby
сообщение 5.1.2012, 8:55
Сообщение #25


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Я чего-то не пойму. Как собственно обходится двойной NAT? Хаб в роли ретранслятора?
Или же это на уповании, что NAT "сквозной"? Если так, то ничего может не работать в рамках сессии, отличных от той, для которой установлено соответствие в NAT.

UPD:
Почитал предлагаемые механизмы. Насколько понял, все это хорошо работает только с UDP инкапсуляцией. А с TCP это уже хак какой-то.
Go to the top of the page
+Quote Post
Meloun
сообщение 5.1.2012, 9:28
Сообщение #26


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Цитата(Delia @ 5.1.2012, 9:34) *
в итоге делают херню. Причины озвучивались не раз, и их много. Например, глупейшая невозможность юзать русские ники. Блондинки в шоке.

И повод заставить кое-кого обновить клиент. Ибо иначе всё вышенадуманное работать один хрен не будет.

Касательно спереть CID. Всё хорошо, но каким хреном ты из него PID получишь?
Реальная история. Года два назад была мода(быстро утухла) - генерить себе осмысленную фразу в СИДе. Чувак хотел написать что-то вроде JUCYRULES. Обсчитал то ли первые два, то и первые четыре символа, а потом, говорит, всё, нужно комп месяцами гонять, чтоб ПИД рассчитать, а суперкомпьютера под рукой как-то нету.

Из описания INF команды.
Или я неправ?


Ну собственно про архитектуру ФлэксХаба ничего говорить не буду, т.к. не изучал, не ставил. Мне интересны предлагаемые ими расширения NMDC и модификация ADC для обратной совместимости с NMDC. Хабы которые будут обслуживатьодновременно подключения по обоим протоколам смогут быстрее перетащать пользователей на ADC, пользователь сидит там где больше пользователей, а на остальное ему пофиг, файлы -то один фиг качаются быстрее там где больше источников.

Касаемо PID-CID спорить не буду, спецификацию читал в 2008-м году, всё очень мутно там объяснялось. Единственные преимущества которые увидел это юникод и компактные команды, остальное хрень какая-то непонятная и хабу не шибко нужное, скорее только для взаимодействия между клиентами полезная. По поводу проблем с CID неоднократно читал на форумах как народ пытаясь без переустановки клиент копировать обламывался. Также порадовало обилие дыр и уязвимостей в этом ADC, есть несколько способов устроить неплохую ДДоС атаку с помощью этого протокола про спуфинг сообщений уж молчу. Вроде протокол развивается, но вот обновлённой документации нигде нет. Авторы клиентов в основном его вылизывают, но результаты трудов в виде описания изменений протокола трудно найти. С NMDC как-то проще всё, единственная засада которая рано или поздно наступит это массовый переход на IPv6, существенно местами придется перепиливать хабсофт и клиенты.


Цитата(Enyby @ 5.1.2012, 9:55) *
Я чего-то не пойму. Как собственно обходится двойной NAT? Хаб в роли ретранслятора?
Или же это на уповании, что NAT "сквозной"? Если так, то ничего может не работать в рамках сессии, отличных от той, для которой установлено соответствие в NAT.

UPD:
Почитал предлагаемые механизмы. Насколько понял, все это хорошо работает только с UDP инкапсуляцией. А с TCP это уже хак какой-то.


Хаб не ретранслятор, клиенты только используют номер локального порта сокета с которого коннектятся к хабу для "пробивания дырок" в обоих НАТах. Вариант с TCP это действительно хак, там даже есть бага когда сокеты переходят в состояние TIME_WAIT один из них может находиться в таком состоянии несколько минут, соотв. новые коннекты будут создаваться с задержкой.
Go to the top of the page
+Quote Post
mariner
сообщение 5.1.2012, 10:51
Сообщение #27


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




в связи с переходом на айпивэ6 надо один раз переписать клиент и все. 6ые сокеты могут работать как 4ые. В чем вообще проблема?

а про вариант с тцп я уже выше писал. Не даром ведь скайп юзает удп. И вообще, давайте уж валить на сцтп
Go to the top of the page
+Quote Post
Delia
сообщение 5.1.2012, 10:53
Сообщение #28


Продвинутый участник
****

Группа: Пользователи
Сообщений: 133
Регистрация: 12.5.2010
Пользователь №: 6 838
Спасибо сказали: 24 раза




Цитата
модификация ADC для обратной совместимости с NMDC

Да всё просто. Они просто отключили то, что с NMDC работать не может.
Цитата
Хабы которые будут обслуживатьодновременно подключения по обоим протоколам смогут быстрее перетащать пользователей на ADC

Извините, это бред собачий.
Цитата
порадовало обилие дыр и уязвимостей в этом ADC, есть несколько способов устроить неплохую ДДоС атаку с помощью этого протокола

Пожалуйста, озвучь эти возможности. Просто про "дыры и уязвимости" я слышу давно, но нигде не видел даже теории проведения атак посредством ADC. Про CTM-атаку в новом протоколе когда-то вообще было сказано только что, мол, скорее всего, это нереально. И всё.

Вообще, забегая вперёд, скажу, что с ADC ситуация вообще более чем странная.

Разработчики протокола: Оно лучше NMDC! Оно развивается! У него большие перспективы!
Разработчики хабсофта: Мы знаем как это работает, но не знаем что с этим делать.
Разработчики DC клиентов: Да пусть будет, чё.
Юзвери: Чёза?!
Энтузиасты 1: И правда, большие перспективы. Надо, берём, ставим. Работает!
Энтузиасты 2: Ну, я поставил. Но почему passion отсутствует? Это что, одному мне надо?
Факты: Мы в домике!
Здравый смысл: Что-то где-то здесь не так.

Как-то так.
Можно плюсовать.


Спасибо сказали:
Go to the top of the page
+Quote Post
Meloun
сообщение 5.1.2012, 11:32
Сообщение #29


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Цитата(Delia @ 5.1.2012, 11:53) *
Вообще, забегая вперёд, скажу, что с ADC ситуация вообще более чем странная.

Разработчики протокола: Оно лучше NMDC! Оно развивается! У него большие перспективы!
Разработчики хабсофта: Мы знаем как это работает, но не знаем что с этим делать.
Разработчики DC клиентов: Да пусть будет, чё.
Юзвери: Чёза?!
Энтузиасты 1: И правда, большие перспективы. Надо, берём, ставим. Работает!
Энтузиасты 2: Ну, я поставил. Но почему passion отсутствует? Это что, одному мне надо?
Факты: Мы в домике!
Здравый смысл: Что-то где-то здесь не так.

Как-то так.
Можно плюсовать.

+1 big_smile.gif Собственно лаконичный и исчерпывающий ответ на все холивары вокруг ADC.

От себя добавлю. Документация протокола отвратительная, много белых пятен и нестыковок которые еще доконца не проработаны.

В любом случае надо его начинать осваивать. Нашел вот интересный форк хаба Dtella от студентов Кембриджа, впихнули туда поддержку ADC и TLS подключений Клиент-Хаб. Буду по нему разбираться в этом чуде инженерной мысли, попробую повелосипедить и скрестить по максимуму эти два протокола.

Ссылка: http://code.google.com/p/dtella-cambridge/


Цитата(mariner @ 5.1.2012, 11:51) *
И вообще, давайте уж валить на сцтп

Ну тогда уж заодно и новая реализация ADCv2
Go to the top of the page
+Quote Post
arktik
сообщение 11.1.2012, 9:48
Сообщение #30


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 15.6.2011
Из: г. Владивосток
Пользователь №: 9 350
Спасибо сказали: 0 раз




Цитата(Meloun @ 5.1.2012, 4:40) *
Можно также добавить проверку активных пользователей на предмет открытия TCP порта для активного режима, в случае его закрытости хаб будет считать клиента пассивным (это я уже реализовал, прекрасно работает, кому интересно могу описать алгоритм).


Буду очень признателен, если поделишься секретом. Для моего хаба будет самое то =)
Go to the top of the page
+Quote Post
Meloun
сообщение 11.1.2012, 21:07
Сообщение #31


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Кодом поделиться несмогу т.к. этот функционал вшит в хаб, а хаб самописный. Опишу вербальный алгоритм.

Клиент подключается к хабу.

Если в тэге клиента стоит флаг активного режима, то от имени бота хаба (бот должен быть виден всем пользователям, т.е. хаб должен рассылать всем клиентам MyINFO с именем бота как если бы это был обычный пользователь) отсылается команда $ RevConnectToMe ИмяБота ИмяПользователя|

Если от клиента приходит $ConnectToMe ИмяБота IP:port| то сканируем на предмет открытия порта у клиента. Если открыт - активный режим настроен верно, если нет, то сообщаем клиенту что актив настроен не верно.


Я вообще сделал так , что если хаб определяет что у клиента неверно настроен активный режим, то средствами хаба меняются команды присылаемые клиентом пользователя. Поисковые запросы преобразуются в пассивные, $ConnectToMe превращается в $RevConnectToMe.

Грабли на которые можно наступить и которые следует предусмотреть:
-хаб должен игнорировать команды $ConnectToMe если оба клиента в пассивном режиме (в т.ч. и те пользователи у которых хаб определил неверно настроеный активный режим), иначе будет зацикливание (будут пинаться друг-другу запросы на подключения до бесконечности)
-всегда пропускать команду $ConnectToMe без изменений даже если она идет от пассива к пассиву, если она иммет формат NAT-Traversal (флаги N или R в номере порта) дабы дать возможность двум пассивам попробовать соединиться (см. расширение NAT-Traversal).
-хаб должен игнорировать команду $RevConnectToMe, если она от активного пользователя (в этом случае активными считаются и те у которых хаб определил что актив настроен неверно) и адресована пассивному (включая активных у кого хаб определил неверно настроенный актив), дабы также исключить возможность зацикливания.
- всегда пропускать команду $RevConnectToMe если она от пассивного клиента и адресована пассивному (в данном случае пассивными не будут считаться те, у кого хаб определил неверно настроеный активный режим) дабы дать возможность двум пассивам попробовать соединиться (см. NAT-Traversal)


Надеюсь более-менее понятно расписал.

Для наглядности, так сказать чтобы пощупать руками, включайте фаервол, указывайте в клиенте актив, открывайте окно CDM-отладчика в клиенте и коннектесь по адресу dc.sungate.su Лучше один раз увидеть...


Спасибо сказали:
Go to the top of the page
+Quote Post
arktik
сообщение 12.1.2012, 4:03
Сообщение #32


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 15.6.2011
Из: г. Владивосток
Пользователь №: 9 350
Спасибо сказали: 0 раз




Цитата(Meloun @ 12.1.2012, 5:07) *
Если в тэге клиента стоит флаг активного режима, то от имени бота хаба (бот должен быть виден всем пользователям, т.е. хаб должен рассылать всем клиентам MyINFO с именем бота как если бы это был обычный пользователь) отсылается команда $ RevConnectToMe ИмяБота ИмяПользователя|

А это обязательно? Разве клиенту не все равно, кто просит к нему подключится. Есть же скрипты для скрытого появления на хабе, что не мешает скачиванию.
Go to the top of the page
+Quote Post
Meloun
сообщение 12.1.2012, 8:27
Сообщение #33


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Цитата(arktik @ 12.1.2012, 5:03) *
А это обязательно? Разве клиенту не все равно, кто просит к нему подключится. Есть же скрипты для скрытого появления на хабе, что не мешает скачиванию.

Крайне рекомендую. В Флайлинке, Грейлинке и м .б. в еще в других, реакция на запросы подключения будет если ник пользователя есть в списке юзверей иначе клиент просто проигнорирует эти команды от хаба. Установлено на личном опыте.
Go to the top of the page
+Quote Post
arktik
сообщение 29.1.2012, 5:06
Сообщение #34


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 15.6.2011
Из: г. Владивосток
Пользователь №: 9 350
Спасибо сказали: 0 раз




Не могу понять почему у меня ничего не работает. Определение порта, изменение типа поиска и СТМ проходит, но после соединения с пользователем, дальше команды Lock не идет.
Код
13:00:47 Hub:    [Outgoing][10.1.9.244:4111]         $ConnectToMe Remote 10.1.44.253:16541S|
13:00:47 Hub:    [Incoming][10.1.9.244:4111]         $ConnectToMe Me 10.1.9.244:3001S
13:00:47 Client:    [Outgoing][10.1.9.244]         $MyNick Me|
13:00:47 Client:    [Outgoing][10.1.9.244]         $Lock EXTENDEDPROTOCOLABCABCABCABCABCABC Pk=DCPLUSPLUS0.777ABCABCRef=10.1.8.244:4111|


P.S. У меня FlyLink r500, у удаленного Eiskaltdcpp-daemon. Обычным способом все работает.
Go to the top of the page
+Quote Post
Enyby
сообщение 29.1.2012, 10:38
Сообщение #35


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Надо смотреть код Eiskaltdcpp-daemon и искать реализацию там этой фичи. Возможно там параметр Ref называется как-то по другому. Или ожидается что-то еще, что не приходит.
Go to the top of the page
+Quote Post
arktik
сообщение 29.1.2012, 12:36
Сообщение #36


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 15.6.2011
Из: г. Владивосток
Пользователь №: 9 350
Спасибо сказали: 0 раз




Цитата(Enyby @ 29.1.2012, 18:38) *
Надо смотреть код Eiskaltdcpp-daemon и искать реализацию там этой фичи. Возможно там параметр Ref называется как-то по другому. Или ожидается что-то еще, что не приходит.

Да, точно, проблема из-за eiskolt'a. Зря панику поднял значит shame.gif
Go to the top of the page
+Quote Post
muznark
сообщение 29.11.2023, 22:09
Сообщение #37


Абсолютный новичок


Группа: Пользователи
Сообщений: 1
Регистрация: 29.11.2023
Пользователь №: 14 148
Спасибо сказали: 0 раз




решение проблемы с клиентами с серыми ip адресами в локальных сетях:
1-если у меня серый адрес, то мне нужно быть в активном режиме для того, чтоб качать с соседей по локалке, и пользователи интернета в активном режиме могли с меня качать. и при этом быть в пассивном режиме, чтоб качать с пользователей интернета(только с тех, кто в активном режиме)
2-админы локальных хабов их закрывают, ссылаясь на наличие внешних хабов, а владельцы внешних хабов часто не лояльны к пользователям локалок с серыми адресами, чтоб исключить ситуацию наличие псегдоактивных пользователей(пользователь с серым адресом в активном режиме не может качать с пользователей интернета, пользователи интернета в пассивном режиме не могут качать с псегдоактивных пользователей)
3-решение проблемы: со стороны программы клиента-вход на хаб одновременно в активном(для локалки и внешних активных пользователей)и пассивном(чтоб качать с внешних активных пользователей)режиме.
со стороны внешнего хаба - лояльно относиться к двойным входам, допускать локальный адрес пользователя и не преобразовывать его во внешний адрес, если при конекте на внешний адрес и порт клиента порт закрыт.
Go to the top of the page
+Quote Post

2 страниц V  < 1 2
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new внезапная непонятная проблема с хабом
17 aleksei1122 19 009 3.3.2013, 16:41 Посл. сообщение: Delia
No new Помогите с Хабом!
26 cpr 32 470 7.2.2013, 17:20 Посл. сообщение: DEN 007
No New Posts Помогите разобрать ситуацию с хабом, создал хаб на птокеX 0.5.0.0
Помогите разобрать ситуацию с хабом
12 mambob 14 757 30.1.2013, 0:03 Посл. сообщение: Yamakasi
No New Posts Поддержка Magnet ссылок в Xenforo
0 111222333 7 239 1.12.2012, 20:41 Посл. сообщение: 111222333
No new Topic has attachmentsПроблема с хабом после установки роутера
22 Jet1k 32 608 3.1.2012, 11:05 Посл. сообщение: Strannik
No New Posts Поддержка сетевого протокола SCTP
2 CSRedRat 6 972 30.12.2011, 14:57 Посл. сообщение: pro
No new Проблема с хабом на PtokaX 0.4.1.2
Проблема с хабом на PtokaX 0.4.1.2 - Сильно лагает
16 sania 21 447 29.8.2010, 19:04 Посл. сообщение: mariner
No new проблема с хабом
PtokaX 0.4.1.1 Win32 GUI
17 Saymon21 21 332 31.7.2009, 16:40 Посл. сообщение: Артём
No New Posts Нет связи с хабом некоторых сегментов сети
Не могут подконнектиться юзеры с определенными IP
2 NikseR 7 335 23.5.2009, 9:11 Посл. сообщение: ustas
No New Posts Интеграция каталогизатора фильмов с хабом
2 D-tox 7 244 10.5.2009, 13:30 Посл. сообщение: D-tox

 



RSS Сейчас: 27.11.2024, 2:54