Blog de Ubuntu en Español Blog [no oficial] de Ubuntu en Español

27Sep/100

debugging IAX en Asterisk 1.4

Debido a algunos problemas con un carrier de Voip que me provee sus enlaces via IAX2 he tenido que aprender a tomar la investigación por mi propia cuenta, en realidad voy a describir un poco las herramientas que he utilizado hasta el momento para tratar de encontrar el error.

Primero y lo mas basico vamos a habilitar los logs de asterisk a su mayor capacidad, para esto modificaremos el archivo Logger.conf

[root@srv-pbx asterisk]# pwd
/etc/asterisk
[root@srv-pbx asterisk]# ls -lha logger.conf
-rw-r--r-- 1 root root 144 Sep  9 11:23 logger.conf

En este archivo asterisk define tanto el nivel de reportes, como el nombre de los archivos generados para guardar los mismos.

  • debug
  • notice
  • warning
  • error
  • verbose
  • dtmf

Ejemplos:
debug => debug
console => notice,warning,error
messages => notice,warning,error
full => notice,warning,error,verbose
syslog.local0 => notice,warning,error

[root@srv-pbx asterisk]# cat logger.conf
[logfiles]
debug => debug
console => notice,warning,error
messages => notice,warning,error,debug,verbose
full => notice,warning,error,verbose

Luego de realizadas estas modificaciones desde nuestro CLI vamos a ejecutar “logger reload” para poner a funcionar los nuevos logs

para no perdernos entre tanta información que a veces asterisk despliega en su consola vamos a colocar un “mute

srv-pbx*CLI> set verbose 0
Verbosity is now OFF

Seguido esto podemos iniciar a tomar trazas de nuestra actividad IAX2

srv-pbx*CLI> iax2 set debug
IAX2 Debugging Enabled

De esto podremos obtener un poco de información que esta relacionada con nuestro trafico/registro/identificación

Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00017ms  SCall: 03132  DCall: 00000 [172.20.1.141:4569]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00023ms  SCall: 03132  DCall: 00001 [172.20.1.141:4569]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00004ms  SCall: 11911  DCall: 00000 [127.0.0.1:39767]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00004ms  SCall: 07223  DCall: 00000 [172.20.1.169:4569]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00004ms  SCall: 13976  DCall: 00000 [127.0.0.1:40726]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00004ms  SCall: 07951  DCall: 00000 [172.20.1.141:4569]
   Timestamp: 00004ms  SCall: 13976  DCall: 00000 [127.0.0.1:40569]

si esta información no bastara vamos a bajar un poco mas de nivel utilizando tcpdump tanto en el puerto como protocolo

tcpdump -w trace.cap -p -n -s 0 "udp"
tcpdump -w trace.cap -p -n -s 0 port 4569

* -p : no iniciar en modo promiscuo y solo los paquetes de asterisk in/out seran capturados
* -n : no utilizar la resolución de DNS para evitarnos nombres innecesarios en nuestra traza
* -s 0 : aqui capturaremos todo el contenido de los paquetes tanto SIP como RTP debido a que nos interesa todo el trafico.
0 significa la información completa del frame.
* -w : con esto mandaremos a escribir la información a un archivo especifico
* 4569 es el puerto estandard en el cual se conecta asterisk via IAX2

ahora el archivo resultante lo podremos analizar mucho mejor con el Wireshark y sus plugs de telefonia

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


 

No trackbacks yet.