2

有没有办法在具有 3G/4G 连接的 Android 上使用 UPnP 进行 NAT 遍历,如果是这样,它是否依赖于运营商?

4

3 回答 3

6

不,暂时你无法做到这一点,原因很简单,移动运营商不使用住宅级 NAT - 他们拥有的是“运营商级 NAT” CGN,请参见此处http://en .wikipedia.org/wiki/Carrier-grade_NAT,这些设备具有与住宅网关截然不同的端口分配和管理机制。

请参阅此集合中的运营商级 NAT (CGN) 相关文档:http ://www.scribd.com/collections/3292450/P2P

PS 目前有一个为 CGN 考虑的类似 UPnP 的协议,即“端口控制协议”(PCP),请参见此处:https ://datatracker.ietf.org/doc/html/draft-ietf-pcp-base -29

于 2013-01-07T20:30:49.307 回答
3

Cling具有执行 UPnP 的 Android 特定类,从论坛消息及其文档的外观来看,它应该可以工作。我目前正在 PC 上对其进行测试,但最终我选择了它,因为他们支持 Android。我会在一两天后在这里发布我的测试结果。

检查 Cling Core,尤其是支持库。在最基本的层面上,您只需要 4 行代码来进行端口映射。

[更新] Android 的 Cling 文档指出它只允许绑定到 Wi-Fi 接口,因此无法在蜂窝数据连接上进行端口映射(至少在 Cling 版本 1.0.5 中)

于 2012-04-30T09:14:13.740 回答
0

与其尝试使用 uPnP(这是一个安全风险,因为它租用了一个未映射的端口打开),您可能想要使用 STUN 来获取公共 ip/端口,然后建立一个 UDP 连接,您可以通过该连接隧道 psudo-TCP,或使用 TURN 服务器。对于运营商级 NAT,如果您不想为中继付费,也有这种技术,有时可能会起作用:

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

于 2015-08-14T22:59:45.867 回答