O ambiente de teste consiste em um cliente CSipSimple, servidor Asterisk e um roteador com NAT. Antigamente o equipamento usava a porta UDP 5060 e estava tudo bem. Em seguida, alterei o número da porta para 15000 no Asterisk, na regra de encaminhamento do roteador e no aplicativo cliente. Agora, ao acessar a rede de fora, o cliente pode se cadastrar, mas quando liga para algum ramal, o Asterisk reclama da impossibilidade de criar o canal DAHDI. Quando o cliente está na LAN, as chamadas estão funcionando.
O que deu errado? Eu mudei apenas o número da porta de controle.
Atualizar
Em primeiro lugar, preciso mencionar que o Asterisk sempre reclama da impossibilidade de criar o canal DAHDI quando estou ligando para o ramal 100, independentemente de a voz funcionar ou não. Portanto, essa mensagem de erro pode ser ignorada.
Agora, as diferentes caudas dos registros de chamadas detalhados:
Cliente móvel registrado em 3G, sem som (chamada, pickup, timeout):
-- SIP/103-00000001 answered SIP/101-00000000
> 0x7fda800295a0 -- Probation passed - setting RTP source address to 192.168.1.100:5062
Isso é tudo. Sem mais mensagens.
Cliente móvel registrado via WiFi, funciona o som (chamada, captura, conversa, desligamento):
-- SIP/103-00000003 answered SIP/101-00000002
> 0x7fda88026620 -- Probation passed - setting RTP source address to 192.168.1.100:5062
> 0x7fda78013fb0 -- Probation passed - setting RTP source address to 192.168.1.112:4000
> 0x7fda78013fb0 -- Probation passed - setting RTP source address to 192.168.1.112:4000
-- Executing [h@macro-dial-one:1] Macro("SIP/101-00000002", "hangupcall,") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/101-00000002", "1?theend") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] ExecIf("SIP/101-00000002", "0?Set(CDR(recordingfile)=)") in new stack
-- Executing [s@macro-hangupcall:4] Hangup("SIP/101-00000002", "") in new stack
== Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/101-00000002' in macro 'hangupcall'
== Spawn extension (macro-dial-one, h, 1) exited non-zero on 'SIP/101-00000002'
== Spawn extension (macro-dial-one, s, 43) exited non-zero on 'SIP/101-00000002' in macro 'dial-one'
== Spawn extension (macro-exten-vm, s, 9) exited non-zero on 'SIP/101-00000002' in macro 'exten-vm'
== Spawn extension (from-internal, 103, 2) exited non-zero on 'SIP/101-00000002'
Suspeito que sua porta SIP esteja agora na faixa RTP, então o Asterisk não percebe que esta é uma conexão SIP. Mova a porta SIP ou mova o intervalo de portas RTP para que não se sobreponham.
Capture a saída CLI de uma chamada com falha (fora da LAN) e uma chamada bem-sucedida (na LAN) e poste os resultados aqui.
Para capturar a saída da CLI, no prompt do bash:
Em seguida, faça uma chamada de sua LAN que funcione. Em seguida, faça uma chamada de fora de sua LAN que falhe. Poste a saída completa acima (suponho que você tenha um plano de discagem simples). Se você estiver usando um PBX enlatado como Elastix ou FreePBX, a saída pode ser muito longa para postar aqui...