我正在开发一个 VoIP 应用程序,但无法使其正常工作。每一方都有 SIP 客户端。在我的办公室,我们使用 2 个不同的盒子来访问互联网。第一个就像一个家庭网络,它几乎没有任何限制。在这个上面,一切都运行良好。第二个(这给我带来了麻烦)是一个公司网络,默认情况下,它上面的许多端口都被阻止了。
我的 VoIP 应用程序使用 Asterisk 服务器。一些应该连接到该 Asterisk 服务器的客户端位于公司网络中,位于受限路由器后面。实际上,SIP 注册使用端口 5060 TCP/UDP,而 RTP 使用 10 000 到 20 000 UDP 范围。
问题是我的网络管理员不想开放这么大范围的端口。据他说,这会产生安全漏洞。
有没有什么方法可以让SIP信令或语音通过RTP协议穿过公司路由器?
目前我有一些想法,但我不知道它们是否相关。
我的 SIP 客户端已连接到 VPN。我能否让所有流量都通过 VPN 接口,这样受限制的路由器就不知道通过它传输了哪些数据?我试过了,但有些数据包似乎仍通过我的以太网接口而不是 VPN 接口传输。
STUN 或 ICE 等协议能解决这样的问题吗?
我阅读了大量有关 NAT 穿越的资料,但没有找到任何可以解决我的问题的解决方案。
如果需要的话,我可以提供有关我的设置的更多详细信息。
2021/01/12:我的 VPN 服务器实例是 OpenVPN,它在可通过其 IP 地址访问的 pfSense 虚拟机上运行。
我运行了 tcpdump 命令来捕获 pfSense 机器上端口 5060 上的流量,但是当我从受限网络连接客户端时,我的客户端无法访问此服务器......
答案1
你可能不需要打开这么多端口。每个端口最多需要四个端口同时电话呼叫可能很麻烦。因此,100 个端口对于大多数小型办公室来说就足够了。您只需要在 中配置它们即可rtp.conf
。
[general]
;
; RTP start and RTP end configure start and end addresses
;
rtpstart=16384
rtpend=16482
考虑使用范围 16384-16482,因为许多 VoIP 设备已经默认使用此端口范围。