ПрограммированиеФорумСеть

Способы обхода NAT или взаимосвязь через интернет

Страницы: 1 2 3 Следующая »
#0
19:11, 3 ноя 2014

Было много перечитано литературы по этой теме(STUN, TURN, NAT Traversal, UDP Hole Punching), но реального результата(соединение клиента и сервера через интернет) так и не было получено.
Может кто-то сталкивался с такой проблемой и есть опыт?Будет интересно узнать как решали проблему.
Или есть какие-нибудь ещё мысли по этому поводу?

#1
19:54, 3 ноя 2014

St1G
> Или есть какие-нибудь ещё мысли по этому поводу?
Уже пора начинать думать о IPv6, а не о пробивании натов. Хотя бы через тунели. ИМХО конечно.

#2
23:37, 3 ноя 2014

Туннелирование - наше все. В принципе, уже существуют готовые решения - например, I2P можно заюзать, он за NAT'ом работает. API у него, правда, какой-то не очень удобный и плохо документированный.

#3
13:30, 4 ноя 2014

Gecko
А если ещё какие примеры туннелирования кроме i2p?А то что-то не нашёл больше ничего.
Например для программного туннелирования мобилок черещ TCP/UDP.

#4
14:06, 4 ноя 2014

В итупи тоже не всё хорошо, там ведь тоже ноды делятся по степени доступности. Роутеры с белым айпи приоритетны.

#5
21:32, 4 ноя 2014

St1G
i2p это малость не то, что тебе надо. Там тоже проблема серых адресов, они не могут быть рутерами, т.к. рандомный порт к ним не открыть. Домашний nat лечится UPnP или пробросом. Провайдерский nat не лечится вовсе. Провайдерский файрвол тем более. Когда мне надо было держать 1 сокет для управления, 1 для данных, то я поступал банально. К серверу идет запрос на подключение, сервер в ответке сообщает номер порта, к которому можно подцепиться за данными. Клиент к нему цепляется и все счастливы. Адрес у сервера разумеется белый или проброшен необходимый диапазон. Но вообще не зная что у тебя за задача советовать сложно.

#6
22:13, 4 ноя 2014

Теоретически в RakNet все есть, но лично еще не опробовал.

NAT Traversal Architecture

#7
12:19, 5 ноя 2014

Dampire
Задача в том, чтобы соединить друг с другом два любых мобильных устройства(или компа) через p2p или c-s(где одно устройство как сервер, а второе - клиент) по tcp.
Может есть у кого ещё какие варианты?

#8
12:25, 5 ноя 2014

посмотреть как устроен опенсорс аналог teamview

#9
13:15, 5 ноя 2014

ICE?

#10
14:40, 5 ноя 2014

St1G
Сейчас практически на всех роутерах (кроме корпоративных) есть UPnP NAT. Есть несколько опенсорсных реализаций. MiniUPnP например. По идее должно работать. Другой вариант использовать какой-нибудь STUN/TURN сервис или написать свой велосипед с мастер-сервером. Принцип работы аналогичен тому, что я описывал выше, только в обе стороны. Если тебе именно туннелирование нужно - изучи принцип работы Hamachi. Но там ведь тоже нужен мастер-сервер, который будет маршрутизировать траффик.

Ogra
Это насколько я знаю просто обертка-подбиралка на все эти технологии.

Upd.
Кстати Teamviewer тоже работает с мастер-сервером.

#11
14:42, 5 ноя 2014

Dampire
> Это насколько я знаю просто обертка-подбиралка на все эти технологии.

Обертка над STUN, если быть точным.

#12
18:37, 5 ноя 2014

Ребята, если у вас нету хождения IP пакетов между двумя узлами, то прямого соединения между ними не будет. Тогда уж делайте через сервер (только данные шифруйте непрозрачно для сервера)

#13
23:02, 5 ноя 2014

По TCP напрямую не соединишься, если оба компа за NATом. RAKNET в себе содержит имитацию ухудшенного и покореженного TCP поверх UDP, потому он соединяется.
Не всегда ходят и UDP, если роутеры настраивались. По умолчанию они обычно так настроены, что соединение возможно. Надо лишь суметь передать номер порта через какого-то посредника, это может быт STUN или еще что-то.

#14
0:49, 6 ноя 2014

Zab
> суметь передать номер порта через какого-то посредника, это [b]может быт STUN[/b] или
> еще что-то.

С этого места можно подробнее? Как через стун передать второй стороне что-то?

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумСеть

Тема в архиве.