El Jueves, 22 de Noviembre de 2007, Jesus Rodriguez escribió:
Por normal general, el ALG de los routers no sirve para nada... bueno, sí, para joder las cosas :-/
Me voy dando cuenta a palos, dos de dos.
Para mantener la traslación de NAT activa en el router puedes usar:
http://www.openser.org/docs/modules/1.2.x/nathelper.html#AEN218
Pero, según lo que reescriba el ALG y dependiendo de como tengas configurado el nat_uac_test() puede que nathelper no detecte que ese equipo está detrás de un NAT y no le envíe ningún keepalive.
Ahí está el problema. Entiendo yo que si el router ALG hace bien dicha función el paquete "aparenta" llegar a OpenSer desde una IP pública a todos los efectos (como con STUN), así que no se mantendría el keepalive por OPTIONS entrantes periódicos.
Aunque en el router rancio que tengo (SpeedTouch ST350v6), es curioso ver que el mensaje SIP sale nateado por un puerto público (por ejemplo 14000) pero en el "Contact" indica otro puerto (14002 por ejemplo).
Y como hago un nat_uac_test("19") se compara la IP origen con la del Contact y no coinciden y se mantendría el keepalive, pero de pura pura chiripa. ¿Es normal que indiquen un puerto en el Contact y salgan por otro? (apuesto a que es otra cagada).
Ciertamente, un router tiene que enrutar, nada más!!.
En el mundo de fantasía del IETF puede ser. pero aquí abajo existe el NAT, los pseudo-administradores de sistemas que bloquean los pings "por seguridad", e incluso los que no configuran keepalive UDP en sus firewall y es **imposible** usar un dispositivo SIP UDP desde dentro (lo he visto ya en varios sitios y casi me echo a llorar).
En fin...
Buena noches.