Códigos SIP

SIP 401 Unauthorized: o que significa e como resolver

Resposta curta: SIP 401 Unauthorized é o desafio de autenticação do registrar ou do servidor: ele pede que a requisição seja reenviada com credenciais digest. Uma vez é normal no REGISTER e no INVITE. Se o 401 volta depois do reenvio, o usuário, a senha ou o realm estão errados. Confira as credenciais do tronco com a operadora.

SIP 401 na referência
Código401
Nome oficialUnauthorized
Classe4xx: falha da requisição
Definido emRFC 3261
Causas Q.850 que costumam vir junto21 (Call rejected)

Como o Monitor trata o SIP 401

A leitura depende do que deve atender o número, a pergunta que a 2N5 responde ao cadastrar cada circuito. Estas são as regras que o produto aplica hoje, geradas da mesma função que julga cada chamada de teste.

O que deve atender o númeroLeitura
Uma saudação ou mensagem gravada (a URA)Sem visibilidade
Um tom de teste ou serviço de ecoSem visibilidade
Outro: pode tocar ou ser atendidoSem visibilidade

Sem visibilidade quer dizer que a falha está do lado da 2N5, não no seu circuito: o teste não conta contra o circuito, não entra no SLA e não avisa o cliente. A 2N5 é avisada se durar.

O que o Monitor registra para uma URA: A operadora não aceitou a conta de chamadas da 2N5, geralmente por usuário ou senha errados, então nenhuma chamada de teste chegou ao circuito. É um problema de configuração do lado da 2N5, não uma queda deste circuito (SIP 401).

Se a operadora devolve o SIP 401 ao registro da conta de chamadas da 2N5, antes de qualquer chamada, o teste fica sem visibilidade: é um problema do lado da 2N5, não conta contra o circuito e não avisa o cliente.

O que significa o SIP 401 na prática?

Pela RFC 3261, o SIP 401 Unauthorized indica que a requisição exige autenticação do usuário. Ele é enviado por registrars e por agentes que recebem a chamada, e traz o header WWW-Authenticate com o desafio digest: realm, nonce e o algoritmo. O cliente calcula a resposta com usuário e senha e reenvia a requisição com o header Authorization.

Por isso, ver um 401 isolado é rotina: muitos troncos desafiam todo REGISTER e todo INVITE. O sinal de problema é o ciclo REGISTER, 401, REGISTER com credenciais e outro 401. Se o desafio repetido traz stale=true, o nonce apenas expirou e o cliente deve tentar de novo com o novo nonce. Sem stale, as credenciais foram recusadas, e é esse erro 401 SIP repetido que impede o registro do tronco. Para proxies, o equivalente é o SIP 407.

Causas comuns no Brasil

  • Senha do tronco trocada no portal da operadora e não atualizada no Asterisk, Issabel, FreePBX ou 3CX.
  • Usuário de autenticação diferente do número do tronco: muitas operadoras usam um login de autenticação separado do usuário que vai no From.
  • Realm ou domínio configurado errado, fazendo o PABX responder ao desafio com dados de outro servidor.
  • Tronco contratado para autenticação por IP, mas o PABX passou a sair por outro IP público, e a operadora volta a pedir credenciais.
  • Dois PABX registrando com as mesmas credenciais, um derrubando o registro do outro.
  • Caracteres especiais na senha que o painel do PABX salva ou escapa de forma diferente.

Como diagnosticar

  1. No Asterisk ou FreePBX com PJSIP, rode pjsip show registrations e veja se o tronco está Registered ou Rejected. No chan_sip (comum no Issabel), use sip show registry.
  2. Ative pjsip set logger on (ou sip set debug on) e confirme se há um segundo 401 depois do envio com Authorization.
  3. Compare o realm do header WWW-Authenticate com o configurado no tronco e confira o usuário enviado no campo username do Authorization.
  4. No FreePBX, revise os campos de autenticação do tronco PJSIP (usuário, senha e servidor). No 3CX, confira “Authentication ID” e senha, e ative o “Verbose logging”.
  5. Use sngrep port 5060 para ver a escada completa e garantir que o reenvio sai pelo mesmo IP e porta da primeira tentativa.
  6. Se o tronco é por IP, confirme com curl ifconfig.me qual IP público o servidor está usando.

O que mandar para a operadora

  • Data e hora com fuso horário das tentativas de registro ou de chamada.
  • Número ou identificador do tronco e o usuário de autenticação usado.
  • Call-ID de um REGISTER ou INVITE recusado.
  • As duas respostas 401, com o header WWW-Authenticate completo, mostrando o realm.
  • O IP público de origem e quantas tentativas falharam.
  • O pcap da captura, quando disponível, sem expor a senha em texto.

Perguntas frequentes

Ver 401 no log do Asterisk significa que o tronco está com problema?

Não necessariamente. O fluxo normal de autenticação é: REGISTER ou INVITE sem credenciais, 401 com o header WWW-Authenticate, reenvio com o header Authorization e, então, 200 OK. O problema é quando o segundo envio, já com credenciais, também recebe 401. Isso indica credenciais recusadas, e não apenas o desafio.

Qual a diferença entre 401 e 403 num tronco SIP?

O 401 diz "preciso saber quem você é" e oferece um desafio para autenticar. O 403 Forbidden diz "sei o que você pediu e não vou atender", e autenticar de novo não resolve. Se você vê 401 seguido de 403, a autenticação passou, mas a operadora recusou a chamada por outro motivo, como o número de origem.

Saiba disso antes dos seus clientes

O Monitor liga para cada circuito de voz o dia todo e entrega cada falha com o código SIP e a causa Q.850 como prova.