我正在尝试使用Android SIP API为Android编写一个voip应用程序(是的,我知道这只适用于2.3版本的Android)。我希望呼叫通过Asterisk服务器进行路由。呼叫也需要加密。存在一个问题,即Asterisk和Android需要在同一子网中(否则无法交换音频)。我在http://blog.harritronics.com/2011/06/android-gingerbread-and-asterisk-pbx.html上找到了一篇很好的博客文章,为那些好奇的人描述了这种情况。
我希望按照文章中讨论的那样设置VPN解决方案,因为我认为这可以解决NAT问题,以及加密。我的第一个想法是使用OpenVPN,因为那里有一个相当活跃的社区,软件看起来也很不错。然而,经过进一步的检查,在任何给定的时间,我似乎只能在VPN服务器上有2个活动的客户端(对于免费版本)。每个额外的客户端连接是5美元。简而言之,我想知道是否存在可伸缩的免费解决方案。我希望能够将大约100部android手机连接到这个VPN,以便同时与Asterisk通信。
此外,我以前没有做过VPN工作。我想知道我可以简单地使用Android设置中的VPN配置吗?或者是否需要额外的应用程序?我看到OpenVPN有一个适用于安卓系统的客户端解决方案,只有在手机扎根的情况下才能工作--这不是一个选项,因为它们不是我的手机。任何建议都将不胜感激。
谢谢!
发布于 2012-02-15 11:28:34
不知道您一直在看什么,但是OpenVPN对客户端的数量肯定没有任何限制。无论如何,正如你已经发现的,默认的安卓发行版不支持OpenVPN,尽管它集成在CyanogenMod中。然而,Android也有一个内置的VPN客户端,所以你只需要找到一个可以与之配合工作的服务器。从4.0 (ICS)开始,您也可以编写自己的VPN实现,而无需启动电话。
顺便说一句,只有在电话进行了NAT(例如,通过WiFi连接到内部路由器等)的情况下,才会出现音频问题。如果有全局地址,应该没有问题。如果你通过3G连接,这将取决于你的运营商是否给手机提供了实际的全球地址。
另一种选择是不使用Android SIP堆栈。还有其他可用的解决方案,它们可能没有此限制。查看sipdroid,它是开源的:
http://sipdroid.org/
还有另一种选择是不尝试编写自己的应用程序,只需使用sipdroid :)
发布于 2012-06-27 08:21:41
除了Asterix的nat=yes选项之外,我只考虑了另一个解决方案。nat选项适用于我在路由器后面的工作,但我知道它不是一个从Asterisk穿越的非常“智能”的NAT,它也需要来自客户端的“协作”。另一个解决方案可能是..。当我在使用它的时候,我使用的是CSipSimple,它是一个用于安卓系统的开源网络电话客户端,也许你可以查看源码,找出为什么它可以在路由器后面进行NAT。
如果你正在寻找一个,有一些,至少有一个有100%免费的选项。
希望这能有所帮助!
https://stackoverflow.com/questions/9286436
复制相似问题