当默认端口更改时,Kamailio '403 Not Relaying'

Kamailio '403 Not Relaying' when default port changed

各位开发者大家好...

我们已经对 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 未中继”... 我尝试启用调试以查看 cfgtrace...未检测到错误 但是当我注释掉上面的行时,(使用默认 cfg)一切正常

我哪里做错了什么?

提前致谢:)

我已针对此问题发送 email regarding this issue, and received solution..

Most probably the r-uri is without port, being considered 5060, but then, if kamailio is not listening on port 5060, it will not consider domains/ips without port as being for it, so it will try to forward it to port 5060.

You can eventually listen on both port 5060 and another higher port. Or add alias=ip:5060 parameters.

Cheers,
Daniel

如果您出于安全原因更改默认端口,那么将 kamailio 配置为侦听解决方案中提到的 2 个端口(包括默认端口)是没有意义的。我通过在 REGISTER 部分添加以下行来解决这个问题。我的 kamailio 充当代理,我的 sip 客户端发送没有端口号的注册消息。所以 kamailio 发回“403 Not relaying”。

我关闭了 5060 端口,因此任何不知道我的新端口号的外部客户端都无法将 SIP 消息发送到默认端口。如果 SIP 消息中存在空白端口或 5060 端口并在新端口上收到,那么我将按如下方式更改 $ru。

if (($ru = "sip:$rU@my_kamailio_IP:5060" )||($ru = "sip:$rU@my_kamailio_IP"))
{
  $ru = "sip:$rU@my_kamailio_IP:NewPort";
}