Академический Документы
Профессиональный Документы
Культура Документы
SIP en Elastix
Categoras: Tutoriales de Elastix
Sip en Elastix
El procotocolo SIP es utilizado actualmente, por la gran mayoria de las plataformas de comunicaciones de Telefonia IP, incluso los fabricantes con tecnologias propietarias como Cisco, Mitel, Avaya, etc estan incorporando el protocolo SIP en sus equipos, esto ha permitido la interconexion de sistemas telefonicos entre diferentes plataformas a traves de las redes IP, algo que en el pasado solo se podia lograr por medio de interfaces E1-T1-J1 usando protocolo QSIQ u otros. Hoy es comun que los proveedores de enlaces telefonicos ofrezcan sus servicios a traves de troncales SIP, lo que ha permitido globalizar las comunicaciones telefonicas, por medio de Internet podemos contratar una troncal SIP con cualquier proveedor del pais que se desee, abaratando las comunicaciones significativamente. La mayor parte de las comunicaciones que se realizan entre dispositivos de telefona IP en general, que no contienen Asterisk en esencia, estn basadas en el protocolo SIP.
Es muy importante tener presentes algunos conceptos bsicos sobre el protocolo SIP para poder entender como funciona todo, y en esencia incluso, poder tratar futuros problemas que pudieran derivar de un error de configuracin, o incluso, de interconexin entre terminales de cualquier ndole.
31/3/2014
En el ao 2010 naci como RFC 5456 un verdadero competidor, IAX, pero demasiado tarde, ya que el mercado de las telecomunicaciones IP (y concretamente dispositivos y productores), ya se haba asentado sobre el protocolo SIP.
Funcionamiento Esencial
SIP en la capa de transporte OSI, puede trabajar tanto con puertos TCP como UDP, y de hecho UDP suele ser elegido regularmente. El puerto de eleccin ms comn y estandarizado es el 5060, y como comentbamos con anterioridad, a travs del mismo, tambin se trasmiten los mensajes del protocolo SDP. Por otro lado, para trabajar con Audio en Asterisk tenemos que utilizar forzosamente el protocolo RTP para llevar el trfico. Para cada canal de audio es necesario trabajar con un puerto independiente, y esto acarreara an mas problemas en la seguridad, o en la interoperatividad con nuestro sistema.
Intercambio de Mensajes SIP Los mensajes clsicos de SIP son los siguientes: INVITE REGISTER ACK BYE OPTIONS
31/3/2014
NAT sobre otro NAT sobre otro NAT, etc, etc dado que poseemos un nmero excesivamente limitados de direcciones IPv4 nos encontramos ante el primer problema. Tenemos un Router con conexin a internet, y asignada una direccin IP concreta. Dentro de la red local de ese router, nuestra mquina posee una direccin local. En las cabeceras SIP al enviar el paquete de iniciacin de sesin a travs del router, el servidor remoto por defecto, registrara nuestro equipo apuntando a la direccin local, y por consiguiente, no existira una ruta de regreso para seguir la trasmisin de mensajes y que se complete la transaccin adecuadamente. Si nuestro router posee funciones avanzadas para la gestin del nat, si en nuestra configuracin de Asterisk, en el archivo de configuracin del protocolo SIP marcamos que nos debemos registrar activando una propiedad especifica (nat=yes), Asterisk implementara una funcin exclusiva para resolver este problema forzando el comportamiento descrito en el RFC 3581 y adicionalmente, habilitando el soporte para el RTP Simtrico, aparte que es fundamental que el router posea capacidades de NAT Transveral e implemente los correspondientes ALG. Si un punto (peer) est configurado con nat = yes, hace que Asterisk ignore la informacin de direccin en las cabeceras SIP y SDP de ese punto, y responde unicamente a la direccin IP del remitente y al puerto utilizado. nat = yes permite una forma de RTP Simtrico. Problemas con los puertos Este es el escenario ms clsico perpetuado por el uso del protocolo RTP, el cual utiliza puertos aleatorios y muy difcilmente controlables (o al menos todo intento de control provoca en ltima instancia fallos en la comunicacin debidos a su relativa aleatoriedad). Por un lado, nos encontramos lo clsico: necesitamos abrir puertos en nuestro Cortafuegos (Firewall) para permitir el paso de datos por uno o varios determinado en concreto. Para el caso de SIP/SDP no hay problema, porque si hemos elegido el puerto por defecto 5060, simplemente con abrir este, ya permitiriamos el paso y podramos ver en nuestro registro de eventos, el intercambio de mensajes satisfactoriamente. Realizamos la llamada, vemos con salen los mensajes ACK, INVITE, OK suenan los telfonos, descolgamos y nos damos cuenta de pronto que no hay voz. Los datos RTP estan siendo bloqueados en el Cortafuegos. La pregunta es que puerto debemos desbloquear ahora para permitir el paso? Existen tres formas de planterselo: Abrir todos los puertos necesarios segn configuracin en el archivo correspondiente (rtp.conf). A nivel de seguridad es una idea nefasta. Utilizar un servidor VPN (Virtual Private Network) al que conectara nuestro dispositivo remoto, y una vez dentro, ya se establecera la conexin como si formara parte de la red local. La inconveniencia principal esta basada en cuestiones de rendimiento, aunque resulta relativamente popular. Trabajar con un servidor STUN RFC 3489. Esta solucin es quiz la mas compleja y existen mltiples fuentes de documentacin que tratan especficamente sobre ella. Leer mas sobre este punto. Adems para mantener los puertos abiertos, y haciendo uso del mensaje OPTIONS de SIP, desde la configuracin sip.conf podemos forzarlo a travs de un parmetro multiproposito (qualify=yes) que realmente se encarga de informar sobre los dispositivos conectados al sistema, entre otros aspectos, su estado, tiempo de respuesta, etc.
Parmetros de Configuracin
La relacin entre el protocolo SIP y Asterisk se establece a traves del archivo de configuracin sip.conf dentro del directorio de configuraciones por defecto /etc/asterisk La estructura del archivo se categoriza por secciones delimitadas por corchetes. La seccin genrica con los valores por defecto se denomina [general] y el resto de las secciones corresponden a todos los puntos SIP que conectan y autentican con Asterisk (telfonos IP, softphones, proveedores VoIP, pasarelas ATA, etc) y pueden tener nombres genricos. Un ejemplo de estructura:
http://elastixtech.com/sip-en-elastix/ 3/9
31/3/2014
Archivo: /etc/asterisk/sip.conf
Configuracin General
La mayor parte de los parmetros pueden englobarse en la seccin general, y serviran como parmetros por defecto aplicables tanto al protocolo SIP como a lo pares de telefona IP concretos que definamos a continuacin (excepto a los valores de autentificacin con los mismos como es obvio). Alguno de los parmetros mas comunes podran ser los siguientes: bindport: Aqui podemos especificar el puerto especifico al que escuchara nuestra mquina Asterisk para conexiones SIP (puerto UDP), por defecto el 5060. externhost/externip: En caso que estemos tratando de efectuar conexiones desde fuera de nuestra red local, con un NAT de por medio, podemos forzar el nombre del host o la direccin IP concreta, para que se incluya en las cabeceras SIP, y as poder evitar una parte del problema de trabajar con NAT (con la opcin nat=yes que veremos mas adelante). allowguest: Permitimos llamadas de invitados, lo recomendable seria ponerlo allowguest = no por motivos de seguridad realm: Dominio de autentificacin, para cuestiones generales en el registro de pares. Ademas curiosamente, los passwords MD5 se construyen en parte siguiendo lo especificado en este parametro. Por defecto el realm es asterisk allow/disallow: Esta opcin es aplicable tanto a los pares como a modo general. Seran los permisos para poder utilizar todos o determinados codecs. Por defecto se permiten todos y no se restringe ninguno (allow = all), por eso para permitir solo determinados codecs es fundamental primero, prohibirlos todos con la opcin disallow = all. Podemos encontrar mas informacin sobre Codecs dando Clic Aqui rtcachefriends: Si trabajamos con Asterisk Realtime para configurar SIP (tabla sippeers) sera un mtodo de cachear a los pares, para no tener que estar haciendo consultas SQL constantemente. context: El contexto por defecto al que enviaremos las llamadas dentro del Plan de Marcacin. En este caso es default, y sera conveniente o definirlo en el archivo de configuracin del Plan de Marcacin para evitar sorpresas, o cambiarlo a un contexto ya definido y que tengamos controlado. language: El lenguaje utilizado por defecto en el caso que utilicemos Aplicaciones para reproducir un mensaje de audio. srvlookup: Existe una cuestin que trataremos a continuacin acerca del emparejamiento de cabeceras SIP con nuestros correspondientes pares dentro del archivo de configuracin. En el caso que queramos (intentar) este emparejamiento, utilizando los nombres de host en vez de las direcciones IP, seria conveniente activar este parmetro (srvlookup = yes). Pero al depender de terceros (bsqueda por DNS SRV), resulta un tanto aleatoria la posibilidad que este parmetro llegue a aportar algo verdaderamente de valor) relaxdtmf: Sirve para que los tonos no sean tan estrictos, especialmente prctico para llamadas de baja calidad, pero puede probar que se reconozcan tonos incorrectos en contrapartida.
http://elastixtech.com/sip-en-elastix/
4/9
31/3/2014
Surgiran ciertas inconveniencias (o ventajas si es lo que vamos buscando), por ejemplo, el hecho que al no pasar los medios a travs de nuestra mquina Asterisk-Elastix, funcionalidades que aportan determinados mdulos (aplicaciones concretamente), como la grabacin o escucha de llamadas en tiempo real, quedaran inutilizados dado que ese trfico estara fuera del alcance de nuestro sistema. Adems con que uno de los pares, no utilice el mismo cdec de trasmisin, al ser forzosa la transcodificacin en tiempo real, Asterisk tomara el control por defecto y no se dara la conexin directa.
Tipos de Pares
Existen tres tipos de Pares dentro de la configuracin SIP, considerando estos, como todo elemento que opera a travs del protocolo SIP de comunicaciones. Aqu hablamos principalmente de: Operadores SIP Telfonos SIP (tambin llamados Hardphones) Software de telefona SIP (tambin llamado Softphone) Pasarelas ATA, dispositivos que a travs del protocolo SIP, entrelazan un sistema Asterisk, con la PSTN Peer Cuando conectamos un elemento SIP con el tipo Peer, estamos considerando que se trata de un punto, por el cual tendremos intencin de cursar llamadas, es decir, acceder a su Plan de Marcacin, pero que esto no podr producirse a la inversa. Este tipo de configuracin es muy tpica, cuando nos conectamos a Operadores IP que nos ofrecen servicios de llamadas a travs de Internet, o incluso cuando nuestra mquina Asterisk depende de una mquina superior que acta como Operador para la nuestra. Para nosotros, marcas de telecomunicaciones reconocidas, podran considerarse Peers. User En este caso, hablamos de justo lo contrario a un Peer. Como la misma palabra dice, hace referencia a un usuario de nuestro sistema. Si nosotros, de alguna forma, somos operadores, definiramos como User a esas mquinas Asterisk para que puedan acceder a nuestro Dialplan (obviamente, aportando de forma adicional un sistema de autentificacin como veremos mas adelante). En este sentido, al nosotros ser Operadores, es muy probable que no necesitemos cursar llamadas a travs de todos los usuarios que se conectan a nuestra mquina ya que simplemente ofrecemos el servicio, no lo recibimos. Este tipo de configuracin es muy poco comn y tender a desaparecer en futuras versiones para dar paso a Friend en contrapartida que es ms consistente. Friend Este trmino se usa para designar a una conexin bidireccional. Sera la combinacin de un User y un Peer. El caso ms tpico, sera el de un telfono como extensin dentro de nuestro servidor. Pero tambin podra ser comn en la conexin bidireccional, con una pasarela ATA, que no solo cumple la funcin de emitir llamadas, sino que a travs de un nmero DDI (Direct Dial-In, algo as como un nmero de marcacin Directa), ofrecido por nuestra operadora, tambin estaramos accesibles para recibir llamadas hasta nuestra mquina. De hecho ciertos operadores IP ofrecen ambos servicios as que podramos otorgarles esta comunicacin bidireccional.
31/3/2014
allow/disallow: Mismo uso que en el caso general, pero especficamente para un par en concreto. Podemos encontrar ms informacin sobre Codecs Aqui. defaultuser: Una forma de redefinir el usuario de autentificacin, en caso que no queramos utilizar el nombre del dispositivo que se encuentra entre corchetes como comentabamos antes. callerid: Sirve para que nuestro destinatario vea un Identificador de llamada especifico cuando llamemos desde este dispositivo busylevel: Si queremos limitar el numero de llamadas entrantes que puede recibir nuestro dispositivo hasta que de la seal de COMUNICANDO. call-limit: Numero mximo de llamadas que podemos cursar simultneamente a travs de este dispositivo. context: Mismo uso que el caso general, especifico para el dispositivo en cuestin. dtmfmode: Hace referencia al modo DTMF que queremos utilizar para este dispositivo en concreto. Las opciones son inband,rfc2833,info. fromuser/fromdomain: Si queremos alterar la cabecera del mensaje SIP en el apartado From: cuando lo enviamos a un servidor por algun motivo concreto del mismo en caso que nos conectemos a este como tipo Peer. host: Aqui especificamos la direccin a la que nos conectamos si es un peer, en caso de ser un friend/user, podramos especificar la opcin dynamic y dejar abierta la posibilidad que cualquier dispositivo se conecte a nuestra mquina sin una IP en concreto. insecure: La misma palabra habla sobre niveles de seguridad en la comunicacin. Este es un tema especifico a tratar en el apartado Seguridad. Las opciones son invite, port y no (por defecto). Establece el nivel de autentificacin y comprobacin que se establece entre las mquinas a la hora de realizar la comunicacin. port: Si el dipositivo utiliza un puerto diferente al 5060 habra que especificarlo aqui. qualify: Utilizando el mensaje SIP, OPTIONS, comprueba si el dispositivo es alcanzable, y mide el tiempo de respuesta en el momento del chequeo. permit/deny: Ms opciones de seguridad, sirve para restringir las redes y mascaras de subred de las cuales dispositivos en las mismas puedan conectar a nuestra mquina. Un ejemplo podria ser permit = 192.168.1.0/255.255.255.0 permitira solo conexiones de dispositivos entrantes cuya IP pertenezca a esta subred. Amplio en Seguridad. mailbox: Si deseamos asociar un Buzn de Voz a un par concreto lo haremos a travs de este parmetro. Por ejemplo 100@ventas asociara el buzn numero 100 dentro del contexto ventas (esto es aplicable al fichero de configuracin voicemail.conf que podremos ampliar en Buzones de Voz. secret: La contrasea de autentificacin en formato texto plano. Es altamente insegura por motivos evidentes (recordando que SIP enva mensajes de texto durante su comunicacin). En caso de ser un proveedor, ya que contra nosotros se efecta la autentificacin no resultara tanta inconveniencia (excepto por la inseguridad ante los accesos a nivel fsico/sistema operativo) md5secret: En un intento de aportar algo mas de seguridad al sistema es posible definir esta contrasea en vez de la ofrecida por secret. El metodo de construccin es a traves un MD5-Hash cuya base es la siguiente: <usuario>:<dominio>: <contrasea>. El usuario sera el mismo que el puesto entre corchetes como nombre del par, el dominio por defecto sera asterisk o el especificado en el parametro realm como vimos en los Parmetros Generales. Y la contrasea seria a voluntad. Ejemplo: 100:asterisk:1234 nat: Haciendo referencia al apartado anterior que comentabamos acerca del problema con los NAT, este parmetro es el encargado de intentar resolverlo. Existen varias posibilidades adicionales aparte de yes|no. Considerando que yes significa aplicar el modo COmedia [5] y las capacidades de crear una conexin RTP simetrica, y no significa no aplicar ninguna de estas dos soluciones, y utilizar el metodo RFC 3581 convencional, como termino intermedio force_rport, aplica el mtodo RFC 3581, y deshabilita la conexin RTP simetrica, y finalmente comedia sera equivalente a utilizar yes, pero contando exclusivamente que el otro par solicite voluntariamente la posibilidad de aplicar el mtodo COmedia. type: Justamente es el tipo de par que comentabamos en el apartado anterior, las posibilidades, user, peer y friend.
31/3/2014
Pero saliendo de este concepto, hay un tema que resulta relativamente interesante desde el punto que concierne a la creacin de una estructura de extensiones, fcilmente mantenible en el tiempo, que tenga un compromiso con la seguridad y que eventualmente, pueda existir un seguimiento medianamente decente. Al poder llamar a nuestros dispositivos a voluntad, tendramos que elegir un sistema que fuera lo suficientemente compensado. Diversos autores ponen en comn el mismo sistema: Nombrar las dispositivos por su direccin MAC. Plantendolo: Si elegimos nombrar por numero de extensin del plan de marcacin, nos encontramos ante el dilema, que si cambiamos la extensin en el DialPlan entonces tambin tenemos que hacerlo en el archivo de configuracin SIP para seguir preservando este sistema. Si no somos rigurosos, con el tiempo es un autentico desastre (la extensin 200 llama al dispositivo 205, y la extensin 210 llama al dispositivo 203, no tiene ningn sentido). Si elegimos nombrar por un dato significativo con respecto al telfono, por ejemplo, telefono-ventas, es una buena idea a priori, el problema es que asociamos el dispositivo al usuario. En el caso que necesitemos cambiarlo de lugar, volvemos a caer en la misma inconveniencia, tendramos que cambiarle el nombre del dispositivo. Partiendo por la base de la capacidad de abstraccin extensin-nombre de peer-usuario nos encontramos entre dos aguas, designando un puesto, y a la vez un usuario. En caso de elegir nombrar con un nombre de usuario, sera una buena idea, en el caso que lo que estemos buscando es portabilidad de la extensin para un determinado usuario. En este caso por ejemplo, si el usuario harrysmith desea que en el telfono de ventas entren sus llamadas, accedera a la configuracin del mismo, y configurara el dispositivo con sus credenciales. Lo mismo ocurre para otros dispositivos como softphones. El problema entraa la seguridad dado que por regla general al poder acceder a la configuracin de los telfonos tambin tiene capacidad de acceder a otros datos que eventualmente podra interesarnos limitar su acceso. Para el caso este, definiramos entonces dispositivos como elementos estticos, en los que no hay usuarios entrando y saliendo con sus respectivas credenciales. Descartando entonces las anteriores alternativas, surgira la comentada al principio como ms popular, nombrarlos por la direccin MAC (o al menos los ltimos pongamos, 8 valores). De todas formas, para organizaciones relativamente pequeas, con menos de 50 extensiones, todo esto realmente no cobra una importancia especialmente desmedida, y quiz la primera opcin podra considerarse la ms verstil.
31/3/2014
al nombre de usuario del peer en cuestin. Caso Friend Sera una combinacin de ambas. Pero como este tipo de configuracin es muy clsica en Telfonos IP como extensiones de nuestra centralita, realmente el emparejamiento se suele realizar como se da en el caso de un tipo user. Aunque eventualmente si estamos interconectando dos centrales Asterisk a travs del protocolo SIP (aunque mala idea como podemos ver en el apartado IAX), o simplemente una central que soporta el protocolo SIP y nuestro sistema, el emparejamiento se podra realizar a nivel de direccin IP cuando se efecta la conexin remota y en el regreso a nuestra central, el emparejamiento se realizara a nivel de nombre de usuario.
http://elastixtech.com/sip-en-elastix/
8/9
31/3/2014
Protocolo QSIG
Elastix Virtualizado
http://elastixtech.com/sip-en-elastix/
9/9