[Kamailio-Users-ES] Nat Traversal

Iñaki Baz Castillo ibc at aliax.net
Tue Feb 10 17:56:48 CET 2009


El día 10 de febrero de 2009 17:26, sadzas <sadzas at gmail.com> escribió:
>> Yo te he hecho antes 3/4 preguntas muy muy concretas a las que no has
>> respondido. Hazlo y será mucho más fácil ayudarte (al menos para mí).
>>
> Iñaqui, por favor, repetime las preguntas que no respondi. Crei haber
> respondido todo... hasta el grafico hice... no entiendo a que preguntas te
> refieres...

Sorry, no había visto el link del gráfico.


> Los telefonos NO estan en LAN (de hecho, si estan a traves de la NUBE y con
> un router de por medio, NO ESTAN EN LAN!)
> Los telefonos apuntan a Kamailio, el cual reenvia el trafico al Asterisk.
> Kamailio no registra absolutamente nada en ninguna base ya que no esta
> creada.
> Asterisk esta funcionando correctamente.

Te aviso de que tu escenario es muy "raro" y poco aconsejable. Y
sencillamente NO va a funcionar, es IMPOSIBLE:

  tfno_A    (NAT)        Kamailio (IP pública)       Asterisk

Vamos a suponer que has puesto "nat=no" en el peer tfno_A en sip.conf:

- tfno_A envía REGISTER desde IP privada poniendo en su Contact algo en plan:
    Contact: sip:tfno_A at 192.168.0.102

- Kamailio recibe el REGISTER y se lo ruta a Asterisk.

- Asterisk recibe el REGISTER y como tiene puest "nat=no" mira el
"Contact" y guarda como IP de registro la IP 192.168.0.102.

- Asterisk responde 200 a Kamailio quien lo ruta al tfno_A
aprovechando el mapeo NAT existente en los routers. La respuesta se
envía por donde llegó el request REGISTER, no nos liemos con esto.

- Asterisk envía un OPTIONS para comprobar si el usuario responde.
Este OPTIONS tiene como destino la IP en la que se supone que está
registrado el peer "tfno_A", es decir: 192.168.0.102. Obviamente esto
falla => UNREACHABLE.



Ahora supongamos que "nat=yes" para "tfno_A":

- Asterisk recibe el REGISTER y como tiene puest "nat=yes" ignora el
"Contact" y guarda como IP de registro la IP origen desde la que
recibe el REGISTER, es decir: ¡¡¡ la IP pública de Kamailio !!!

- Asterisk responde 200 a Kamailio quien lo ruta al tfno_A
aprovechando el mapeo NAT existente en los routers.

- Asterisk envía un OPTIONS para comprobar si el usuario responde.
Este OPTIONS tiene como destino la IP en la que se supone que está
registrado el peer "tfno_A", es decir: la IP pública de Kamailio.

- Kamailio recibe ese OPTIONS y seguramente responde "502 Not
Implemented" o algo así. Da igual, la cosa es que Asterisk recibe
respuesta y da al usuario "tfno_A" como registrado y respondiendo
(ojo, que ya la estamos liando, que el que responde es Kamailio y no
el tfno_A).

- Ahora Asterisk hace un Dial(SIP/tfno_A) y en consecuencia envía un INVITE:
     INVITE sip:tfno_A at IP_KAMAILIO SIP/2.0

- Kamailio recibe ese INVITE, ¿¿¿y qué quieres que haga??? el destino
es él mismo! además tampoco podría rutarselo al tfno_A porque no hay
un NAT keepalive y tfno_A está detrás de NAT !!


No tiene sentido alguno, tu escenario es imposible, sorry. Pero si me
lo permites también te digo que me parece una chapuza. Yo lo que haría
es:

- Los usuarios se registran en Kamailio.

- Kamailio ruta los INVITE a Asterisk.

- En sip.conf configuras cada usuario con:
    host=IP_KAMAILIO
    qualify=no
    nat=no

- Luego un poco de RtpProxy necesario y ya está. Sigue siendo una
guarrada pero al menos puede funcionar.


Saludos.
-- 
Iñaki Baz Castillo
<ibc at aliax.net>




More information about the Users-es mailing list