UPnP NAT Traversal для беспроводной передачи данных 3G/4G на Android

Есть ли способ использовать UPnP для обхода NAT на Android с подключением 3G/4G, и если да, то зависит ли он от оператора?


person Eliezer    schedule 24.04.2012    source источник


Ответы (3)


Нет, пока нет возможности сделать это по той простой причине, что операторы мобильной связи не используют NAT жилого класса — у них есть CGN «NAT операторского класса», см. здесь http://en.wikipedia.org/wiki/Carrier-grade_NAT, и эти устройства имеют очень разные механизмы распределения портов и управления от жилые шлюзы.

См. документы по NAT операторского класса (CGN) в этой коллекции: http://www.scribd.com/collections/3292450/P2P

PS в настоящее время существует протокол, подобный UPnP, который рассматривается для CGN, а именно «протокол управления портами» (PCP), см. здесь: http://tools.ietf.org/html/draft-ietf-pcp-base-29

person Gyll    schedule 07.01.2013

Cling имеет специальные классы для Android для выполнения UPnP, и, судя по сообщениям на форуме и их документации, он должен работай. В настоящее время я тестирую его на ПК, но в конечном итоге я выбрал его из-за их поддержки Android. Я опубликую результаты своих тестов здесь через день или два.

Проверьте Cling Core и особенно поддерживающие библиотеки. . На самом базовом уровне вам нужно всего 4 строки кода для сопоставления портов.

[ОБНОВЛЕНИЕ] В документации Cling для Android указано, что она разрешает привязку только к интерфейсам Wi-Fi, что делает невозможным сопоставление портов при сотовом подключении для передачи данных (по крайней мере, с версией Cling 1.0.5)

person Audrius    schedule 30.04.2012
comment
Возможно, вы не захотите проверять, что вы принимаете мой ответ как правильный. В данный момент я читаю документацию Cling Android и вижу, что Cling будет связываться только с интерфейсом WiFi. Таким образом, это означает, что для 3G нет сопоставления портов )-. - person Audrius; 30.04.2012
comment
Я прочитал их документы и увидел это. Я предполагаю, что они знают, о чем говорят, и поэтому это невозможно сделать... может быть, это не тот ответ, который я надеялся найти, но это ответ. - person Eliezer; 30.04.2012

Вместо того, чтобы пытаться использовать uPnP (что представляет угрозу безопасности, поскольку он арендует несопоставленный открытый порт), вы можете либо использовать STUN для получения общедоступного IP-адреса/порта, а затем установить UDP-соединение, через которое вы можете туннелировать псевдо-TCP, или используйте сервер TURN. Для NAT операторского класса, если вы не хотите платить за ретрансляцию, есть еще один метод, который может когда-нибудь сработать:

https://drive.google.com/file/d/0B1IimJ20gG0SY2NvaE4wRVVMbG8/view?usp=sharing

person Community    schedule 14.08.2015