我们目前正在进行一个学校项目,需要使用 Asterisk 设置 PBX。因此,我们在 ubuntu 12.10 上的虚拟环境(使用 virtualBox)中安装了 asteriskNow。我们尝试通过在本地网络中通过 X-Lite 注册一些 SIP 电话来进行配置,并且成功了。但现在,我们希望能够从互联网访问服务器 - 这是我们目前所面临的困难... 以下是我们迄今为止所做的工作:
在 X-Lite 中,我们指定了星号服务器所在本地网络的调制解调器的 IP。
在调制解调器上,我们将端口 5060 上的所有传入请求转发到本地路由器,然后该路由器将所有请求转发到我们的星号服务器的本地 IP。
我们将星号服务器的IP配置为静态。
我们禁用了 ubuntu 防火墙
现在,我知道这是对我们的问题的非常模糊的描述,错误可能在任何地方 - 但我们甚至不知道从哪里开始寻找错误。你有什么建议我们可以做什么吗?wireshark 会有帮助吗?任何信息、帮助或建议都非常感谢(如果您知道如何使用 freepbx 设置 asterisk 的优秀教程也行)!
答案1
几点一般性观点——
Asterisk 在虚拟机中的表现很差。
我不知道他们是否有这方面的具体指导,但我的经验是,即使在高端 VMWare 环境中,虚拟化 VoIP 服务器也可能会遇到各种奇怪的问题。
我强烈建议在专用物理硬件上进行故障排除。SIP
(Asterisk 背后的 VoIP 协议)讨厌NAT
SIP 从未真正设计用于网络地址转换。
再次尝试在不涉及 NAT 或路由的情况下在同一子网上工作,然后再继续执行更困难的任务。与
NAT 相关的问题通常比注册更能影响呼叫,并且关于如何处理它的大量信息如果你用谷歌搜索一下。一个好的数据包嗅探器是你解决 VoIP 问题的好帮手
如果您观察来回传输的数据,您可能会对问题所在有一个合理的想法。
所以基本上 - 首先让防火墙内部的工作正常进行。然后慢慢地处理穿越防火墙和 NAT。
就 Asterisk 教程而言,网络上有很多(而 Server Fault 并不是一个“帮我找教程”的资源——Google 在这方面的更新速度比我们快得多)。
如果您是 VoIP 新手,我绝对建议您使用预打包的 Asterisk 发行版——AsteriskNOW 应该不错,但我个人在生产中使用 FreePBX 发行版,效果非常好(而且它擅长自动配置 NAT 相关问题,这让我省去了一些麻烦。)
答案2
但现在,我们希望能够从互联网访问服务器 - 这就是我们正在努力解决的问题
检查事项:
- 验证您需要“打开”的正确端口。如果只是 5060,那很好...但请验证。
- 使用类似以下命令验证调制解调器的外部 IP 是否在正确的端口上响应http://www.t1shopper.com/tools/port-scan或类似
- 使用 ping、tracert 和其他工具验证调制解调器、内部路由器和 PBX 之间的双向路由,查找 NAT 问题、路由问题等。
- 确保您从调制解调器/防火墙外部测试 IP 电话,并且没有防火墙阻止到这些端口的出站数据。
希望这对你有帮助...不要试图用规则来变得严厉。
答案3
我只想补充一点,由于这个星号有一个公共 IP 地址,你可能需要考虑如何保护它,因为有机器人扫描开放的 5060 端口,试图访问 VoIP 服务器/电话/等。你可能想使用Fail2ban并为您的星号同伴选择好的密码。