Booster Начнем с того, что поведение натов ничем не стандартизированно, нет никакого стандарта натов, и деление на симметричные, фулконные, и прочие наты - это деление на бытовом уровне. Поскольку поведение не обязано четко следовать какому-то стандарту, то и отклонение от этого поведения нельзя считать багом. С этим согласен, однако обходной путь есть почти всегда. Вот его я и ищу. Спасибо, ... ах, ну да.
_DEN_ Что значит на бытовом? Есть устоявшаяся терминология. Дерзай, но не найдёшь. Но даже если и найдёшь, то это ничего не даст, так как знание внешнего порта в порт ограниченном нате бесполезно, другая сторона всё равно ничего не сможет сделать.
Booster Да, но поведение всеравно не стандартизовано. Спасибо, ты умеешь подбодрить. Узнать нужно не в Port-restricted, а в Symmetric. Алгоритм установки соединения простой. Нужно только узнать внешний порт со стороны симметричного ната. Дальше все просто.
K10 представляю на айфоне поднимается такой промежуточный сервер. поднимает vlan с другой сетью и .. дальше сами
Сорри... может я не понял, но есть такая штука как STUN-сервера которые позволяют узнать текущий внешний адрес и порт. Сам с ними не разобрался, времени было мало поэтому свою задачу решал через промежуточный сервер.
K10, Wizard109 Трижды facepalm Советского Союза. Дружно идем сюда: http://en.wikipedia.org/wiki/Network_address_translation в секцию "Types of NAT", читаем какие бывают наты, и быстренько говорим, каким собачьим хреном промежуточный сервер поможет в установке peer-to-peer соединения в конфигурации Port-restricted NAT <-> Symmetric NAT.
_DEN_ За ссылко спасибо Про p2p не заметил. При помощи внешнего сервера можно построить туннель. Вон на Скайп посмотрите. Его можно заблокировать только методом отстрела юзеров. Кажется он TURN юзает. Только проект TURN'а вроде умер... или ушел в подпольные лаборатории скайперов . UDP Hole Punching - будет работать не с любым NAT'ом (симметричным естественно). Прах этого занятия уже давно покрылся толстым слоем пыли.
З.Ы. Юзая внешний сервер как прокси можно создать на нем нехилую нагрузку, но т.к. на серваке за симметричным NAT'ом хранится что-то вроде 123.456.789.111:12345 <->217.29.13.33:66666 ТОЛЬКО ДЛЯ 141.12.34.5:56 то... без внешнего сервака в качестве "прокси" не обойтись.
Wizard109 Причем тут скайп? Причем тут TURN? КАКИМ ОБРАЗОМ БУДЕТ РАБОТАТЬ PEER-TO-PEER В PORT-RESTRICTED NAT <-> SYMMETRIC NAT?!?!?!?!1717171171717ненависитьненависитьненависить. Давай по порядку, что с какого сокета куда отправить, где что принять и как это поможет в организации тоннеля??!71 Есть конкретная конфигурация NAT-ов, в которых есть проблемы с установкой peer-to-peer. Где конкретный пошаговый алгоритм? ГДЕ ОН?!?! *RAGE* Если кто-то еще скажет какие-то общие слова типа "ну тут нужен промежуточный сервер", то я возьму топор и начну убивать.
Хм. Иногда я понимаю троллей. Доставило Ок. Ты хочешь соединить 2 сети за натом или юзать торрент ? В 1-м случае думать много и лениво (хотя драйвером вполне решаемо за разумное время), во втором - все что отправляет твой торрент-клиент "некой тулзой" пересылается на промежуточный сервер который будет отсылать дальше. На том же промежуточном сервере открывает(ют)ся порт который при получении данных тут же пересылает их обратно тебе а некая тулза толкает их тебе на указанный заранее порт(ы). Децкое решение, но рабочее. Это очень примерно, но описывать детально не обязательно. Технология port forwarding(по-моему) называйцо. (не запоминаю названия чуть менее чем никогда).
Wizard109 Я хочу организовать peer-to-peer тоннель между двумя компами, один из которых сидит за Port-restricted NAT, а другой - за Symmetric NAT. О том, что такое peer-to-peer, можно почитать здесь: http://en.wikipedia.org/wiki/Peer-to-peer, о типах NAT-ов можно почитать здесь: http://en.wikipedia.org/wiki/Network_address_translation в разделе "Types of NAT" - там расписаны алгоритмы маппинга внешних IP:Port в зависимости от типа ната. Драйвер не имеет абсолютно никакого отношения к проблеме, поскольку драйвер отрабатывает на клиентском компе, а пакет уходит в интернет с внешнего NAT-сервера провайдера, доступа к которому у пользователя нет. Этот бред я вообще никак не могу прокомментировать, поскольку в этом абзаце нет вообще никакого смысла. Port forwarding вообще не имеет никакого отношения к проблеме установки peer-to-peer тоннеля, "пересылка с сервера данных обратно" не имеет никакого отношения к Port forwarding, никакого децкого решения тут нет. Тут вообще нет никакого решения, тут есть только набор не связных по смыслу слов и словосочетаний. Хотя... нет, попробую все же проанализировать: Если речь идет о том, чтобы сервер постоянно форвардил траффик, то это не peer-to-peer, и этот способ не подходит потому что сервер просто не выдержит нагрузки. Торренты не гоняют свой траффик через сервер. Теряюсь в догадках, зачем это нужно. Промежуточный сервер нужен для того чтобы пиры узнали друг о друге, поэтому отвечать нужно крест-накрест. Однако в интересующей меня конфигурации этой информации не достаточно. Почему? Читай типы натов и их алгоритмы маппинга. Вот этого я вообще не понял. Зачем гонять траффик туда-сюда, если его можно сразу же отправить с нужного интерфейса и порта? У меня сложилось ощущение что ты либо не понимаешь о чем говоришь, либо не представляешь себе, в чем именно заключаются сложности организации peer-to-peer тоннеля. В любом случае начни с того, чтобы разобраться как работают Port-restricted и Symmetric NAT, и почему их алгоритмы маппинга не позволяют установить p2p тоннель. Rockphorr Отвечу анекдотом:
Не могу отвечать за всех, но нормальный админ урежет всё по максимуму и не оставит дыр. В основном все пользуются проверенными решениями, а они тестировались уже хрен знает сколько времени. Не знаю насчёт мобильного инета, так как не пользовался, но symmetric довольно не удобная штука и конечно это ещё не о чём не говорит.
Booster Но я бы не сказал, что задача NAT запретить p2p соединения с другими сидящими за NAT'ом. Мне, почему-то всегда казалось, что это лишь неудобное следствие. И поэтому возможность установить-таки это p2p соединения, не стоит рассматривать как "дыру".