我目前的设置 - 我在几个办公室周围使用一堆 SIP 硬电话。所有设备都配置了两个 SIP 帐户 - 一个在内部 SIP 代理上[用于分支机构之间的呼叫],另一个 - 在第三方 VOIP 提供商处[因为它在不同的国家 - 那些是不同的提供商,但这无关紧要]。
我正在考虑在类似 asterisk/freeswitch 服务器的服务器上终止 sip 呼叫,并让所有 sip 设备只登录一次这样的服务器 - 主要是为了提供语音邮件、群组呼叫、重定向等功能。这似乎完全可行,但有一个问题 - 我找不到如何准备 nat/no nat 的示例。对于路由到/来自第三方 voip 运营商的呼叫 - 我需要处理 nat/stun 等,但对于内部呼叫的处理 - 我不想要任何 nat,所有流量都应该通过 vpn 到不同的分支机构。
您能给我提供一些有关如何配置它的提示吗?有任何教程吗?
谢谢!
答案1
对于 FreeSWITCH,我相信此功能可以通过内部/外部 sip 配置文件来处理。您可以在 wiki.freeswitch.org 上找到更多信息
您可以在外部配置文件中设置外部 VoIP 提供商的 NAT 配置(例如 /usr/local/freeswitch/conf/sip_profiles/external/voipprovider.xml)。您可以设置这两个参数以匹配您的公共 IP 地址:
<include>
<gateway name="voipprovider">
<param name="ext-rtp-ip" value="x.x.x.x"/>
<param name="ext-sip-ip" value="x.x.x.x"/>
<param name="username" value="user"/>
<param name="password" value="password"/>
<param name="realm" value="sip.voipprovider.com"/>
</gateway>
</include>
要使用外部 voip 提供商,您需要设置拨号计划 (/usr/local/freeswitch/conf/dialplan/default.xml),如下所示。要根据目的地使用不同的 voip 提供商,您可以调整正则表达式:
<include>
<extension name="Dial Out VoIP Provider">
<condition field="destination_number" expression="^9(1\d{10})$">
<action application="bridge" data="sofia/gateway/voipprovider/$1"/>
</condition>
</extension>
</include>
希望这能有所帮助。我没有使用过 Asterisk,因此我不确定如何使用该开关进行设置。