我有两个基于星号的PBX,每一个都在不同的局域网上,两个局域网都与路由器相连。
第一个pbx是10.0.0.1/24,第二个是10.0.2.1/24。 这两个pbx都有自己的扩展名,扩展名之间的通话是完美的。
PBX1在不同的networking接口上有一个带有VoIP提供商的SIP中继。 PBX2没有任何连接到PBX1的干线应用程序。
我面临的问题是,当PBX2的用户拨打外线电话号码时,根据拨号规则,呼叫通过中继线路由到PBX1,PBX1又将呼叫路由到VoIP提供商,另一端在PSTNselect电话,…什么也听不到。
我debugging了这个问题,发现发生了什么事情是VoIP提供商正在向PBX2上的设备直接发送RTPstream量(在tcpdump上的udp数据包)。 由于VoIPnetworking和PBX2之间没有路由,所以stream量很大。
我的问题是:这是应该的工作方式吗? 我是否被迫确保任何两端都可路由?
它是否存在任何使PBX1作为代理工作的方式,以便只有PBX1才能访问VoIP提供商?
我使用星号1.4。
谢谢你的帮助。
使用SIP,信令通过SIP完成,数字化audio通过不同的协议RTP发送。 SIP和RTP可以并经常被发送到不同的IP地址。 这通常不是一个问题,只要IP地址都是可达的..
你的情况发生了什么,是这样的:
PBX2向PBX1发送SIP INVITE。 包含在该INVITE中的是关于在哪里发送audio的信息。 PBX2指定了自己的IP地址。 由于其IP地址可从PBX1访问,因此两者之间的通话工作正常。
现在,当被叫是外线时,PBX1将自己的INVITE发送给您的提供商,并在该INVITE中传递有关发送audio的位置(即PBX2的IP地址)的信息。如果两个PBX都在公共IP上,这会很好。 由于它们不能从外部访问,因此需要修改PBX1的行为
在PBX1上,在您的sip.conf文件中,应该有PBX2的对等configuration。 在该对等configuration中,您需要添加以下行:
canreinvite=no
(在更新的星号版本中,您将使用directmedia=no 。 )
这将导致PBX1留在媒体path,只要它涉及与PBX2的呼叫。 换句话说,当你呼叫外面的世界时,PBX1会给你的提供者自己的IP地址发送audio,然后代理那个audio,然后把它发送到PBX2。
希望这可以帮助!
你所描述的是完全可能的。 毕竟,VoIP提供商本身的工作方式有多less:我的一个VoIP提供商在Asterisk上运行其后端系统。 他们可以将呼叫路由到我的系统中设置到我的帐户的主干上。
对于Inter-Asterisk设置,使用IAX2中继可能会更容易一些。 他们将只需要一个端口在两个networking之间开放。
有几个指南可用于描述你的情况。
这看起来像医生的命令: http : //www.minded.ca/default/2010-03-05/multi-server-asterisk-network-with-sip-trunks/
我目前没有两个*系统来试用它,但它看起来像一个完整的设置指南。