我刚刚(第一次)按照本指南编译并安装了kamailio。对于配置,我遵循这里的文档
我正在尝试测试一个新的SIP用户。我用创建了它
» kamctl add test testpasswd
用户在那里:
» kamctl db show subscriber
|----+----------+--------------------+------------+---------------+----------------------------------+----------------------------------+------|
| id | username | domain | password | email_address | ha1 | ha1b | rpid |
|----+----------+--------------------+------------+---------------+----------------------------------+----------------------------------+------|
| 5 | test | tethys.wavilon.net | testpasswd | | 5cf40781f33c6f43a26244046564b67e | eb898de815bc16092e4c2e8c04bfe188 | NULL |
|----+----------+--------------------+------------+---------------+----------------------------------+----------------------------------+------|
我尝试连接我的sip客户端,但注册超时(Request Timeout (408)
)。我试图通过以下操作来验证正在发生的事情:
» kamailio -l <my-ip> -E -ddddd -D 1
我看到了很多信息,其中一条很有趣:
0(15818) DEBUG: auth [api.c:86]: pre_auth(): auth:pre_auth: Credentials with realm '<my-ip>' not found
但是我不知道如何解决这个问题。如何验证配置了哪些与领域<my-ip>
关联的凭据?什么是"境界"?我找不到任何kamailio
的初学者指南。关于如何设置简单的kamailio
配置,是否有简单的操作方法?
您在问题中粘贴的日志消息是出于调试目的(因此是debug级别),它可以为没有凭据的第一个SIP请求打印(例如,第一个REGISTER)——在这种情况下,一切都可以。这些请求将通过401个回复进行身份验证,然后通过电话用Autorization标头中的凭据重新发送。
如果对于那些具有凭据的请求,您没有获得与质询函数参数(例如,www_challenge()、auth_challeng()…)中使用的领域相同的领域,则SIP电话可能被错误配置。通常,领域与SIP域相同,以确保其唯一性,但这不是必须的。使用默认的kamailio配置,领域是From标头URI域。
然而,如果您说注册超时408,那么问题可能是其他原因。当没有找到与领域匹配的凭证时,则401reply被发送回,而不是408。
超时的原因可能是REGISTER没有到达kamailio,或者kamailio试图将其发送到其他地方。您应该查看kamailio服务器上的SIP流量,看看会发生什么。你可以使用ngrep来达到这个目的,比如:
ngrep -d any -qt -W byline . port 5060
观察REGISTER是否到达kamailio服务器,以及是否试图将其发送到另一个IP。
我遇到了同样的问题。我在kamailio.cfg中添加了别名记录,效果很好。
alias="tethys.wavilon.net"
Kamailio是一个代理。这并不简单,所以如果你想要简单的东西,可以试试Asterisk。Kamailio配置需要SIP知识。
对于这个问题:您在某个地方(在配置文件或数据库中)设置了领域,但没有使用它进行注册。可能的解决方案是:
- 删除领域或将其设置为正确的域名(然后使用它!)。在默认配置中,这意味着禁用域
- 按照订阅者表中的说明使用
tethys.wavilon.net
欲了解更多信息,请访问Kamailio网站并阅读本文档。