Asterisk SIP/2.0 401 未授权

Asterisk SIP/2.0 401 未授权

我在使用 Asterisk 10.3 时遇到了一个有趣的小问题,但它似乎也适用于 10.4。

运行 Asterisk 的服务器从 VPS 重新定位到专用硬件,现在只有几个 SIP 对等体中的 1 个可以正确连接。

SIP 对等端从 ODBC 连接实时加载。鉴于 1 能够毫无问题地连接,并且按预期运行,运行查询等,我已经排除了任何数据库连接问题。一个客户端恰好是 Grandsteam ATA。

但事情就到此为止了。其他人都无法连接,因为当他们尝试注册时,Asterisk 会告诉他们 401 Unauthorized。

在这个等式中唯一改变的变量可能是网络设置方式。旧主机是 VPS (Xen),新硬件是专用的。在这种情况下,服务器位于公共 IP 上。专用硬件上不应该发生任何奇怪的 NAT 欺骗,但几乎所有连接的对等点都位于某种 NAT 后面。

到目前为止我已经尝试过:

  • 在每个对等点上调整 nat=no,结果相同
  • 在每个对等点上调整 nat=no,insecure=invite,port,结果相同

最重要的是,Grandstream 连接得很好。但其他客户端,如 CSipSimple、Cisco IP 79xx、Polycoms... 不行。

知道需要做哪些改变才能允许这些对等点再次连接吗?

例子:

    <--- SIP read from UDP:12.34.56.78:35286 --->
    REGISTER sip:sip.server.com SIP/2.0
    Via: SIP/2.0/UDP 10.0.0.163:35286;rport;branch=z9hG4bKPjZ8cqUxWzs6KnfN5kqG9lrD-V0hXQNppc
    Route: <sip:sip.server.com;lr>
    Max-Forwards: 70
    From: "Erik" <sip:[email protected]>;tag=uwgq3EEWaQ0DuPwWEzuLfVA3aajqyXL6
    To: "Erik" <sip:[email protected]>
    Call-ID: ohWlNbqWRdOme5TvFr3.r6mnPUbjoKqs
    CSeq: 1582 REGISTER
    User-Agent: CSipSimple r1108 / GT-S5830D-10
    Contact: "Erik" <sip:[email protected]:35286;ob>
    Expires: 900
    Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
    Content-Length: 0

    <------------->
    --- (13 headers 0 lines) ---
    Sending to 12.34.56.78:35286 (NAT)

    <--- Transmitting (NAT) to 12.34.56.78:35286 --->
    SIP/2.0 401 Unauthorized
    Via: SIP/2.0/UDP 10.0.0.163:35286;branch=z9hG4bKPjZ8cqUxWzs6KnfN5kqG9lrD-V0hXQNppc;received=12.34.56.78;rport=35286
    From: "Erik" <sip:[email protected]>;tag=uwgq3EEWaQ0DuPwWEzuLfVA3aajqyXL6
    To: "Erik" <sip:[email protected]>;tag=as2da10195
    Call-ID: ohWlNbqWRdOme5TvFr3.r6mnPUbjoKqs
    CSeq: 1582 REGISTER
    Server: Asterisk PBX 10.3.0
    Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
    Supported: replaces, timer
    WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="7837df5c"
    Content-Length: 0

    <------------>

答案1

因为这可能对某些人有帮助:

insecure=invite

在类似的重新定位后帮助了我。对我来说,这是虚拟机到虚拟机,但桥接到完全相同的网络,所以我不明白为什么我的工作配置停止工作。我经历了单向呼叫效应。来自外部 SIP PBX 的呼叫进入星号,然后发送到 voip 软客户端,可以正常工作,但 voip 软客户端根本无法通信。

答案2

问题解决了!尽管 Asterisk 提供了处理多个地址的功能,只需指定 0.0.0.0 作为监听地址即可,但 Asterisk 所在的框会从服务器上的其他别名 IP 发送邀请,而不是从预期的 IP 发送邀请。将 Asterisk 绑定到一个 IP,并连接到该 IP,可以完全解决此问题。

答案3

我遇到了这个问题,我通过转移到基于 TCP 的连接解决了它。我已经启用了 TCP,只需启用扩展即可使用它。

我的环境中似乎存在 NAT 和 UDP 问题。如果我发现更多信息,我会更新我的答案,但希望这对其他发现此问题的人也有用。

相关内容