On Tuesday 15 January 2008 17:36:32 andresdb@adinet.com.uy wrote:
Adjunto output de ngrep.
Fíjate que cuando OpenSer envía el INVITE a Asterisk nunca recibe respuesta y lo reenvía una y otra vez:
U 2008/01/15 14:43:54.789503 200.40.xxx.xxx:5060 -> 192.168.0.7:5060 INVITE sip:751@192.168.0.7:5060 SIP/2.0 Record-Route: sip:200.40.xxx.xxx;lr=on;ftag=426df431 Via: SIP/2.0/UDP 200.40.xxx.xxx;branch=z9hG4bK7eaa.c54b1b32.0 Via: SIP/2.0/UDP 190.132.174.235:19352;branch=z9hG4bK-d87543-ad46ba1a844e6f5e-1--d87543-;rport=19352
- Lo relevante de ahí es que OpenSer tiene dos IP's, la pública y la privada.
- OpenSer envía el INVITE a Asterisk por la eth privada pero indica en el Via la IP pública (y el UAS receptor, Asterisk) debe responder a la IP en el Via.
- Intuyo un conflicto de rutado. ¿Es la máquina OpenSer también el router y puerta de enlace de los equipos de la LAN?
- También hay que ver cómo reacciona Asterisk porque o bien ni siquiera responde o bien la respuesta es enviada pero no llega a la máquina OpenSer de ninguna forma (no se ve en el ngrep). Para ello habilita el sip debug en Asterisk: CLI>sip set debug on CLI>core set debug 4 CLI>core set verbose 4 y captura lo que ocurre en el INVITE fallido.
- Por cierto, el peer de OpenSer en Asterisk, ¿está definido con nat=yes?
Creo que la solución es que OpenSer ponga en el Via la IP privada por la que sale y creo que existe alguna función para ello, pero no sé ahora cuál.