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.
--
Iñaki Baz Castillo