Códigos SIP

SIP 407 Proxy Authentication Required: o que significa e como resolver

Resposta curta: SIP 407 Proxy Authentication Required é o desafio de autenticação de um proxy, normalmente o da operadora, que pede o reenvio do INVITE com credenciais digest. Receber um 407 na primeira tentativa é normal. Se o 407 se repete depois do reenvio, as credenciais ou o realm estão errados. Revise a autenticação do tronco no PABX.

SIP 407 na referência
Código407
Nome oficialProxy Authentication Required
Classe4xx: falha da requisição
Definido emRFC 3261
Causas Q.850 que costumam vir junto21 (Call rejected)

Como o Monitor trata o SIP 407

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 407).

Se a operadora devolve o SIP 407 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 407 na prática?

Pela RFC 3261, o SIP 407 Proxy Authentication Required é semelhante ao SIP 401, mas indica que o cliente precisa primeiro se autenticar com o proxy. O proxy envia o header Proxy-Authenticate com o desafio digest (realm e nonce), e o cliente reenvia a requisição com o header Proxy-Authorization.

Em troncos SIP, o fluxo normal de uma chamada é INVITE, 407, ACK, novo INVITE com credenciais e, então, 100 Trying e 180 ou 183. Por isso o 407 aparece em quase todo log de chamada de saída e não indica problema sozinho. O sinal de falha, o verdadeiro erro 407 SIP, é o segundo 407, logo depois do INVITE que já trazia credenciais, ou um PABX que nunca reenvia o INVITE. Se o novo desafio traz stale=true, o nonce só expirou e basta tentar de novo.

Causas comuns no Brasil

  • Senha ou usuário de autenticação do tronco desatualizados no Asterisk, Issabel, FreePBX ou 3CX.
  • Tronco no PABX sem autenticação de saída configurada, de modo que o INVITE nunca é reenviado com credenciais.
  • Realm diferente entre o REGISTER e o INVITE, com o PABX usando a credencial errada para o desafio do proxy.
  • Usuário no From do INVITE diferente do login de autenticação que a operadora associou ao tronco.
  • Tronco por IP que passou a sair por outro IP público, levando o proxy da operadora a exigir credenciais.
  • SBC no meio do caminho que remove ou reescreve o header Proxy-Authorization.

Como diagnosticar

  1. Capture com sngrep port 5060 e confira se o INVITE é reenviado depois do 407 e se o segundo envio também recebe 407.
  2. No Asterisk ou FreePBX, ative pjsip set logger on (ou sip set debug on no chan_sip) e compare o realm do Proxy-Authenticate com o do Proxy-Authorization.
  3. Rode pjsip show endpoint <tronco> e confira se o endpoint tem outbound_auth apontando para a autenticação certa. No chan_sip, revise secret, defaultuser e fromuser.
  4. No 3CX, ative o “Verbose logging” e revise “Authentication ID” e senha do tronco.
  5. Teste uma chamada logo depois de reiniciar o registro com pjsip send register <tronco>, para descartar nonce vencido.
  6. Se houver SBC ou firewall com inspeção SIP, capture antes e depois dele para ver se o header de autenticação chega intacto.

O que mandar para a operadora

  • Data e hora com fuso horário das chamadas recusadas.
  • Número de origem (A), número chamado (B) e o usuário de autenticação do tronco.
  • Call-ID de uma chamada afetada.
  • Os dois 407 recebidos, com o header Proxy-Authenticate completo (realm e nonce).
  • O IP público de onde as chamadas saem e quantas tentativas falharam.
  • O pcap da captura, quando disponível, sem expor a senha.

Perguntas frequentes

Qual a diferença entre 401 e 407?

Os dois são desafios de autenticação digest e funcionam do mesmo jeito. O 401 vem de um registrar ou do destino final e usa os headers WWW-Authenticate e Authorization. O 407 vem de um proxy no caminho e usa Proxy-Authenticate e Proxy-Authorization. Em troncos, é comum o REGISTER receber 401 e o INVITE receber 407.

O registro do tronco está OK, mas as chamadas recebem 407. Por quê?

O registro e a chamada podem usar credenciais ou realms diferentes, e alguns PABX só respondem ao desafio do INVITE se o tronco tiver autenticação de saída configurada. Também acontece quando o INVITE sai com um usuário no From diferente do esperado pela operadora. Compare o Proxy-Authorization do INVITE com o Authorization do REGISTER.

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.