A solução foi comprar outro roteador ... isso resolveu o problema. Eu ainda não sei qual foi a razão disso.
Eu tenho um dispositivo cliente SIP conectado ao meu roteador ADSL, então está por trás de um NAT simétrico. Meu ISP redefine o IP do cliente a cada 24 horas, parece com isso no log do roteador:
Mar 26 12:36:56 daemon crit pppd[443]: Clear IP addresses. Connection DOWN.
Mar 26 12:36:56 daemon crit pppd[443]: Clear IP addresses. PPP connection DOWN.
Mar 26 12:37:06 daemon crit pppd[443]: PPP LCP UP.
Mar 26 12:37:07 daemon crit pppd[443]: Received valid IP address from server. Connection UP.
Agora, quando isso acontece, meu cliente SIP perde permanentemente a capacidade de se registrar no provedor (suspeito que ainda tenha o antigo IP externo armazenado em cache). A única maneira de fazê-lo funcionar novamente é reiniciar o modem (ou o roteador inteiro), de modo que o link ADSL seja colocado e voltado novamente; Em outras palavras, faça isso acontecer (log do roteador novamente):
Jan 1 00:00:08 user crit kernel: ADSL link down
Jan 1 00:00:14 user crit kernel: xDSL G.994 training
Jan 1 00:00:25 user crit kernel: ADSL G.992 started
Jan 1 00:00:29 user crit kernel: ADSL G.992 channel analysis
Jan 1 00:00:36 user crit kernel: ADSL link up, interleaved, us=1182, ds=12444
Jan 1 00:00:37 daemon crit pppd[443]: PPP LCP UP.
Jan 1 00:00:47 daemon crit pppd[443]: PPP LCP UP.
Jan 1 00:00:47 daemon crit pppd[443]: Received valid IP address from server. Connection UP.
É claro que não posso colocar manualmente o link ADSL para baixo toda vez que meu ISP alterar meu endereço IP, apenas para fazer o telefone VoIP funcionar. Então, minha pergunta é, existe alguma maneira de fazer o cliente SIP funcionar após a redefinição de IP?
Minha configuração é:
Roteador: D-Link DSL-2640B
Cliente SIP: Gigaset A-510IP
Já tentei ativar o RIP no roteador, colocando o gigaset na DMZ, modificando o valor "refresh NAT time" na configuração do gigaset, ativando o STUN ... nada disso ajudou.
A solução foi comprar outro roteador ... isso resolveu o problema. Eu ainda não sei qual foi a razão disso.
Por que não cancelar o registro antes que a linha fique inativa? Eu diria que o problema é que o tempo de espera de REGISTRO definido por você no servidor significa que você especificamente precisa cancelar o registro ou o servidor irá ignorar outras solicitações suas vem da sessão que você já registrou.
Basicamente você envia um REGISTO com um tempo limite de 0 antes que a linha desça (estou assumindo que ele desce a uma determinada hora da noite, +/- 30 minutos ..) e então você pode registrar o novo IP .