拓扑图:
sip_A 注册在服务器FS_A 上,处在广域网中
sip_B 注册在服务器FS_B上,处在局域网中
一. 对于可以更改FS_B的配置的情况
可以配置FS_B的出网关的sip_profile文件 <param name="ext-rtp-ip" value="<公网IP>"/> 来解决NET问题。
二. 实际中右侧配置不能被更改的情况
2.1 . sip_A 呼叫 sip_B
1. 在路由器上增加映射,假设映射为:7080 --> 192.168.1.2:6080。实现 sip_a到sip_b 的过程
2. FS_A 发起sip_B 的呼叫的拨号计划中增加 <action application="set" data="sip_sticky_contact=true"/>,实现freeswitch对sip消息的正常响应
增加的这个通道变量的原因是由于 FS_B发出的sip消息源地址是11.22.33.44:7080 ,contact地址为<192.168.1.2:6080>; FS_A 对响应消息会直接回到 IP: 192.168.1.2:6080,而这个地址是不可达的。增加sip_sticky_contact通道变量,使FS_A 发送响应会忽略contact地址,使用源地址
2.2 . sip_B 呼叫 sip_A
1. 配置 FS_A 的 网关文件,增加 <param name="aggressive-nat-detection" value="true"/>
同样也是为了在回FS_A的响应是使用源地址作为发送地址,而不是contact地址。fs_a会知道fs_b 处在NET后面