你好开发人员......
我们已经测试了一个星期的Kamailio,它工作得很好...... 但是我们的一些朋友报告他们无法使用他们的移动互联网连接到我们的服务器...而且服务提供商似乎阻止了默认的SIP端口......
所以我们决定改变港口...... 我打开了kamailio.cfg并添加了这些行:
listen=tcp:_PUBLIC_IP_:32850
listen=udp:_PUBLIC_IP_:32850
listen=tls:_PUBLIC_IP_:32851
listen=tcp:127.0.0.1:32850
listen=udp:127.0.0.1:32850
listen=tls:127.0.0.1:32851
listen=tcp:10.19.0.5:32850
listen=udp:10.19.0.5:32850
listen=tls:10.19.0.5:32851
port=32850
port=32851
现在客户端抛出错误“403 Not relay”... 我尝试启用调试以查看cfgtrace ...未检测到错误 但是当我注释掉上面的行时,(使用默认的cfg)一切正常
我在哪里以及我做错了什么?
提前致谢:)
答案 0 :(得分:3)
我已就此问题发送email,并因此问题收到了solution。
很可能r-uri没有端口,被认为是5060,但是,如果kamailio没有侦听端口5060,它将不考虑没有端口的域/ ips,因此它会尝试转发它到达港口5060.
您最终可以同时侦听端口5060和另一个更高端口。或者添加alias = ip:5060参数。
干杯,
丹尼尔
答案 1 :(得分:0)
If you are changing default port for security reasons , then there is no point in configuring kamailio to listen on 2 ports ( including default port ) as they mentioned in the solution. I solved this by adding below line in REGISTER section . My kamailio is acting as proxy and my sip client is sending register message without port number . So kamailio sending back "403 Not relaying" .
I closed 5060 port , so any external client which does not know my new port number can not send SIP message to default port . If a blank port or 5060 port exist in SIP message and recievd on new port then i am changing $ru like below .
if (($ru = "sip:$rU@my_kamailio_IP:5060" )||($ru = "sip:$rU@my_kamailio_IP"))
{
$ru = "sip:$rU@my_kamailio_IP:NewPort";
}