我有一个Android VOIP应用程序。由于一些网络阻止VOIP流量,我想找到一些方法绕过该块。我认为VPN可以做到这一点,但没有任何VPN解决方案可以轻松实现。使用Android提供的VPN API,您需要自己实现几乎所有内容(例如,那里没有任何协议实现)。
那么还有其他方法可以实现我的需求吗?可能是SSH隧道或任何其他类型的隧道?
任何建议都会有所帮助,因为我不知道从哪里开始。
答案 0 :(得分:5)
过去几年,许多国家实施了非常严格的VoIP拦截。例如,在伊朗,所有具有VoIP特性(大约3-60千位,相同的上传和下载)的流现在都被阻止。在其他国家,VoIP并未完全阻止,但质量降低(丢弃一些数据包,改变其他数据包的延迟)。这是因为通常拥有互联网网络的公司也拥有电信基础设施,这样就试图让客户远离VoIP。传统的VPN现在可以轻松过滤,最近各种深度包检测软件和设备都得到了改进。加密通常是不够的,您还必须混淆VoIP流量。即便如此,VoIP服务器也很容易找到并且流量也会降低。
如果您需要克服所有这些,我可以推荐以下内容:
我建议检查以下内容:
我最近在同一主题上做了一个研究。不幸的是,我发现只有商业解决方案来解决这些问Tor看起来很有希望,但此时我的测试后它无法用于高质量的VoIP。如果一个更简单的解决方案可以满足您的需求,那么我仍然建议使用专用的VoIP软件,如SIPTunnel,而不是通用VPN。
答案 1 :(得分:2)
解决此限制的一种简单方法是使用其他端口传输VoIP数据;您的ISP很可能不会阻止所有端口。某些网站提供可用于传输SIP数据的出站代理服务器。只需在您的出站代理服务器字段中输入其中一个,(希望)这应该有助于您的情况。
如果一个端口不工作,请尝试其他端口,例如,您的ISP可能已阻塞端口53,但端口1812可能仍处于打开状态。要找出打开的端口,可以在命令提示符中使用“netstat -a”命令。开放端口的状态应为“Listening”或“Established”。
答案 2 :(得分:2)
您可以使用Android SDK中的VpnService对象将您的应用程序连接到现有的VPN服务提供商。连接后,所有网络流量都通过VPN;当用户挂断电话时,您可以断开VPN连接。你可以做到这一切。这种方法的唯一问题是,当呼叫进行时,所有流量都通过VPN。