Download - Proyecto asterisk debian_xen
INSTALACIÓN Y CONFIGURACIÓN
DE CENTRALITA VoIP BASADA EN
ASTERISK
Pag. - 1 -
Instalación y configuración de centralita VoIP basada en asterisk
Indice
INTRODUCCIÓN..............................................................................................................................5
..............................................................................................................................................................
OBJETIVOS.......................................................................................................................................8
..............................................................................................................................................................
MATERIAL......................................................................................................................................11
1 ELEMENTOS HARDWARE........................................................................................................11
1.1 CPU SERVIDOR ASTERISK....................................................................................................11
1.1.1 Procesador.................................................................................................................................11
1.1.2 Placa base.................................................................................................................................11
1.1.3 Memoria RAM.........................................................................................................................12
1.1.4 Disco duro................................................................................................................................12
1.1.5 Tarjeta gráfica...........................................................................................................................12
1.1.6 Lector óptico.............................................................................................................................13
1.1.7 Chasis (caja CPU).....................................................................................................................13
1.2 TARJETA DE COMUNICACIONES DIGIUM.........................................................................13
1.3 PORTÁTIL KIRA N1070...........................................................................................................14
1.4 THOMPSON SPEEDTOUCH 2030...........................................................................................14
1.5 PLANTRONICS AUDIO 650 USB............................................................................................14
1.6 BLUETOOTH JABRA BT250V................................................................................................14
1.7 LINKSYS PAP2..........................................................................................................................15
1.8 TELÉFONO AIRIS T800M1......................................................................................................15
1.9 TELÉFONO AIRIS T850M........................................................................................................15
..............................................................................................................................................................
2 ELEMENTOS SOFTWARE.........................................................................................................15
2.1 DEBIAN GNU/LINUX..............................................................................................................16
2.2 SOPORTE RAID1......................................................................................................................17
2.3 XEN............................................................................................................................................19
2.4 ASTERISK.................................................................................................................................20
2.5 SUBSISTEMA ZAPTEL (ZAPATA TELEPHONY).................................................................21
2.6 SOFTPHONE VOIXPHONE.....................................................................................................21
2.7 CDR ASTERISK........................................................................................................................22
MÉTODO.........................................................................................................................................23
1 OBTENCIÓN Y PREPARACIÓN DEL SOFTWARE DEBIAN.................................................23
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 2 -
Instalación y configuración de centralita VoIP basada en asterisk
2 INSTALACIÓN Y CONFIGURACIÓN DE DEBIAN.................................................................25
3 INSTALACIÓN Y CONFIGURACIÓN DE SERVIDOR XEN...................................................31
4 COMANDOS PARA GESTIONAR LAS MAQUINAS VIRTUALES XEN...............................44
4.1 LISTAR MAQUINAS VIRTUALES..........................................................................................44
4.2 LISTAR RECURSOS CONSUMIDOS POR LAS MAQUINAS..............................................44
4.3 AJUSTAR CANTIDAD DE MEMORIA USADA POR MÁQUINA.......................................44
4.4 INSTRUCCIONES DE PARADA..............................................................................................45
4.5 INSTRUCCIÓN DE MIGRACIÓN...........................................................................................45
4.6 INICIO MANUAL DE MÁQUINA XEN..................................................................................45
4.7 MÉTODOS DE ACCESO A MÁQUINA VIRTUAL XEN.......................................................45
..............................................................................................................................................................
5 INSTALACIÓN Y CONFIGURACIÓN DE ASTERISK.............................................................46
5.1 PAQUETES BÁSICOS NECESARIOS.....................................................................................47
5.2 DESCARGA Y COMPILACION DE SOFTWARE ASTERISK..............................................48
5.3 CONFIGURACIÓN INICIAL TRAS LA INSTALACIÓN.......................................................51
5.4 FICHEROS Y DIRECTORIOS DE ASTERISK.......................................................................52
5.5 ASTERISK CLI (COMMAND LINE INTERFACE)................................................................53
5.6 CONFIGURACIÓN INICIAL DE LOS FICHEROS DE ASTERISK......................................54
5.7 ARCHIVOS SIP.CONF, IAX.CONF Y DEMAS FICHEROS DE PROTOCOLO....................58
..............................................................................................................................................................
6 CONFIGURANDO EL ENTORNO (PARTE I)...........................................................................64
7 CONFIGURANDO EL ENTORNO (PARTE II)..........................................................................67
8 CONFIGURACIÓN DEL SOFTPHONE VOIXPHONE.............................................................70
9 COMPROBACION DEL FUNCIONAMIENTO DE LA INSTALACIÓN HARDWARE...........71
..............................................................................................................................................................
10 DIALPLAN (AÑADIENDO FUNCIONES A LA CENTRALITA)...........................................74
10.1 LOCUCION DE ENTRADA....................................................................................................74
10.2 CONTROL HORARIO.............................................................................................................79
10.3 CONFIGURANDO NUEVAS POSIBILIDADES DE MARCADO........................................83
10.4 BUZONES DE VOZ Y MENSAJES DE AUDIO AL CORREO............................................85
10.5 GRABACIÓN DE CONVERSACIONES Y LEY DE PROTECCIÓN DE DATOS...............91
10.6 INSTALACIÓN DE HYLAFAX, SERVIDOR DE GESTIÓN DE FAX.................................93
10.7 CONFIGURACIÓN DE HYLAFAX PARA UTILIZAR MODEM VIRTUAL ASTERISK. .95
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 3 -
Instalación y configuración de centralita VoIP basada en asterisk
10.8 RECEPCION DE FAX EN EL CORREO ELECTRÓNICO...................................................98
10.9 INTEGRAR CDR ASTERISK. GESTIÓN DE BASE DE DATOS........................................99
..............................................................................................................................................................
RESULTADOS...............................................................................................................................103
1 CREACIÓN DE MAQUINA VIRTUAL CON SOPORTE LVM, DNS, ETC............................104
1.1 DEFINICIÓN Y CARACTERÍSTICAS DE LVM...................................................................104
1.1.1 Ventajas de usar LVM.............................................................................................................105
1.1.2 Anatomía de un LVM.............................................................................................................106
1.1.3 Instantáneas (copias de seguridad).........................................................................................107
1.2 EMPEZAMOS LA INSTALACIÓN........................................................................................107
1.3 PRUEBAS CON LVM...............................................................................................................111
1.3.1 Eliminando un LV...................................................................................................................111
1.3.2 Extendiendo un LV.................................................................................................................111
1.3.3 Reduciendo un LV..................................................................................................................111
1.3.4 Removiendo un PV.................................................................................................................112
1.4 CONCLUSIÓN.........................................................................................................................113
..............................................................................................................................................................
2 DEFINICIÓN Y CARACTERÍSTICAS DEL FIREWALL (SHOREWALL + IPTABLES)......113
2.1 INSTALACIÓN DEL FIREWALL...........................................................................................114
..............................................................................................................................................................
3 CONFIGURACIÓN SERVIDOR DHCP.....................................................................................117
3.1 PROCEDIMIENTO PARA LA PUESTA EN MARCHA........................................................118
..............................................................................................................................................................
4 REALIZACIÓN DE COPIAS DE SEGURIDAD CON SAMBA + CRON................................119
4.1 SAMBA.....................................................................................................................................120
4.2 CRON........................................................................................................................................121
4.2.1 Sintaxis de configuración de CRON......................................................................................122
..............................................................................................................................................................
CONCLUSIONES..........................................................................................................................123
BIBLIOGRAFÍA............................................................................................................................124
ANEXOS.................................................................................................................................125140
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 4 -
Instalación y configuración de centralita VoIP basada en asterisk
INTRODUCCIÓN
Es innegable que en nuestra sociedad el mayor activo es la información. La información
nos facilita la toma de decisiones a todos los niveles... personal, político, económico, social, etc.
De echo en todas las épocas de la humanidad, la información ha sido vital para el avance de las
civilizaciones, desde los griegos a los persas pasando por los romanos. Mas la información no es
como el agua de lluvia, que un buen día sin pedirla cae sobre nosotros. La información requiere de
medios que nos permitan transmitirla y que llegue a donde nos interesa y a quien o quienes nos
interesa. A lo largo de la historia se han usado para transmitir información personas a pie y a
caballo, palomas mensajeras, señales de humo, sonidos de animales y múltiples formulas más que
la inventiva de la raza humana a pergeñado en diferentes épocas.
Y llegamos a la actualidad. Tenemos tal cantidad de información a nuestra disposición y
tantos medios para transmitirla, tantas personas a las que queremos hacer llegar dicha información,
tantos peligros que acechan a dicha información en ruta hacia su receptor que necesitamos medios
para hacer que esa información sea correctamente dirigida, protegida y entregada donde y como
deseamos.
Es claro que el medio de comunicación que más se ha usado hasta la llegada de Internet
ha sido el teléfono. Fue el primer medio que unió naciones y continentes e incluso a día de hoy
compite aún denodadamente contra su sucesor para seguir siendo la perla de las comunicaciones.
Pero los días del teléfono están contados puesto que llega la convergencia de redes, esto es, la
unión de Internet y el sistema telefónico tradicional. Las grandes operadoras de telefonía y las
grandes empresas ya hace tiempo que están adaptando y convirtiendo sus sistemas para distribuir
el trafico telefónico como datos mediante la VoIP (voz sobre redes basadas en protocolos IP), pero
las pequeñas y medianas empresas aún no han llegado a dar ese paso por los altos costes
tecnológicos y de infraestructuras que ello supone.
Pero en el teatro de las comunicaciones ha entrado un nuevo actor: el software libre.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 5 -
Instalación y configuración de centralita VoIP basada en asterisk
Gracias a ciertas aplicaciones informáticas de las que hablaremos más adelante, todas ellas
realizadas de manera altruista por personas que dedican parte de su tiempo libre a desarrollarlas y
por empresas que han visto en el software libre un modelo de negocio descentralizado, con un
potencial de crecimiento casi ilimitado y una filosofía más afín al ser humano que el modelo de
negocio basado exclusivamente en el capital.
Gracias a este nuevo actor (más particularmente a LINUX DEBIAN y a ASTERISK
como software de gestión de comunicaciones) y a un fabricante norteamericano llamado DIGIUM,
se puede con un coste muy reducido crear una centralita telefónica IP que nos permita usar
teléfonos especiales conectados a nuestra red de área local, gestionar las llamadas que nos hacen y
que realizamos, recibir faxes y mensajes de voz enviando los mensajes al correo electrónico,
enviar mensajes cortos de texto (SMS) desde aplicaciones informáticas y decenas de posibilidades
más que nos pueden hacer prescindir definitivamente del teléfono tal y como lo concebimos. Este
nuevo actor nos permite hacer llegar la información a donde nos interesa con facilidad y elegancia.
Aunque tenemos que tener en cuenta la importancia antes comentada de la seguridad en
las comunicaciones. Si a día de hoy es pernicioso que por motivos técnicos no tengamos conexión
a Internet, habría que imaginar que pasaría si a la misma vez nos quedásemos sin ningún medio de
comunicación. Hacer que un sistema basado en software y hardware nos gestione las
comunicaciones nos proporciona flexibilidad y potencia, pero a la par nos genera algunos riesgos
que hay que tener en cuenta. Para reducir esos riesgos a la mínima expresión, volvemos a utilizar
el software libre. Vamos a utilizar en este Proyecto Integrado un sistema informático con
máquinas virtuales llamado XEN. Este método nos permite que si nuestro servidor de
comunicaciones cae por problemas hardware, software o problemas externos tales como robo,
incendio o similar, se pueda tener funcionando en cuestión de minutos otro servidor y con tan solo
copiar la máquina virtual volvamos a tener funcionando todo nuestro entorno de comunicaciones.
Además al trabajar con máquinas virtuales conseguimos mayor seguridad en nuestro
sistema informático, puesto que si alguien desea acceder al mismo para conseguir nuestra
apreciada información, tendría que conseguir burlar la seguridad de varios sistemas operativos
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 6 -
Instalación y configuración de centralita VoIP basada en asterisk
hasta llegar a controlar la totalidad del sistema. Las máquinas virtuales se instalan sobre un sistema
operativo LINUX que hace las funciones de guardián y aparte cada uno de los sistemas operativos
virtuales tienen sus propias defensas.
En Internet hay un caso de un Ingeniero Informático de una ONG que cuenta la
experiencia en un pueblo perdido de África al que solamente llegaba una línea de teléfono (allí las
líneas telefónicas tienen un coste prohibitivo), consiguió gracias al software libre ASTERISK dar
servicio telefónico al Hospital, al “Ayuntamiento” y a la sede de la ONG, consiguiendo todos ellos
usar el teléfono sin necesidad de desplazarse. Esperamos sinceramente que este Proyecto Integrado
sea el germen que haga que personas con conocimientos informáticos y buena voluntad, puedan
hacer pequeños milagros. El pequeño milagro de la comunicación.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 7 -
Instalación y configuración de centralita VoIP basada en asterisk
OBJETIVOS
1 Obtención de todo el software necesario para el proyecto a través de Internet sin
costes de licencias al usar software libre o versiones gratuitas plenamente
operativas.
2 Instalación de una distribución DEBIAN del sistema operativo LINUX.
2.1 Durante el proceso de instalación dejar documentados los pasos a seguir para llevar a
buen termino la misma.
2.2 En el inicio de la instalación configurar el sistema operativo Debian en RAID1 para
mejorar en lo posible la seguridad y estabilidad del mismo.
2.3 Configurar el entorno de red para el servidor Linux, que permita llamadas por
internet.
2.4 Configurar entorno de trabajo Xen en Debian para gestionar máquinas virtuales.
2.5 Configurar usuarios y contraseñas para una correcta gestión del servidor, adecuando
la seguridad y los permisos.
3 Creación de máquina virtual Xen con las herramientas básicas de trabajo (paquetes
de software imprescindibles) para poder transformarla posteriormente en un
servidor de centralita Asterisk.
3.1 Configurar entorno de red y repositorios desde los que realizar las descargas de
paquete de programas.
3.2 Descargar los paquetes necesarios para la instalación y configuración posterior de
Asterisk.
3.3 Duplicar (copiar) la máquina virtual para tener una configuración base sobre la que
poder crear sucesivas máquinas virtuales.
3.4 Sobre un clon de la máquina virtual original, preparar la configuración de nombre de
host y direcciones IP correspondientes a nuestra futura máquina Asterisk.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 8 -
Instalación y configuración de centralita VoIP basada en asterisk
3.5 Mostrar usar y detallar las herramientas de gestión de las que dispone Xen para
visualizar, mover o modificar las máquinas virtuales.
3.6 Hacer que la máquina virtual se cargue automáticamente al inicio del sistema para
automatizar al máximo el servidor.
4 Descargar de la página web de Digium el software libre Asterisk, compilarlo e
instalarlo en la máquina virtual creada al efecto.
4.1 Configurar tarjeta de comunicaciones Digium para que sea reconocida correctamente
por el software Asterisk.
4.2 Crear una configuración base de una centralita y un dialplan para Asterisk, que
permita como mínimo realizar y recibir llamadas desde un teléfono con una sola
línea telefónica.
4.3 Mostrar, usar y detallar el uso del interfaz de comandos de Asterisk llamado CLI, el
cual provee un modo consola para suministrar comandos de gestión y control a la
centralita.
4.4 Configurar Asterisk para ser inicializado automáticamente en el encendido del
servidor, para hacer el sistema lo más autónomo posible.
5 Configurar una centralita Asterisk.
5.1 Configurar diferentes protocolos de transmisión de voz sobre IP.
5.2 Permitir llamadas entrantes a la centralita.
5.3 Permitir llamadas salientes desde la red de área local a la que se haya conectado la
centralita.
5.4 Crear extensiones telefónicas dentro de la red de área local.
5.5 Permitir llamadas internas entre extensiones y transferencia de llamadas tanto
internas como externas entre las mismas.
5.6 Permitir restringir numeración de marcado en llamadas salientes ya sea en general, o
por extensión.
5.7 Gestionar llamadas entrantes generales o personalizadas por extensión en función de
mes, día y hora.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 9 -
Instalación y configuración de centralita VoIP basada en asterisk
5.8 Crear un sistema de grabación y escucha de locuciones para ser usadas
posteriormente en las diferentes opciones de la centralita.
5.9 Crear buzones de voz generales o para cada usuario que permitan tener contestador
automático y poder hacer una gestión personalizada del mismo.
5.10 Crear un sistema de envío y recepción de fax no físico mediante detección del tipo
de llamada recibida.
5.11 Crear un servidor de correo electrónico que permita a la centralita Asterisk, según la
configuración que le suministremos, enviar a uno o varios usuarios a sus respectivas
cuentas de correo electrónico, los mensajes de voz y faxes que hayan recibido,
pudiendo ver y escuchar dichos mensajes y faxes desde sus respectivos clientes de
correo.
5.12 Descargar el paquete de software CDR Asterisk, que trae la configuración base para
el almacenamiento de todos los datos de las llamadas realizadas o recibidas con sus
atributos de hora, origen, destino, etc.
5.13 Preparar el entorno MySQL para poder crear la base de datos sobre la que va a
trabajar el software CDR Asterisk.
5.14 Crear la base de datos para el CDR Asterisk.
5.15 Preparar el entorno Apache para poder acceder a la base de datos del CDR Asterisk
desde cualquier cliente WEB y visualizar el contenido de la misma.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 10 -
Instalación y configuración de centralita VoIP basada en asterisk
MATERIAL
1 ELEMENTOS HARDWARE
1.1 CPU SERVIDOR ASTERISK : Para la gestión de la centralita se pueden utilizar
sin ningún problema equipos informáticos reciclados, siendo los requisitos mínimos
recomendados para hacer funcionar una CPU con ASTERISK tener un procesador
superior a 300MHZ, 64 MB de memoria RAM y 512 MB de espacio disponible en
disco duro. Como los requisitos de instalación de DEBIAN son similares, podría
instalarse prácticamente en cualquier tipo de ordenador.
Es muy importante el que las tarjetas de comunicaciones compatibles con
ASTERISK no usen IRQ (interrupciones del sistema) que ya están siendo usadas por
otros elementos de la CPU. En todo caso y debido a que aparte de querer usar nuestra
CPU para la gestión de la centralita de VoIP, vamos a hacerlo mediante máquinas
virtuales, y que además queremos dejar abierta la posibilidad de que la centralita
tenga posibilidad de gestionar un volumen alto de llamadas (lo cual consume
recursos de la CPU), hemos optado por una configuración de gama media-alta.
Dicha configuración sería la siguiente :
1.1.1 Procesador : Hemos optado por un procesador AMD64 4800+ DUAL CORE
en socket AM2. Este procesador utiliza una tecnología llamada AMD
VIRTUALIZATION que permite mejorar el rendimiento de máquinas virtuales.
Eso hace que sea una elección idónea para que el funcionamiento de los
diferentes servicios que se le vayan implementando a nuestro Servidor
aprovechen al máximo los recursos de la CPU.
1.1.2 Placa base : En este caso hemos decidido instalar una placa base ASUS
modelo M2N-SLI. Hemos optado por esta placa por ser ASUS una marca de
reconocido prestigio y calidad. Además de ser aparentemente compatible con el
resto de componentes que vamos a añadir. La placa usa el socket AM2 al igual
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 11 -
Instalación y configuración de centralita VoIP basada en asterisk
que el procesador AMD64 4800+ DUAL CORE y soporta módulos de memoria
DDR2. Al tener una ranura para conectar tarjetas gráficas PCI Express, si en un
momento dado queremos hacer vídeo conferencia y deseamos visualizar en
pantalla a uno o más interlocutores, nos puede hacer falta tener una cierta
potencia gráfica que si no se dispusiera de dicha ranura, no se podría obtener.
1.1.3 Memoria RAM : Hemos incluido 2GB de memoria RAM DDR2 a 800 MHz
en la configuración de nuestro Servidor. Creemos que esta cantidad de memoria
cubre ampliamente las necesidades de recursos para nuestra instalación y en todo
caso, la placa base que estamos usando tiene zócalos de ampliación de memoria
que usaremos en el caso de encontrar problemas por carga excesiva de trabajo a
nivel de asignación de memoria RAM.
1.1.4 Disco duro : Para el almacenamiento hemos tenido muy en cuenta la
velocidad de acceso y la fiabilidad, con lo que se han instalado en el Servidor
dos discos duros SATA (serial ata) de 320 GB de la marca SEAGATE, con una
velocidad de giro de 7200 revoluciones por minuto. Estos discos duros van a
funcionar en modo espejo (RAID1) para conseguir que en todo momento
tengamos posibilidad de recuperar nuestro Servidor en casos de desastre (rotura
de un disco duro).
1.1.5 Tarjeta gráfica : La marca NVIDIA es bien conocida por su robustez y
estabilidad y por ello es la gráfica instalada en nuestro Servidor. El modelo
exacto es una NVIDA GFORCE 8500GT con 512 Mb de memoria y tecnología
PCI Express con refrigeración pasiva. La refrigeración pasiva (sin ventiladores)
creemos que es vital para Servidores, puesto que es conveniente eliminar la
mayor cantidad posible de elementos mecánicos que tienen tendencia a
estropearse con mayor frecuencia que los elementos electrónicos.
1.1.6 Lector óptico : Para realizar la instalación, usamos un lector-grabador de
DVD de la marca LG con una velocidad de lectura de 18X y conectado, al igual
que el disco duro, mediante el interface SATA. Es un grabador que también nos
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 12 -
Instalación y configuración de centralita VoIP basada en asterisk
permitirá realizar copia de seguridad del sistema a DVD tanto de simple como
de doble capa y por tanto poder copiar las máquinas virtuales u otros datos.
1.1.7 Chasis (caja CPU) : Aunque no es la opción más recomendable, la instalación
de todos los componentes la hemos realizado en una caja mixta
sobremesa/semitorre de dimensiones reducidas. Esto es debido a que vamos a
tener que trasladar el Servidor y no podíamos permitirnos que fuese muy pesado
o engorroso de transportar. En todo caso, recomendamos que si se fuese a
utilizar la centralita en producción (en una empresa o institución a pleno
rendimiento) se utilizara un chasis con fuente redundante (dos fuentes de
alimentación por si una de ellas fallase) y más amplio para evitar calentamientos
innecesarios. No creemos que vayamos a tener problemas en este aspecto, puesto
que nuestro Servidor solo estará operativo un par de meses y en ese tiempo es
altamente improbable que se dañe ningún componente por sobrecalentamientos.
1.2 TARJETA DE COMUNICACIONES DIGIUM : Como alma de nuestra centralita
vamos a instalar una tarjeta de comunicaciones DIGIUM TDM400P certificada
ASTERISK con posibilidad de conectarle hasta cuatro módulos FXO o FXS que
permiten conectar hasta cuatro líneas telefónicas o dispositivos de salida analógica.
Para la conexión dispone de 4 tomas RJ11 (clavijas telefónicas convencionales de
cuatro hilos). El corazón de esta tarjeta es un chip INFINEON AN983B. La tarjeta
dispone de un conector molex estándar para poder conectarla a la fuente de
alimentación y que esta le suministre energía extra para que así la tarjeta pueda
suministrar tensión a dispositivos analógicos que se conecten a los conectores RJ11 y
que requieran dicho suministro, tales como teléfonos o fax convencionales.
1.3 PORTÁTIL KIRA N1070 : Para realizar las pruebas con los clientes VoIP por
software, vamos a utilizar un ultra portátil AIRIS KIRA N1070. Esto es un ordenador
con pantalla de 7”, procesador AMD Geode a 500 MHz, un giga byte de memoria
RAM y un disco duro de 80Gb. Al disponer de tecnología inalámbrica tanto
mediante Wifi como mediante Bluetooth, nos va a permitir realizar todo tipo de
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 13 -
Instalación y configuración de centralita VoIP basada en asterisk
pruebas y demostraciones con auriculares inalámbricos.
1.4 THOMPSON SPEEDTOUCH 2030 : Para realizar las conferencias telefónicas
vamos a utilizar un terminal telefónico THOMPSON SPEEDTOUCH 2030 el cual es
un teléfono VoIP de gama alta que dispone de una gran cantidad de funciones que le
dotan de un gran valor añadido. Entre ellas cabe destacar la posibilidad de
comunicarse con servicios de directorio externos como Directorio Activo u
OpenLDAP + Apache. Además soporta NAT, VLAN, registro de llamadas y
múltiples codecs de transmisión. Todas estas funciones nos van a permitir intentar
usar el terminal conectado a través de Internet con nuestra centralita (uso desde
diferentes redes) y probar la calidad con varios codecs de gestión de datos de voz.
1.5 PLANTRONICS AUDIO 650 USB : Con los clientes software VoIP usaremos un
auricular profesional PLANTRONICS AUDIO 650 USB. Esto es un auricular con
micrófono que gracias a tener una alta ganancia y cancelación de ruidos, nos va a
permitir mantener conversaciones sin que notemos que estamos usando algo que no
es un sistema telefónico analógico convencional. La idea es que el usuario no note
diferencia entre la telefonía clásica y nuestra flamante centralita VoIP.
1.6 BLUETOOTH JABRA BT250V : Para integrar mediante Bluetooth con el portátil
AIRIS KIRA N1070, vamos a usar un auricular Bluetooth JABRA BT250V, que una
vez sincronizado nos permitirá comunicarnos con otros terminales gracias al software
cliente de VoIP. Este auricular dispone de batería de litio que nos dará la autonomía
necesaria para realizar las pruebas que consideremos pertinentes.
1.7 LINKSYS PAP2 : Una de las posibilidades que tiene la telefonía IP es el poder
utilizar teléfonos convencionales como terminales VoIP. Pierden unas pocas
funcionalidades, pero son plenamente operativos. Para poder hacer esto necesitamos
un adaptador que nos permita conectar el teléfono a la red local. Ese adaptador es un
ADAPTADOR VoIP LINKSYS PAP2 que dispone de dos conexiones para poder
tener dos teléfonos clásicos.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 14 -
Instalación y configuración de centralita VoIP basada en asterisk
1.8 TELÉFONO AIRIS T800M1 : Para conectar al adaptador VoIP mencionado
anteriormente vamos a usar un teléfono inalámbrico marca AIRIS modelo T800M1
con altavoz manos libres y baterías recargables, el cual será perfecto para realizar las
demostraciones oportunas al poder escucharse en publico, gracias al manos libres, las
locuciones que queremos poner en la centralita IP.
1.9 TELÉFONO AIRIS T850M : También vamos a usar un teléfono fijo de sobremesa
AIRIS T850M conectado a la segunda toma del ADAPTADOR PAP2 para
demostrar que se pueden usar sin problemas este tipo de terminales con las opciones
añadidas por la centralita.
2 ELEMENTOS SOFTWARE
Como se podrá comprobar a lo largo de este proyecto integrado, nuestra principal apuesta
es el software libre, con lo que vamos a intentar por todos los medios no usar en ningún momento
software propietario de ningún fabricante. Esto significa que a excepción del gasto de los
elementos hardware, el coste del software va a ser nulo en lo que se refiere a licencias, aunque sí
que existe un coste que es el tiempo empleado por los recursos humanos necesarios para
configurar todo el sistema. Nuestra opinión es que siempre va a salir más rentable el coste del
trabajo de un técnico local que configure y gestione todo el sistema, que el pago de licencias a un
fabricante foráneo. Además esto hace que se produzca riqueza y valor añadido en nuestro entorno,
y no la fuga constante de divisas a los grandes fabricantes que en poco o nada repercuten en la
mejora de nuestro I+D y nuestra calidad de vida. Ni que decir tiene que para los países más
desfavorecidos, el software libre puede ser su tabla de salvación tecnológica.
Tras este pequeño alegato en favor del software libre vamos a exponer los elementos
software utilizados en este Proyecto Integrado.
2.1 DEBIAN GNU/LINUX : Hemos utilizado una distribución de LINUX llamada
DEBIAN por ser la más reticente a usar programas con licencias propietarias.
Además tiene fama de ser la distribución más estable y segura. Múltiples
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 15 -
Instalación y configuración de centralita VoIP basada en asterisk
distribuciones están basadas en DEBIAN y a día de hoy en Internet hay miles de
páginas y de foros donde se puede conseguir ayuda en el caso de que tengamos
problemas de instalación, configuración o uso. Dentro de DEBIAN hay diferentes
ramas de desarrollo. Estas ramas de desarrollo catalogan la distribución en
ESTABLE, DE PRUEBAS, INESTABLE, CONGELADA Y EXPERIMENTAL.
Nosotros nos hemos decidido por instalar la rama de desarrollo ESTABLE, porque
creemos que tendrá todos los drivers hardware y los elementos software necesarios
para nuestro Proyecto. En caso de que no fuese así, actualizar en todo o en parte a
INESTABLE no sería un problema excesivo. Aunque la palabra asusta un poco, la
rama INESTABLE de DEBIAN es la rama estable en otras distribuciones tales como
UBUNTU o KNOPPIX. Una vez instalada la distribución, actualizaremos todos los
paquetes tanto de seguridad como de sistema.
El Proyecto Debian es una asociación de personas que han hecho causa común para
crear un sistema operativo (SO) libre. Este sistema operativo se llama Debian GNU/
Linux, o simplemente Debian para acortar. Un sistema operativo es un conjunto de
programas y utilidades básicas que hacen que un ordenador funcione. El centro de un
sistema operativo es el núcleo (también llamado kernel). El núcleo es el programa
más importante, realiza todo el trabajo básico y permite ejecutar otros programas.
Los sistemas Debian actualmente usan el núcleo de Linux. Linux es una pieza de
software creada en un principio por Linus Torvalds y soportada de manera altruista
por miles de programadores a lo largo del mundo.
Sin embargo, se está trabajando para ofrecer Debian con otros núcleos, en especial
con el núcleo Hurd. El Hurd es una colección de servidores que se ejecutan sobre un
micronúcleo para implementar las distintas funcionalidades. El Hurd es software
libre producido por el proyecto GNU. Una gran parte de las herramientas básicas que
completan el sistema operativo, vienen del proyecto GNU; de ahí los nombres: GNU/
Linux y GNU/Hurd. Estas herramientas también son libres.
Hay que tener en cuenta que lo que la gente quiere es software de aplicación y
herramientas que los ayuden a realizar lo que necesiten hacer, desde editar
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 16 -
Instalación y configuración de centralita VoIP basada en asterisk
documentos, ejecutar aplicaciones de negocios hasta divertirse con juegos o
programar más software; es por lo que Debian viene con más de 18733 paquetes
(software precompilado y empaquetado en un formato de instalación sencilla en un
ordenador) todos ellos de forma gratuita. Es un poco como una torre. En la base está
el núcleo. Encima se encuentran todas las herramientas básicas. Después está todo el
software que ejecutamos en el ordenador. En la cima de la torre se encuentra Debian
organizando y encajando las diferentes piezas software cuidadosamente para que
todo el sistema trabaje en conjunto.
2.2 SOPORTE RAID1 : Durante el proceso de instalación vamos a usar el soporte
RAID de DEBIAN. Aunque en si mismo no es un programa, las distribuciones
LINUX funcionan mediante el método de paquetes. Eso significa que no tienes que
instalar los programas, sino que solamente se tiene que instalar una porción de
código de programa que viene precompilado en formatos estándar tales como RPM o
DEB. Así que vamos a describir todos los paquetes que van a ser representativos
durante el proceso de instalación del Servidor VoIP.
Así que volviendo al RAID, vamos a instalar DEBIAN en nuestros discos duros con
el soporte RAID1 por software de DEBIAN, lo cual va a permitir que nuestros discos
duros contengan cada uno de ellos una copia íntegra de todo el sistema. Un RAID1
crea una copia exacta (o espejo) de un conjunto de datos en dos o más discos. Esto
resulta útil cuando el rendimiento en lectura es más importante que la capacidad. Un
conjunto RAID1 sólo puede ser tan grande como el más pequeño de sus discos. Un
RAID1 clásico consiste en dos discos en espejo, lo que incrementa exponencialmente
la fiabilidad respecto a un sólo disco; es decir, la probabilidad de fallo del conjunto
es igual al producto de las probabilidades de fallo de cada uno de los discos (pues
para que el conjunto falle es necesario que lo hagan todos sus discos).
Adicionalmente, dado que todos los datos están en dos o más discos, con hardware
habitualmente independiente, el rendimiento de lectura se incrementa
aproximadamente como múltiplo lineal del número del copias; es decir, un RAID1
puede estar leyendo simultáneamente dos datos diferentes en dos discos diferentes,
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 17 -
Instalación y configuración de centralita VoIP basada en asterisk
por lo que su rendimiento se duplica. Para maximizar los beneficios sobre el
rendimiento del RAID1 se recomienda el uso de controladoras de disco
independientes, una para cada disco (práctica que algunos denominan splitting o
duplexing). El tiempo medio de lectura se reduce, ya que los sectores a buscar
pueden dividirse entre los discos, bajando el tiempo de búsqueda y subiendo la tasa
de transferencia, con el único límite de la velocidad soportada por la controladora
RAID. Sin embargo, muchas tarjetas RAID1 IDE antiguas leen sólo de un disco de la
pareja, por lo que su rendimiento es igual al de un único disco. Al escribir, el
conjunto se comporta como un único disco, dado que los datos deben ser escritos en
todos los discos del RAID1. Por tanto, el rendimiento no mejora.
El RAID1 tiene muchas ventajas de administración. Por ejemplo, en algunos
entornos es posible «dividir el espejo»: marcar un disco como inactivo, hacer una
copia de seguridad de dicho disco y luego «reconstruir» el espejo. Esto requiere que
la aplicación de gestión del conjunto soporte la recuperación de los datos del disco en
el momento de la división.
2.3 XEN : Cuando nuestra distribución DEBIAN esté funcionando en RAID1, el
siguiente paso será instalar XEN. Es una máquina virtual de código abierto
desarrollada por la Universidad de Cambridge. La meta del diseño es poder ejecutar
instancias de sistemas operativos con todas sus características, de forma
completamente funcional en equipos que no tienen por que ser muy potentes. Xen
proporciona aislamiento seguro, control de recursos, garantías de calidad de servicio
y migración de máquinas virtuales en caliente. Los sistemas operativos deben ser
modificados explícitamente para ejecutar Xen (aunque manteniendo la
compatibilidad con aplicaciones que el usuario tenga instaladas). Utiliza una técnica
llamada paravirtualización con la que puede alcanzar alto rendimiento (es decir, bajas
penalizaciones del rendimiento, típicamente alrededor del 2%, con los peores casos
de rendimiento rondando el 8%; esto contrasta con las soluciones de emulación que
habitualmente sufren penalizaciones de un 20%). Con la paravirtualización, se puede
alcanzar alto rendimiento incluso en arquitecturas (x86) que no suelen conseguirse
con técnicas tradicionales de virtualización.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 18 -
Instalación y configuración de centralita VoIP basada en asterisk
A diferencia de las máquinas virtuales tradicionales, que proporcionan entornos
basados en software para simular hardware, Xen requiere portar los sistemas
operativos para adaptarse al API (interfaz de programa) de Xen. Hasta el momento
hay ports (traducciones o versiones de un mismo programa) para NetBSD, Linux,
FreeBSD y Plan 9. Novel ha realizado un port de NetWare para Xen. Un port de
Windows XP fue creado durante el desarrollo inicial de Xen, pero las licencias de
Microsoft prohíben su lanzamiento público. Las máquinas virtuales Xen pueden ser
migradas en caliente entre equipos físicos sin pararlos. Durante este proceso, la
memoria de la máquina virtual es copiada iterativamente al destino sin detener su
ejecución. Una parada muy breve de alrededor de 60 a 300 milisegundos es necesaria
para realizar la sincronización final antes de que la máquina virtual comience a
ejecutarse en su destino final. Una tecnología similar es utilizada para suspender las
máquinas virtuales a disco y cambiar a otra máquina virtual.
2.4 ASTERISK : Una vez que tengamos nuestra distribución plenamente operativa, en
RAID con una distribución DEBIAN como máquina principal y otra DEBIAN
virtualizada, vamos a instalar el software ASTERISK que se incluye en los
repositorios (almacenes de paquetes) de DEBIAN. Asterisk es una aplicación de
software libre (bajo licencia GPL) de una central telefónica (PBX). Como cualquier
PBX, se puede conectar un número determinado de teléfonos para hacer llamadas
entre sí e incluso conectar a un proveedor de VoIP o bien a una RDSI tanto básicos
como primarios.
Asterisk incluye muchas características anteriormente sólo disponibles en sistemas
costosos propietarios PBX como buzón de voz, conferencias, distribución automática
de llamadas, y otras muchas más. Los usuarios pueden crear nuevas funcionalidades
escribiendo un dialplan en el lenguaje de programación de script de Asterisk o
añadiendo módulos escritos en lenguaje C o en cualquier otro lenguaje de
programación soportado por Linux.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 19 -
Instalación y configuración de centralita VoIP basada en asterisk
Para conectar teléfonos estándar analógicos son necesarias tarjetas electrónicas
telefónicas FXS o FXO fabricadas por Digium u otros proveedores compatibles con
Asterisk, ya que para conectar el servidor a una línea externa no basta con un simple
módem. Quizá lo más interesante de Asterisk es que soporta muchos protocolos
VoIP como pueden ser SIP, H.323, IAX y MGCP. Asterisk puede interoperar con
terminales IP actuando como un registrador y como gateway entre ambos. Lejos de
poder competir con las compañías que comercializan soluciones de VoIP
hardware/software de alta calidad como Alcatel-Lucent, Cisco, Avaya, Nortel,
Linksys o Thompson, Asterisk se empieza a adoptar en algunos entornos
corporativos como solución de bajo coste y esta pasando a ser asequible a PYMES
para las que hasta hace poco no había soluciones en buena relación prestaciones
precio que les permitieran mejorar sus comunicaciones.
2.5 SUBSISTEMA ZAPTEL (ZAPATA TELEPHONY) : Es un software que permite
operar con las tarjetas de comunicaciones, siendo una especie de puente entre estas y
Asterisk. Contiene los drivers para configurarlas y es imprescindible su correcta
instalación y configuración para el funcionamiento de una centralita IP.
2.6 SOFTPHONE VOIXPHONE : Un Softphone (en inglés combinación de Software
y de Telephone) es un software que hace una simulación de teléfono convencional
por ordenador. Es decir, permite usar el ordenador para hacer llamadas a otros
Softphone o a otros teléfonos convencionales usando algún tipo de enlace, como por
ejemplo una centralita IP. Normalmente, un Softphone es parte de un entorno Voz
sobre IP y puede estar basado en los estándares SIP/H.323/IAX o protocolos
privativos. Hay muchas implementaciones disponibles, aunque el más usado y
conocido es sin lugar a dudas el Microsoft Messenger.
Los Softphone más utilizados basados en el protocolos SIP/IAX actualmente son
eyeBeam, OpenWengo, Nexge, sipXphone, Adore Softphone, Express Talk, Zoiper,
SJPhone, Ekiga y VoixPhone. Funcionan bien con la mayoría de los proveedores de
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 20 -
Instalación y configuración de centralita VoIP basada en asterisk
servicios de telefonía por Internet. Se puede llamar con ellos usando un teléfono USB
o auricular y obtener un servicio gratuito VoIP de teléfono a teléfono. El muy
popular Skype no es simplemente un Softphone sino un servicio P2P VoIP. Los
Softphone son realmente parte de un grupo tecnológico mayor, el CTI (Computer
Telephone Integration). Algunos Softphone están implementados completamente en
software, que se comunica con las PBX (centralitas) a través de LAN (Red de Área
Local) para controlar y marcar a través del teléfono físico. Se hace a través de un
entorno de centro de llamadas, para llamar usando una base de datos de clientes o
para recibir llamadas. En estos casos la información del cliente aparece en la pantalla
de gestión cuando el teléfono suena, dando a los operadores del centro de llamadas
determinada información sobre quién está llamando, cómo recibirlo y dirigirse a esa
persona.
Hemos optado por VoixPhone porque tiene versiones libres, y es un cliente VoIP con
múltiples opciones que pese a su potencia no consume excesivos recursos del
sistema. Tiene versión para Windows con lo que si queremos realizar pruebas desde
algún sistema operativo propietario, tendríamos la posibilidad.
2.7 CDR ASTERISK : Sorprendiendo una vez más, resulta que Asterisk almacena todo
el tráfico de llamadas tanto entrantes como salientes en bases de datos. En esas bases
de datos tenemos identificado el teléfono o extensión que se ha visto involucrado en
la llamada, cuánto tiempo ha empleado en dicha llamada, hora de inicio y final, amén
de mucha más información. Esta información nos puede ayudar a gestionar con
eficiencia los recursos humanos y de comunicación de los que disponemos.
Entre la información que podemos obtener del sistema de analítica de llamadas de
Asterisk tenemos informes de llamadas diarias o mensuales por extensión, tráfico
total de llamadas, comparativa de llamadas con días anteriores, llamadas por
números específicos mediante criterios de búsqueda y todo ello presentado en
atractivas gráficas que nos muestran con claridad la información solicitada.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 21 -
Instalación y configuración de centralita VoIP basada en asterisk
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 22 -
Instalación y configuración de centralita VoIP basada en asterisk
MÉTODO
1 OBTENCIÓN Y PREPARACIÓN DEL SOFTWARE DEBIAN
Para poder comenzar la instalación de nuestra centralita IP, lo primero que hemos de
hacer es conseguir el sistema operativo que vamos a instalar. En este caso hemos de
conseguir la distribución de LINUX denominada DEBIAN. Al ser software libre, se
puede descargar desde Internet. La página web desde donde se puede descargar es
www.debian.org y más exactamente desde este enlace
http://cdimage.debian.org/debian-cd/4.0_r3/amd64/iso-cd/debian-40r3-amd64-
netinst.iso
el cual nos permite descargar la versión AMD64 NETINSTALL SMALL CD
ESTABLE. Para tipo de procesador podemos usar una “versión” de LINUX que
aprovecha al máximo sus características y es por eso que siendo el nuestro un AMD64
descargamos la distribución apropiada. Aparte de eso, también existen diferentes
“versiones” de formulas de instalación, y podemos elegir una u otra en función del uso
que le vayamos a dar a nuestro ordenador. La formula de instalación más común es la
descarga de un CD o DVD que contiene el sistema operativo LINUX completo, más
múltiples programas y aplicaciones. Pero en nuestro caso, para no cargar el sistema de
aplicaciones que en nuestro servidor de telefonía IP no vamos a utilizar, hemos
descargado una versión NETINSTALL que lo que hace es instalar una base muy pequeña
del sistema operativo y que posteriormente a través de Internet adquiere el resto de
aplicaciones y programas que sean necesarios en función de las selecciones que
realicemos durante la instalación. Es por lo que a esta versión, al ser muy reducida y
entrar en un CD más pequeño que los habituales, se le llama SMALL CD (pequeño CD).
Una vez descargada la imagen ISO a un ordenador, tenemos que grabarla en un CD para
poder usarla. Para ello podemos usar nuestro ordenador habitual instalado con LINUX y
usar una de las aplicaciones de LINUX más conocida para grabar CD que se llama
BRASERO. Si no lo tenemos instalado, podemos conseguirlo escribiendo en consola
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 23 -
Instalación y configuración de centralita VoIP basada en asterisk
sudo aptitude install brasero
lo que hará que lo tengamos disponible en el menú Aplicaciones – Sonido y Vídeo. Al
pulsar en el icono del programa, nos saldrá una pantalla como la siguiente en la que
tenemos que seleccionar la opción Grabar imagen
al pulsar en dicha opción nos sale otra pantalla en la que tenemos que pulsar donde pone
ruta
y seleccionamos el archivo que hemos descargado (debian-40r3-amd64-netinst.iso en
nuestro caso o el que esté disponible en Internet en ese momento) con lo que el botón
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 24 -
Instalación y configuración de centralita VoIP basada en asterisk
Grabar que estaba sombreado, permitirá ser pulsado, realizando la copia a CD si lo
tuviésemos insertado, o pidiéndonos que le suministremos un CD virgen para proceder a
realizar la copia del mismo.
En caso de no disponer de un ordenador con LINUX, en este proyecto no damos soporte
a software propietario, con lo que la grabación del CD corre a cargo del lector :) pues
Windows a día de hoy no dispone de ninguna herramienta gratuita para poder grabar
imágenes de CD.
2 INSTALACIÓN Y CONFIGURACIÓN DE DEBIAN
Para proceder a la instalación de la distribución de LINUX DEBIAN (en adelante
simplemente la denominaremos Debian), hay que asegurarse de que en BIOS del
ordenador que se va a utilizar esté configurada la opción de arranque desde la unidad de
CD. Debido a que esto suele venir configurado por defecto y a la gran cantidad de placas
base y BIOS diferentes que hay en el mercado, no creemos pertinente el explicar cómo se
puede modificar dicha configuración. Solo indicar que si se introduce en el lector o
grabador del ordenador Debian copiado en un CD tal y como hemos descrito
anteriormente debe de aparecer una pantalla en la que veremos el logotipo de Debian y
un mensaje que nos invita a pulsar ENTER para continuar con la instalación.
Si hemos llegado hasta este punto, para facilitar la instalación y para facilitarnos a
nosotros el poder realizar capturas de pantalla de la instalación, vamos a utilizar un
entorno gráfico de instalación (instalación mediante entorno de ventanas mediante uso
del ratón). Para acceder a ese entorno gráfico, es necesario que en la posición donde nos
aparece el mensaje que nos invita a pulsar ENTER en lugar de hacerlo, pongamos la
orden installgui tal y como se indica a continuación
Press F1 for help, or ENTER to boot : installgui_
y posteriormente pulsamos la tecla ENTER. En unos segundos tendremos a nuestra
disposición una pantalla en la que se nos solicita el idioma en el que deseamos instalar
Debian, y nosotros vamos a seleccionar Spanish – Español
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 25 -
Instalación y configuración de centralita VoIP basada en asterisk
A partir de aquí vamos a ir seleccionando las siguientes opciones para realizar la
instalación:
REGIÓN : España
LOCALIZACIÓN : es_ES.UTF-8
En la pantalla que nos aparece a continuación se nos piden idiomas adicionales para los
que queremos que Debian tenga soporte. En nuestro caso no vamos a indicar ninguno,
aunque habrá quien desee modificar esta opción y añadir uno o más idiomas. Siéntase
libre de modificar esta o cualquier otra opción a su discreción, puesto que para eso
estamos usando software libre. Pulse en Continuar cuando termine la selección.
IDIOMA DEL TECLADO : Español (viene por defecto)
Seguidamente nos aparece un mensaje en pantalla en el que se nos informa de que se está
intentando configurar la red buscando un servidor DHCP (un servidor de asignación
automática de direcciones de red). Lo normal es que nuestra red disponga de dicho
servidor, ya que normalmente todos los ROUTERS, (dispositivos de interconexión entre
redes con los que habitualmente conectamos nuestros ordenadores a Internet), tienen un
servidor de este tipo. En el caso de que no exista ningún servidor DHCP en nuestra red,
nos saldrían unas opciones en las que se nos permitiría modificar manualmente los
parámetros de nuestra red de área local. Debido a que una configuración de este tipo
tampoco entra en lo que consideramos los objetivos fundamentales de este proyecto,
dejamos en manos del usuario el informarse para configurar adecuadamente las
direcciones IP y resto de parámetros necesarios para conectar correctamente a Internet el
ordenador usado para la configuración de la centralita.
Si todo ha salido bien aparecerá una pantalla en la que se nos pedirá el nombre que
deseamos ponerle a nuestro servidor de telefonía. Nosotros le vamos a llamar gestormv
(ya que este servidor va a gestionar nuestras máquinas virtuales) y pulsaremos en
Continuar para proceder a introducir el nombre de dominio que vamos a utilizar en
nuestra red. Tal y como nos indica este dato puede ser real o inventado. Ha de ser real si
tenemos los conocimientos necesarios para integrar nuestro servidor en un dominio en el
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 26 -
Instalación y configuración de centralita VoIP basada en asterisk
que vaya a interactuar con otros servidores y clientes, o podemos sencillamente poner un
nombre que nos resulte sugestivo. En este caso nuestro dominio se llamará
proyectoasterisk.net.
Llegamos al particionado de discos. Lo primero que tenemos claro es que deseamos tener
un servidor que sea lo más seguro posible y para eso hemos decidido el particionar los
dos discos duros de los que disponemos en RAID1 (configuración de discos en espejo ya
mencionada en el apartado 2.2 del capítulo MATERIALES). Para cargar los paquetes
software necesarios hemos de seleccionar en la pantalla de particionado de discos la
opción Manual, con lo que nos aparecerá la información de los discos duros y del
espacio libre que tienen para poder realizar la instalación. Debido a que nuestros discos
duros están totalmente vacíos, disponemos del 100% del espacio libre para configurar las
particiones en las que posteriormente vamos a proceder a instalar Debian, así que
pulsamos doble click en la primera partición vacía (donde pone pri/lóg xxx.xx GB
ESPACIO LIBRE) y en la siguiente pantalla seleccionamos la opción Crear una
partición nueva para poder elegir que capacidad del disco duro vamos a dedicar a la
partición que deseamos crear. Tenemos disponible todo el disco duro y por defecto nos
selecciona el tamaño máximo, así que tendremos que indicarle que deseamos una
partición de 2GB (que usaremos como partición de intercambio o SWAP). Como hemos
indicado antes, siéntase libre de modificar la capacidad usada para las particiones. En la
bibliografía hay un enlace a una página web en la que explican cuál es el tamaño ideal de
la partición de intercambio para cada tipo de instalación. Para quien no esté familiarizado
con el concepto de la memoria de intercambio, aclarar que se trata de un espacio del
disco duro que el sistema operativo usa como memoria RAM y en el que se almacenan
los procesos que tienen poco uso, permitiendo dejar la memoria RAM libre para otros
programas y procesos.
PARTICIÓN : Primaria
POSICIÓN : Principio
Seleccionamos Utilizar como: sistema ext3 transaccional y en la siguiente pantalla
pulsamos sobre área de intercambio, lo que nos devolverá a la pantalla anterior que se
nos mostrará modificada con la selección que hemos realizado.
Pulsamos en Se ha terminado de definir la partición y veremos que el disco duro en el
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 27 -
Instalación y configuración de centralita VoIP basada en asterisk
que hemos creado la partición de intercambio ahora presenta una partición nueva llamada
> #1 primaria 2GB f intercambio intercambio, justo debajo de la cual tenemos el
espacio libre disponible para generar más particiones. Pulsamos en
pri/lóg xxx.xx GB ESPACIO LIBRE
Crear una partición nueva
Continuar
PARTICIÓN : Primaria
En este punto volvemos seleccionar Utilizar como: sistema ext3 transaccional y en la
siguiente pantalla seleccionaremos volumen físico para RAID, lo que nos devolverá a la
pantalla anterior que se nos mostrará modificada con la selección que hemos realizado.
Pulsamos en Se ha terminado de definir la partición y estaremos de nuevo en la pantalla
inicial en la que se nos mostrará una partición RAID llamada > #2 primaria 318 GB k
raid.
Hemos de repetir toda la operación de creación de particiones con el segundo disco duro,
y nos tiene que quedar la pantalla de configuración de particiones con algo parecido a la
captura que vemos a continuación
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 28 -
Instalación y configuración de centralita VoIP basada en asterisk
Seleccionamos Configurar RAID por software para hacer que las particiones que hemos
creado se unan creando el espejo. Para ello en la siguiente pantalla se nos indica que hay
que realizar unos cambios IRREVERSIBLES que van a destruir la información de los
discos duros. Seleccionamos Sí y Continuar. Llegaremos a la configuración MD-RAID
(configuración Multi-Disco RAID).
Crear un dispositivo MD
TIPO : RAID1
ACTIVOS : 2
Nos pregunta cuántos dispositivos libres vamos a usar. Los dispositivos libres son discos
duros particionados para RAID, pero que se quedan en estado latente a la espera de que
alguno de los discos duros que están en uso falle, pasando en ese momento a estar activo
y a suplir la carencia del disco duro defectuoso. En nuestro caso no hemos querido tener
este sistema de seguridad extra, con lo que dejamos la opción que viene por defecto (0
discos) y Continuar. Llegamos a una nueva pantalla de configuración de RAID en la que
se nos solicita que marquemos dos particiones como dispositivos activos.
En nuestra instalación nos aparecen dos pequeños recuadros junto a los que nos aparecen
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 29 -
Instalación y configuración de centralita VoIP basada en asterisk
las reseñas /dev/sda1 y /dev/sdb1. Ni que decir tiene que hemos de marcar los dos
recuadros y Continuar lo que nos hace regresar a la pantalla de configuración MD-
RAID. Como ya hemos terminado de configurar nuestro sistema multi-disco en RAID1,
podemos Terminar.
Volvemos a la pantalla inicial donde hemos configurado las particiones, la cual ha
cambiado y ahora se nos presenta un nuevo disco llamado Dispositivo RAID1 #0 –
xxx.xx GB dispositivo RAID por software bajo el que aparece como está configurada la
partición RAID. Para poder acceder a dicha partición y modificarla, pulsaremos doble
click sobre > #1 xxx.xx GB. Volvemos a estar en una pantalla conocida, así que iremos
rápido.
Utilizar como: no utilizar, sistema ext3 transaccional
Punto de montaje: ninguno
/ - sistema de ficheros raíz
Se ha terminado de definir la partición
Finalizar el particionado y escribir los cambios en el disco
Y aunque nos parezca increíble, solamente nos falta seleccionar Sí y Continuar para
tener nuestro sistema asegurado mediante un disco duro espejo.
ZONA : Península
Para realizar cualquier operación crítica en el servidor, éste nos solicitará una contraseña
de superusuario. La contraseña ha de ser eficiente en términos de seguridad, con lo que
debe tener letras, números, símbolos y más de ocho caracteres. Para nuestra instalación,
vamos a poner como contraseña de root aste-2008*risk. Pulsamos en Continuar y se nos
solicita el nombre de un usuario para acceder al sistema. Aquí puedes introducir tu
nombre, Continuar. Ahora el nombre con el que el usuario va a acceder a la cuenta del
servidor que es operador (Continuar) y la contraseña operador2008 (Continuar). Es
importante tener en cuenta que Debian distingue entre mayúsculas en minúsculas.
Debian nos solicita una replica de red de la instalación para configurar el Gestor de
paquetes. Esto es debido a que el CD de Debian que estamos usando tiene solamente los
programas necesarios para comenzar las instalación, pero no el sistema operativo
completo, hemos de descargar desde una copia en Internet todos los programas que
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 30 -
Instalación y configuración de centralita VoIP basada en asterisk
necesitemos. Seleccionamos lo siguiente :
CONFIGURAR REPLICA : Si
REPLICA : España
SELECCIÓN DE REPLICA : Continuar
ENCUESTA DE PAQUETES : Sí
TIPO DE INSTALACIÓN : Sistema estándar
GRUB : Sí
Finalmente la instalación expulsa la bandeja del lector de CD (de la que hemos de extraer
la copia de Debian desde la que hemos estado instalando) y nos informa de que la
instalación a concluido. Pulsemos felices en Continuar y el sistema se reiniciará para
que podamos comenzar a trabajar con nuestro servidor.
3 INSTALACIÓN Y CONFIGURACIÓN DE SERVIDOR XEN
Vamos a proceder a la instalación del servidor XEN. Para ello hemos de iniciar sesión en
nuestro servidor con el usuario operador que hemos creado durante la instalación. Una
vez dentro del terminal del servidor, cambiamos la sesión a modo root con la instrucción
su, que nos pedirá la contraseña de administración.
Ahora instalamos los paquetes necesarios para XEN. Para instalarlos hemos de introducir
el siguiente comando :
aptitude install screen ssh debootstrap python python-twisted iproute bridge-utils
libcurl3-dev
Al hacerlo nos indicará que va a adquirir unos 25MB de archivos desde los repositorios a
lo que diremos que sí. Durante el proceso puede ser que el sistema nos solicite la
inserción del CD de instalación de Debian. Una vez finalizado el proceso vamos instalar
un meta paquete (conjunto de paquetes que hacen que una aplicación funcione) que nos
instalará XEN :
aptitude install xen-linux-system-2.6.18-6-xen-amd64
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 31 -
Instalación y configuración de centralita VoIP basada en asterisk
Igualmente solicitará la descarga de los paquetes. Una vez instalados, hay que tener en
cuenta que XEN solamente permite por defecto el uso de cuatro máquinas virtuales, pero
en nuestra instalación es probable que necesitemos más. Es por lo que vamos a cambiar
en GRUB (el gestor de arranque del sistema) un valor para permitir hasta 6 máquinas
virtuales. Para hacerlo hemos de usar un procesador de textos de consola de los muchos
que vienen con Debian (Emacs, vi, joe, nano, etc) y editar el archivo menu.lst añadiendo
al final de la línea module /boot/vmlinux-2.6.18-6-xen-amd64 root=/dev/sda1 ro
console=tty0 la instrucción max_loop=X donde X es la cantidad máxima de máquinas
virtuales que queremos tener en ejecución. En este caso nosotros vamos a asegurarnos de
que la linea quede así: module /boot/vmlinux-2.6.18-6-xen-amd64 root=/dev/sda1 ro
console=tty0 max_loop=8. Para editar el fichero la instrucción y la ruta es
vi /boot/grub/menu.lst
En una instalación normal, el siguiente paso sería configurar la tarjeta de comunicaciones
Digium mediante el driver existente para Debian, pero debido a que queremos que la
tarjeta funcione en una máquina virtual, hay que indicarle al sistema que tiene que
“enmascarar” el funcionamiento de la tarjeta Digium y hacer que la use una máquina
virtual. Para ello lo primero que hemos de hacer es comprobar en qué dirección del BUS
PCI está detectada la tarjeta. Usamos la instrucción lspci -v que nos suministra
información en pantalla de todos los recursos PCI usados, y buscamos donde nos pone
algo similar a lo siguiente (cambia en función de cada marca y modelo de tarjeta de
comunicaciones) : 01:06.0 Ethernet controller Digium Inc. Unknown device 8005.
Esto nos informa que la dirección 01:06.0 es la que vamos a indicar a la máquina virtual
para que use en exclusiva la tarjeta de comunicaciones. Es importante comprobar en el
resultado devuelto por lspci que ninguna otra tarjeta ni dispositivo del sistema está
ocupando la misma dirección, puesto que podría provocar problemas. Si algo estuviese
usando la misma dirección debemos intentar solucionarlo cambiando la tarjeta de slot
PCI o deshabilitando en la BIOS del servidor dispositivos que no sean necesarios, tales
como puertos serie, paralelo, firewire, etc. Y para que XEN use la tarjeta en exclusiva
hemos de volver a editar el archivo menu.lst y añadir a la linea de XEN, que hemos
modificado anteriormente para poder tener más máquinas virtuales, la instrucción
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 32 -
Instalación y configuración de centralita VoIP basada en asterisk
pciback.hide=(01:06.0). Una vez modificado reiniciamos el servidor con reboot.
Al reiniciar entramos ya con la opción de GRUB que hemos estado modificando (la
opción que carga XEN. Ahora tenemos que indicar al sistema que la gestión de red que
van a usar las máquinas virtuales será pasando por la máquina principal. Para ello hemos
de editar como administrador de sistema el fichero xend-config.sxp
vi /etc/xend-config.sxp
y buscamos la linea # (network-script network-bridge), a la que le hemos de eliminar
la # para que este activa. Y hemos de hacer la operación inversa con la linea (network-
script network-dummy) a la que le tenemos que añadir # delante para que no se tenga
en cuenta a la hora del inicio de XEN.
Para que los cambios realizados en la configuración de XEN sean operativos hemos de
reiniciar el demonio (daemon) que lo gestiona. Un demonio es un programa que entra en
funcionamiento al iniciar el sistema y que realiza una labor de manera transparente al
usuario, sin que tenga que intervenir para nada en su ejecución o gestión. Existen
demonios que están funcionando para comprobar cuando se inserta un dispositivo USB o
que comprueban si existen peticiones de acceso al servidor por ftp, ssh, etc. Para poder
reiniciar el demonio que gestiona XEN hemos de introducir la instrucción
/etc/init.d/xend restart
que hace que tengamos finalmente configurado y en espera nuestro servidor XEN. Ahora
vamos a crear nuestra primera máquina virtual en la que vamos a instalar Asterisk.
En primer lugar hemos de crear un usuario para almacenar las máquinas virtuales. Le
vamos a llamar mvirtual. Para crear el usuario usamos
adduser mvirtual
y entramos en la carpeta /home de dicho usuario
cd /home/mvirtual
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 33 -
Instalación y configuración de centralita VoIP basada en asterisk
creamos un directorio para almacenar las máquinas virtuales
mkdir maquinas
y accedemos al directorio
cd maquinas
creamos las imágenes del sistema de archivos que vamos a usar para la máquina virtual,
necesitando una partición que nosotros vamos a generar de 20GB en ext3 para el sistema
y otra partición de 500Mb para intercambio. Creamos las imágenes con
dd if=/dev/zero of=mvasterisk.img bs=1024k count=20000
dd if=/dev/zero of=mvasterisk-swap.img bs=1024k count=500
y le indicamos a cada imagen el sistema de archivos que va a usar (nos avisará de que
mvasterisk.img es un dispositivo especial de bloques y pedirá autorización)
mkfs.ext3 mvasterisk.img
mkfs.ext3 mvasterisk-swap.img
Ya tenemos preparadas las máquinas virtuales para instalarles el sistema operativo sobre
el que va a correr Asterisk. Para instalar el sistema operativo, lo haremos directamente
desde Internet mediante la instrucción debootstrap que descarga, con una sola línea de
comando, lo imprescindible para que funcione un sistema Debian. Para hacerlo primero
creamos una carpeta temporal para “montar”, (almacenarlo en una carpeta a la que
Debian tenga acceso), el sistema de archivos ext3 que hemos creado para la máquina
virtual
mkdir /home/mvirtual/maquinas/temporal
montamos la imagen virtual
mount -o loop /home/mvirtual/maquinas/mvasterisk.img /home/mvirtual/maquinas/
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 34 -
Instalación y configuración de centralita VoIP basada en asterisk
temporal/
instalamos el sistema desde Internet
debootstrap --arch amd64 etch /home/mvirtual/maquinas/temporal/
http://ftp.es.debian.org/debian
Esto iniciará un proceso de descarga de archivos del sistema operativo nos dará el
mensaje I: Base system installed successfully si todo ha salido bien. En este momento
tenemos un sistema Debian instalado en el sistema de archivos que hemos creado con
anterioridad y que hemos montado en el directorio temporal/ (si miramos en el
directorio, veremos una estructura de árbol de ficheros clásica de Debian). Vamos a
conectar con este nuevo sistema operativo. Para hacerlo, vamos a usar la instrucción
chroot /home/mvirtual/maquinas/temporal/
Un entorno chroot sirve para trabajar "como si" tuviéramos un árbol de ficheros
diferente. Esto sirve para simular, por ejemplo, que tenemos instalado un cierto conjunto
de paquetes, o incluso distribuciones Linux enteras. Por ejemplo, en una máquina
instalada con Debian “estable” podemos crear un directorio donde instalemos Debian
“inestable” para probar algunos paquetes más actualizados. Una vez que tenemos
montado el entorno chroot, podemos preparar de forma sencilla unos scripts (programas)
para ejecutar aplicaciones que residen en él de forma casi transparente. Así podemos
utilizar aplicaciones de una versión más nueva de Debian sin tener que reinstalar todo el
sistema.
Esto significa que desde el momento en el que hemos ejecutado la instrucción chroot
temporal/ estamos “dentro” de un nuevo sistema operativo y las operaciones que
hagamos sobre el mismo no afectan al sistema base sobre el que se está ejecutando.
Todos los comandos que escribamos a partir de ahora solamente afectaran a la máquina
que hemos creado.
chroot temporal/
El sistema base Debian adolece de no tener configurado absolutamente nada de lo que
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 35 -
Instalación y configuración de centralita VoIP basada en asterisk
nos va a hacer falta, con lo que hemos de adquirir desde los repositorios de Debian los
paquetes con los programas que vamos a usar. En primer lugar obtenemos el editor de
textos que vayamos a usar, en nuestro caso
aptitude install vim
con lo cual ya podemos editar el archivo sources.list para añadir los repositorios desde
los que vamos a ir actualizando y mejorando nuestro sistema base
vi /etc/apt/sources.list
Hemos de asegurarnos que en el archivo que estamos editando aparezcan las siguientes
líneas (si no están, hemos de añadirlas):
deb http://ftp.es.debian.org/debian/ etch main
deb-src http://ftp.es.debian.org/debian/ etch main
deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib
y una vez añadidas y guardado el archivo, hemos de actualizar nuestro sistema
aptitude update
aptitude dist-upgrade
Instalamos el paquete locales que nos pondrá el sistema en español mediante dos
sencillas instrucciones
aptitude install locales
dpkg-reconfigure locales
En el listado de locales que nos sale, seleccionamos es_ES.UTF-8 UTF-8 y
en_US.UTF-8 UTF-8, con lo que tras darle a ok tendremos habilitados los idiomas
Español e Inglés. Se nos solicita cuál va a ser el idioma predeterminado, a lo que
contestamos es_ES.UTF-8.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 36 -
Instalación y configuración de centralita VoIP basada en asterisk
Y ahora instalamos de una sentada varias aplicaciones útiles para nuestros fines de las
cuales iremos viendo posteriormente su uso
aptitude install ssh zip unzip screen less iftop psmisc udev
Editamos el fichero que contiene el nombre de nuestra nueva máquina virtual
vi /etc/hostname
y le ponemos de nombre asterisk para que se llame así en nuestra red la máquina virtual,
solamente tendríamos que añadir la línea
asterisk
Editamos un fichero de configuración de gestión de dispositivos llamado fstab. Este
fichero se encarga de configurar, al inicio del sistema, las particiones y dispositivos a los
que va a tener acceso una máquina o servidor (ya sea real o virtual), para modificarlo
vi /etc/fstab
y añadir dos lineas como las indicadas a continuación
/dev/hda1 / ext3 defaults 1 2
/dev/hda2 none swap sw 0 0
lo que hará que nuestra máquina virtual sepa que dispone de una partición ext3 para el
sistema y de otra partición swap para intercambio, no configurando ningún dispositivo
tipo lector de DVD o almacenamiento USB. Solamente tendremos acceso a esta máquina
virtual a través de la red, la cual también tenemos que configurar, puesto que si no lo
hacemos dejamos la máquina sin posibilidad de acceso. Para configurar la red
modificamos el archivo interfaces
vi /etc/network/interfaces
añadiendo dos lineas que le indican cual es el interface de red que va a utilizar, que en
nuestro caso no es una tarjeta de red física, sino una interconexión entre máquinas (en
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 37 -
Instalación y configuración de centralita VoIP basada en asterisk
este caso entre la virtual y la real). Las lineas a añadir son
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.111
netmask 255.255.255.0
gateway 192.168.0.1
Seguimos configurando la red. Ahora le toca el turno al fichero hosts, en el que
normalmente se indican las IP conocidas de máquinas a las que queramos tener acceso
habitualmente, junto con su nombre en la red. En nuestro caso solamente vamos a indicar
la dirección IP local
vi /etc/hosts
y añadimos
127.0.0.1 localhost.localdomain localhost
# Las siguientes lineas son convenientes para hosts con soporte Ipv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Ha todo esto ya hemos terminado de realizar casi todas las modificaciones requeridas
para que nuestra máquina virtual esté terminada. Nos queda salirnos del “chroot” para
que las operaciones que hagamos a partir de ahora se ejecuten en nuestra máquina real,
para ello escribimos
exit
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 38 -
Instalación y configuración de centralita VoIP basada en asterisk
y ya en la máquina real copiamos parte de los archivos de XEN dentro del árbol de
archivos de la máquina virtual (el cual aún tenemos montado en el directorio temporal).
Para realizar la copia al sitio adecuado, la instrucción es
cp -dpR /lib/modules/2.6.18-6-xen-amd64/
/home/mvirtual/maquinas/temporal/lib/modules
tras lo que desmontamos de la carpeta temporal/ el archivo de imagen de la máquina
virtual con la el comando umount
umount temporal/
En este punto tenemos la maquina virtual con nombre de host mvbase almacenada en el
archivo de imagen mvasterisk.img dentro del directorio /home/mvirtual/maquinas/ y
preparada para entrar en funcionamiento. Vamos a crear una carpeta llamada asterisk y
vamos a copiar dentro la máquina base con el nombre mv01.img (acrónimo de máquina
virtual 01) . Es en esa máquina virtual donde vamos a instalar y configurar realmente
Asterisk. Para ello
mkdir /home/mvirtual/maquinas/asterisk
cp -pf /home/mvirtual/maquinas/mvasterisk.img/
/home/mvirtual/maquinas/asterisk/mv01.img
cp -pf /home/mvirtual/maquinas/mvasterisk-swap.img/ /home/mvirtual/maquinas/
asterisk/mv01-swap.img
Entramos en la recta final. Ahora tenemos que crear el fichero de configuración de la
máquina virtual en la máquina real, que le va a indicar a esta ultima como va a tener que
gestionar los recursos hardware de los que dispone y que parte de esos recursos van a ser
dedicados a la máquina virtual. Creamos el directorio
mkdir /etc/xen/auto
y creamos el fichero
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 39 -
Instalación y configuración de centralita VoIP basada en asterisk
vi /etc/xen/auto/asterisk.sxp
con las siguientes instrucciones en su interior
name=”asterisk”
kernel=”/boot/vmlinuz-2.6.18-6-xen-amd64”
ramdisk=”/boot/initrd.img-2.6.18-6-xen-amd64”
root=”/dev/hd1 ro”
memory=256
disk=['file:/home/mvirtual/maquinas/asterisk/mv01.img,hda1,w','file:/mvirtual/maqui
nas/asterisk/mv01-swap.img,hda2,w']
vif=['mac=']
dhcp=”off”
pci=['01:06.0']
ip=”172.16.0.211”
netmask=”255.255.255.0”
gateway=”172.16.0.1”
hostname=”asterisk”
extra='2'
Creemos conveniente explicar someramente para qué sirven las instrucciones que hemos
introducido en este fichero, por si el lector desea realizar modificaciones.
Name es lógicamente el nombre de la máquina virtual (nombre que tendrá en la red).
Las lineas kernel y ramdisk hacen referencia a dos ficheros de imagen del kernel
(núcleo del sistema operativo Linux) que están almacenados en nuestra máquina
principal y que son los que hacen que la máquina arranque, puesto que contienen la base
del sistema. Al hacer referencia a ese kernel, la máquina virtual adquiere dicho núcleo y
lo utiliza para su funcionamiento. El que esto sea un parámetro modificable es debido a
que en un sistema Linux podemos tener instalados varios núcleos diferentes y usarlos en
función de nuestras necesidades.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 40 -
Instalación y configuración de centralita VoIP basada en asterisk
La linea root indica cual va a ser el disco duro principal de la máquina virtual. En este
caso nosotros le estamos indicando que es hda1.
La linea memory indica cuanta de la memoria física de nuestra máquina real va a ser
dedicada en exclusiva a la máquina virtual.
La linea disk describe que archivos de imagen serán usados como discos duros y en que
dispositivo se van a montar.
La linea vif sirve para asignar a la tarjeta de red virtual de la máquina una dirección mac
(dirección única para cada dispositivo de red). Esto es debido a que si no le asignamos
una mac, cada vez que iniciamos el sistema se creará aleatoriamente una nueva, que nos
generará a su vez un nuevo dispositivo de red. Eso conlleva dificultades de configuración
que no nos podemos permitir. Es por ello que hay que poner una mac dentro de un rango
que tiene asignado XEN por el organismo certificador IEEE. El rango es la mac cuyos
tres primeros pares sean 00:16:e3:xx:xx:xx, debiendo sustituir las xx por los dígitos
hexadecimales generados por el sistema en el primer inicio.
La linea dhcp sirve para, en el caso de que tengamos un servidor dhcp, que la máquina
virtual adquiera automáticamente la dirección ip que le permita conectar a la red.
La linea pci le dice a la máquina virtual que use en exclusiva un dispositivo pci con la
dirección de bus que se le indica.
El resto de parametros son obviamente la configuración de red que el lector ha de
adecuar los valores en función de sus necesidades.
Ahora nos queda reiniciar nuestro servidor y volver a acceder como administrador
sudo reboot
introducir usuario y contraseña de operador
su
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 41 -
Instalación y configuración de centralita VoIP basada en asterisk
introducir contraseña de root y ejecutar una orden que nos va a permitir conectarnos con
nuestra máquina virtual
xm console asterisk
a partir de este momento estamos dentro de la máquina virtual asterisk, para acceder
indicamos que el usuario es root (sin contraseña, puesto que aún no se la hemos
configurado a esta máquina), una vez accedemos a la consola de la máquina virtual,
ejecutamos el comando que nos muestra los interfaces de red y sus parametros de
configuración
ifconfig
donde vemos que dirección física ha tomado la tarjeta de red eth0, la cual comenzará con
00:16:3e: y hemos de copiar completa para poder introducirla en el fichero de
configuración de XEN. Para ello cambiamos de consola con ALT+F3 (por ejemplo,
aunque podemos usar cualquier de las otras consolas disponibles en Debian) y volvemos
a seguir los pasos de acceso hasta ser usuario administrador. En ese momento editamos
de nuevo el fichero
vi /etc/xen/auto/asterisk.sxp
y la linea con la instrucción vif debemos añadir la dirección mac que hemos copiado de
los parametros del interface de red eth0 en la máquina virtual asterisk. La línea debería
de quedar mas o menos
vif=['mac=00:16:3e:xx:xx:xx']
guardamos el fichero y hemos terminado de configurar XEN. Ahora podemos usar
algunas instrucciones para controlar nuestra, de momento, única máquina virtual.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 42 -
Instalación y configuración de centralita VoIP basada en asterisk
4 COMANDOS PARA GESTIONAR LAS MÁQUINAS VIRTUALES XEN
Estar delante de una linea de comandos nos da poca información de como está
configurado un sistema de máquinas virtuales, así que vamos a aprender un poco a
4.1 LISTAR MÁQUINAS VIRTUALES :
Para ello hemos de usar la instrucción xm list que nos indica cuantas máquinas
virtuales tenemos operativas y su estado, suministrando información útil como
el nombre de las máquinas (siendo Domain-0 la máquina real), la id asignada
por XEN para referirnos a ellas, la memoria RAM asignada, las CPUS virtuales
que van a ser usadas por cada máquina, el estado y los tiempos de proceso
consumidos para saber que máquinas tienen más carga de trabajo.
4.2 LISTAR RECURSOS CONSUMIDOS POR LAS MÁQUINAS :
Usando el comando xm top podemos observar los recursos consumidos por las
diferentes máquinas y ordenarlos por CPU, memoria, o cualquier otro parámetro
que nos resulte útil para poder asignar recursos del sistema a las diferentes
máquinas.
4.3 AJUSTAR CANTIDAD DE MEMORIA USADA POR MÁQUINA :
Con el comando xm mem set podemos repartir y modificar en “caliente”
(estando las máquinas virtuales funcionando) la memoria del sistema e indicar
cuanta queremos que use cada máquina virtual en un momento determinado. Si
reiniciamos cualquiera de las máquinas, tomará la cantidad de memoria por
defecto que se le haya indicado en el fichero de configuracion .sxp con el
nombre de la máquina.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 43 -
Instalación y configuración de centralita VoIP basada en asterisk
4.4 INSTRUCCIONES DE PARADA :
Con los comandos xm pause, xm reboot y xm shutdown podemos
respectivamente pausar, reiniciar y apagar una máquina virtual. Una vez
apagada la máquina virtual volveremos a la consola desde la que accedimos a
ella o desde la que la iniciamos.
4.5 INSTRUCCIONES DE MIGRACIÓN :
Con la instrucción xm migrate podemos mover una máquina virtual completa
que esté gestionando por ejemplo nuestra centralita y cambiarla de un ordenador
a otro sin que en ningún momento (o solo unos pocos milisegundos) deje de
funcionar nuestro sistema. Las posibilidades de esta instrucción son tremendas,
ya que podemos mover un servicio desde una máquina situada en un país a otra
máquina en otro país distinto.
4.6 INICIO MANUAL DE MÁQUINA XEN :
Hemos configurado el sistema para que arranque automáticamente nuestra
máquina virtual, pero podríamos iniciar máquinas que no deseemos que se
ejecuten al inicio con la instrucción xm create /<ruta>/<nombre fichero .sxp>.
4.7 MÉTODOS DE ACCESO A MÁQUINA VIRTUAL XEN :
Para poder acceder a nuestras máquinas virtuales, tenemos la opción de
conectarnos tal que si de un ordenador normal se tratase, a través de cualquiera
de los puertos de uso común, tal que por ejemplo ssh, telnet, ftp, etc o
podríamos iniciar una sesión de consola con algún programa de gestión remota
tipo PUTTY, pero la forma más cómoda de acceder a nuestras máquinas
virtuales cuando estamos en el equipo que las está ejecutando, es usar la
instrucción xm console <nombre máquina virtual> con lo que se nos abrirá un
terminal de consola que nos pedirá usuario y contraseña.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 44 -
Instalación y configuración de centralita VoIP basada en asterisk
Una vez introducidos, estaremos dentro de la máquina virtual, y podremos
manipularla, instalarle paquetes (programas) y usar dichos programas, tal que si
de un ordenador real se tratase.
Para cerrar la consola de la máquina virtual, hay que usar la secuencia de teclas
control + ] (símbolo de cerrar corchete).
5 INSTALACIÓN Y CONFIGURACIÓN DE ASTERISK.
Para instalar Asterisk, en primer lugar reiniciamos nuestra máquina real para que todos
los cambios que hemos realizado se ejecuten. Podemos comprobar si nuestra máquina
virtual está operativa con la instrucción xm list que nos reportará información de
Domain-0 (nuestra máquina real) y de Asterisk (nuestra máquina virtual). Para poder
acceder a nuestra máquina virtual solamente tendremos que poner
xm console asterisk
y estaremos en una consola de la máquina virtual que nos solicita el usuario. Accedemos
como usuario root sin contraseña y escribimos la instrucción
passwd
tras lo que el sistema nos solicita por dos veces una contraseña para el usuario
administrador. El lector puede tomarse la libertad de elegir una contraseña, aunque
recomendamos que cumpla los mínimos exigidos de seguridad que exponíamos en el
punto dos de este documento (denominado Instalación y configuración de Debian). Por
fin estamos dentro de nuestra máquina virtual y autentificados como root. Vamos a
instalar Asterisk.
El software de gestión PBX Asterisk está capacitado para trabajar con diferentes tarjetas
de comunicaciones. Pero hemos de saber a que tipo de línea telefónica nos vamos a
conectar para poder instalar y configurar en nuestra máquina virtual la tarjeta adecuada.
Nuestra línea puede ser analógica (convencional) o digital (RDSI), en el caso de ser
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 45 -
Instalación y configuración de centralita VoIP basada en asterisk
digital podríamos tener una linea de acceso BRI (acrónimo de Basic Rate Interface –
interface de tipo básico) que nos proporciona dos canales de voz, o podríamos tener una
línea PRI (acrónimo de Primary Rate Interface – interface de tipo primario) que nos
proporciona treinta canales de voz en formato de transmisión digital E1. Este ultimo
solamente suele ser utilizado en medianas y grandes empresas.
Pero como desgraciadamente no disponemos de una linea digital, vamos a centrarnos en
lo que necesitamos para funcionar con líneas analógicas. Para ello se necesitan tarjetas
con interfaces FXO (acrónimo de Foreign Exchange Office – oficina de intercambio
externo) que son dispositivos informáticos que permiten conectar un ordenador a la red
telefónica básica (RTB) y mediante un software especial, realizar y recibir llamadas de
teléfono. También necesitaremos interfaces FXS que son dispositivos que permiten
conectar un teléfono a un ordenador. Grosso modo podríamos decir que los interfaces
FXO son de entrada y los FXS son de salida. En nuestro caso, debido a que solo tenemos
una línea de teléfono solamente vamos a necesitar un FXO y debido también a que los
teléfonos analógicos que vamos a utilizar los vamos a conectar a un dispositivo hardware
que nos los va a transformar en extensiones IP, no necesitaremos conectar a nuestra
tarjeta de comunicaciones ningún interface FXS. Un interface FXO físicamente es un
conector RJ11 como aquel en el que conectamos nuestros teléfonos fijos en la pared de
nuestras casas, y que gracias a las tarjetas de comunicaciones lo tenemos disponible en
nuestro ordenador. Para “instalarlo” solo tenemos que conectar con un cable de teléfono
el ordenador a la pared.
5.1 PAQUETES BÁSICOS NECESARIOS.
Para poder instalar Asterisk, necesitamos instalar antes unos cuantos paquetes
desde los repositorios Debian. Para poder instalar dichos paquetes, solamente
tendremos que copiar en la consola de nuestra máquina virtual, estando
validados como administradores, la siguiente instrucción en la que vienen
recogidos los nombres de los mismos
aptitude install bison libncurses5-dev libnewt-dev zlib1g-dev libssl-dev initrd-
tools procps linux-headers-2.6.18-6-xen-amd64 build-essentials pciutils
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 46 -
Instalación y configuración de centralita VoIP basada en asterisk
libmysqlclient15-dev
Con esto obtenemos librerías (conjuntos de pequeños programas para ser usados
en programas más complejos) y herramientas de compilación (que permiten
generar programas ejecutables a partir de lineas de código de programación).
Estas herramientas de compilación son indispensables para configurar nuestra
tarjeta de comunicaciones y el software Asterisk. Es muy importante leer los
resultados de las descargas e instalación de los paquetes, ya que en ocasiones
puede pasar que no sea correcto el nombre de alguno de ellos por cambio de la
versión o cualquier otra circunstancia. En caso de que alguno fallara, hemos de
mirar en los repositorios el nombre de la versión nueva y modificar la
instrucción aptitude con nombre correcto del paquete.
5.2 DESCARGA Y COMPILACIÓN DEL SOFTWARE ASTERISK.
Creamos y accedemos a una carpeta donde vamos a guardar el software
necesario para instalar y configurar Asterisk
mkdir asterisk
cd asterisk
y ejecutamos las instrucciones de descarga de la ultima versión de los paquetes
necesarios desde la página web de la empresa Digium (creadora e impulsora de
Asterisk)
wget http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz
wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-
current.tar.gz
En el momento en el que nosotros nos descargamos estos paquetes ya existen en
fase beta (fase de pruebas) unos paquetes correspondientes a la versión 1.6 y por
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 47 -
Instalación y configuración de centralita VoIP basada en asterisk
ello avisamos al lector que si las instrucciones de descarga no funcionan, acceda
al ftp de Digium mediante un navegador web y compruebe cual es la ultima
versión disponible para indicarlo en las instrucciones wget.
Ahora descomprimimos y compilamos cada uno de los archivos que hemos
descargado, para ello hemos de utilizar secuencialmente las siguientes
instrucciones (tener en cuenta que pueden cambiar si cambian las versiones de
los paquetes)
tar -zxvf zaptel-1.4-current.tar.gz
cd zaptel-1.4.10.1
./configure
make menuselect
en este momento nos sale un menú ZAPTEL MODULE SELECTION en el
que usando los cursores entramos en todos los apartados y seleccionamos todos
los módulos, tras lo que pulsamos la tecla x para grabar los cambios
Continuamos, (revisando que las instrucciones no generan ningún error), con
make
make install
make config
cd ..
tar -zxvf libpri-1.4-current.tar.gz
cd libpri-1.4.4
make
make install
cd ..
tar -zxvf asterisk-1.4-current.tar.gz
cd asterisk-1.4.19.2
./configure
make menuselect
en el menú dejamos todo por defecto, a excepción de la sección CORE
SOUND PACKAGES en la que añadimos todos los paquetes de sonidos en
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 48 -
Instalación y configuración de centralita VoIP basada en asterisk
español marcando los puntos donde pone CORE-SOUNDS-ES-<formato
audio>. Estos sonidos son locuciones que podremos usar en el contestador
automático de la centralita si no queremos generar unos ficheros de audio
propios. También podemos incluir los puntos 13 y 14 completos, lo que nos
facilita música para dejar llamadas en espera y complementos de sonido para
usos varios. Pulsamos x para salvar y continuamos con la compilación
make
make install
make samples
cd ..
tar -zxvf asterisk-addons-1.4-current.tar.gz
cd asterisk-addons-1.4.6
./configure
make menuselect
no tocamos nada de la configuración y pulsamos x para grabar
make
make install
make samples
cd /
con lo que hemos terminado de instalar Asterisk y el software Zaptel, que
contiene los drivers de la tarjeta de comunicaciones Digium TDM400P que
estamos usando en nuestro servidor. Además hemos instalado los módulos
necesarios para poder utilizar usar la información que genera Asterisk desde una
base de datos y gestionar dicha información (CDR).
5.3 CONFIGURACIÓN INICIAL TRAS LA INSTALACIÓN.
Ahora que tenemos instalado Asterisk, hemos de realizar unas modificaciones al
sistema para que cada vez que lo iniciemos, cargue todo lo necesario para que
nuestra centralita funcione. En primer lugar configuramos Zaptel con la zona
donde nos encontramos y la cantidad de FXO y FXS que va a gestionar. Para
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 49 -
Instalación y configuración de centralita VoIP basada en asterisk
ello editamos
vi /etc/zaptel.conf
y como solamente vamos a usar una linea FXO, buscamos donde aparece
fxsks=1 y si no existe lo añadimos. Si quisiéramos añadir teléfonos analógicos
conectados directamente al ordenador en los hipotéticos FXS que podríamos
instalar en nuestra tarjeta de comunicaciones, tendríamos que asegurarnos que
aparece la linea fxoks=1,2,3,4 (o el número de lineas que quisiéramos
gestionar).
Dentro del mismo fichero hemos de modificar o añadir también donde pone
loadzone por loadzone = es. Es conveniente hacer notar que para las líneas FXO
estamos añadiendo la orden de señal fxsks (señal FXS) y viceversa para las
lineas FXS. Esto es porque las tomas de entrada, requieren señal de salida y
porque las tomas de salida requieren señal de entrada. Guardamos los cambios y
continuamos.
Para que los módulos de Zaptel se carguen en el encendido de nuestra máquina
virtual, hemos de modificar el fichero
vi /etc/rc.local
y añadir por encima de la instrucción exit 0 estos comandos
/etc/rc.local/modprobe zaptel
/etc/rc.local/modprobe wctdm
ztcfg
Guardamos, reiniciamos nuestra máquina virtual con reboot y volvemos a
acceder a ella (con xm console asterisk y suministrando la contraseña de root).
Con la instrucción ztcfg -vv nos aparecen los canales que tenemos disponibles
para configurar. En nuestro caso nos aparece “Channel 01 : FXS Kewlstart
(Default) (Slaves : 01)” indicando que tenemos un canal analógico disponible
para darnos servicios de voz. Estamos en el buen camino, parece que todo
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 50 -
Instalación y configuración de centralita VoIP basada en asterisk
funciona.
5.4 Ficheros y directorios de Asterisk.
En la instalación, Asterisk a creado una serie de directorios y ficheros que es
conveniente conocer, para proceder a la configuración de las extensiones y
conocer un poco mejor la aplicación. Veamos una somera explicación de lo que
contiene cada uno.
/etc/asterisk : Contiene los ficheros de configuración. Gracias a haber ejecutado
la instrucción make samples durante el proceso de instalación, tenemos unos
ejemplos de dichos ficheros de configuración sobre los que podríamos
comenzar a funcionar.
/usr/lib/asterisk/modules : Contiene los módulos de Asterisk que hemos
compilado con las instrucciones make.
/var/lib/asterisk : Aquí están almacenadas las librerías (archivos que contienen
secciones de programa o subprogramas que son necesarios para el
funcionamiento de otro programa más complejo).
/var/lib/asterisk/agi-bin : Directorio para contener los AGI (acrónimo de
Asterisk Gateway Interfaces), que son interfaces para poder integrar PHP, C,
PERL y otros lenguajes de programación con Asterisk.
/var/spool/asterisk : Directorio de almacenamiento de archivos generados por
Asterisk durante su funcionamiento. Estos archivos pueden ser por ejemplo de
audio, generados por el contestador automático al grabar los mensajes de los
usuario y almacenarlos para ser enviados por correo electrónico al usuario de la
extensión que ha recibido la llamada. También pueden ser documentos de
imagen de fax, etc.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 51 -
Instalación y configuración de centralita VoIP basada en asterisk
/var/log/asterisk : Almacén de los archivos log de Asterisk. Un archivo log es
un archivo de texto plano en el que se plasma cualquier acción que realiza un
programa, servidor o aplicación. Aquí podremos encontrar información
pormenorizada de que ha hecho Asterisk desde el inicio de sistema, hasta la
ultima de las llamadas emitidas o recibidas con información relativa a las
mismas. Aquí se almacenan los archivos de los que se alimenta el CDR de
Asterisk que nos va a suministrar información estadística de las llamadas.
5.5 ASTERISK CLI (COMMAND LINE INTERFACE) : Asterisk dispone de
una interfaz de comandos (como una consola de Linux, pero que incluye
instrucciones que afectan directamente al funcionamiento de la centralita). La
cantidad de instrucciones de manipulación y gestión es inmensa y no está a
nuestro alcance el hacer un manual pormenorizado de cada una de ellas.
Durante la configuración de la centralita vamos a usar apenas dos o tres
instrucciones y para quién desee profundizar en el tema, en la bibliografía
hemos indicado unas cuantas páginas web que explican (en ingles) el uso de los
diferentes comandos. Para iniciar Asterisk y acceder al CLI solamente
tendríamos que escribir la instrucción
asterisk -vvvvvvvvvvc (no usar)
aunque lo normal no es que se acceda al CLI Asterisk mediante este método,
sino escribiendo la instrucción
asterisk
que arranca la aplicación en segundo plano y accediendo al CLI mediante la
instrucción
asterisk -vvvvvvvvvvr
En el CLI existen instrucciones para crear extensiones, perfiles, gestionar
codecs (interpretes) de audio y etc. Estas instrucciones no las vamos a utilizar,
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 52 -
Instalación y configuración de centralita VoIP basada en asterisk
puesto que vamos a realizar las modificaciones “a pelo” en los ficheros de
configuración. Esperamos en futuras revisiones de este proyecto, el añadir un
manual completo del CLI Asterisk. Para salir del CLI se usa el comando exit.
Hasta este punto, si hemos introducido la instrucción asterisk, tenemos nuestra
centralita funcionando y corriendo en segundo plano.
5.6 CONFIGURACIÓN INICIAL DE FICHEROS DE ASTERISK; LÍNEA,
EXTENSIONES Y CONTEXTOS.
Durante el proceso de instalación, se nos han generado en la carpeta
/etc/asterisk una serie de archivos de configuración a los que si echamos una
mirada, veremos que traen una cantidad brutal de información. En particular los
que más nos interesan son tres, denominados zapata.conf, extensions.conf y
sip.conf. Los ficheros generados automáticamente por asterisk en /etc/asterisk
tienen una configuración base y comentarios antes de cada instrucción que
explican (en inglés) qué hacen todos y cada uno de los parametros usados en
estos archivos.
Casi todos los parametros están comentados para que no tengan efecto, puesto
que la mayor parte de ellos se usan solamente en configuraciones muy
complejas de entornos de red. Para evitar confusiones y clarificar lo que vamos
haciendo, renombramos los ficheros, llamándolos por ejemplo
copiazapata.conf, copiaextensions.conf y copiasip.conf, para tener acceso a la
información que suministran en caso de que la necesitemos. Para renombrar
podemos usar la instrucción
mv /etc/asterisk/zapata.conf /etc/asterisk/copiazapata.conf
mv /etc/asterisk/extensions.conf /etc/asterisk/copiaextensions.conf
mv /etc/asterisk/sip.conf /etc/asterisk/copiasip.conf
El fichero zapata.conf es el que configura los canales (lineas telefónicas) que
va a tener activos nuestra tarjeta de comunicaciones. Como en este caso
solamente vamos a tener un canal, vamos a editar el archivo y a introducir las
instrucciones para activar y gestionar ese canal
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 53 -
Instalación y configuración de centralita VoIP basada en asterisk
vi /etc/asterisk/zapata.conf
e insertamos lo siguiente
[channels] ; afecta a todos los canales configurados
language = es ; selecciona el lenguaje
usercallerid = yes ; identifica la llamada
hidecallerid = no ; oculta la identificación de llamada
callwaiting = yes ; activa la llamada en espera
threewaycalling = yes ; activa la llamada a tres
transfer = yes ; permite transferir las llamadas
immediate = yes ;
faxdetect = both ; detecta si la llamada recibida es un fax
busydetect = yes ; detecta si la linea esta ocupada
group = 1 ; Indica que esta será la linea Zap 1
context = inicio ; contexto al que va a dirigir la linea la llamada
busycount = 7 ;
immediate = yes ;
signalling = fxs_ks ; tipo de señal que usa la linea
echocancel = yes ; cancelación de eco
echocancelwhenbridged = yes
answeronpolarityswitch = yes
hanguponpolarityswitch = yes
rxgain = 0.5 ;
txgain = 1.0 ;
channel =>1 ; la linea Zap 1 usará el canal 1 de la tarjeta
Digium
ahora editamos por primera vez un extensions.conf limpio al que vamos a
introducir dos contextos para realizar las pruebas de emisión y recepción de
llamadas. Un contexto es una secuencia de ordenes que englobamos con
etiquetas para clarificar su funcionamiento. En este caso vamos a crear un
contexto [inicio] que haga que se reciban llamadas desde la extensión 100 y otro
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 54 -
Instalación y configuración de centralita VoIP basada en asterisk
[salida] que haga que puedan hacerse llamadas desde dicha extensión, para ello
vi /etc/asterisk/extensions.conf
y añadimos en el fichero las siguientes instrucciones
[general]
static = yes ;
writeprotect = no ;
autofallthrough = yes ;
clearglobalvars = no ;
priorityjumping = no ;
language = es ; idioma español en todos lo ficheros
[inicio]
include = salida
exten => s,1,Answer() ; descuelga
exten => s,n,Dial(Sip/100,30,tr) ;manda la llamada a
ext100
exten => s,n,Hungup() ; cuelga al terminar
[salida]
exten => _9XXXXXXXX,1,Dial(Zap/1/${EXTEN},,tTr)
exten => _9XXXXXXXX,n,Hangup
exten => _6XXXXXXXX,n,Dial(Zap/1/${EXTEN},,tTr)
exten => _6XXXXXXXX,n,Hangup
Por ultimo editamos el fichero del protocolo de transmisión sip.conf para añadir
una extensión que llamaremos [100]. El nombre ha de ser numérico y nos va a
permitir posteriormente realizar o pasar llamadas entre extensiones, así que
editamos
vi /etc/asterisk/sip.conf
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 55 -
Instalación y configuración de centralita VoIP basada en asterisk
añadiendo los siguientes parametros
[100] ; nombre de la extensión (linea personal)
username=100 ; nombre del usuario (mismo que extensión)
type=friend ; permite enviar y recibir llamadas
;secret= ; permite poner una contraseña para activación
;callerid= ; muestra este valor al hacer una llamada
language=es ; lenguaje en español en todos los ficheros
context=inicio ; contexto al que se dirige esta extensión
nat=yes ; permite llamadas por internet
host=dynamic ; se puede usar desde cualquier ip de la red
canreinvite=no ;
Con estos tres ficheros, si lo hemos hecho bien, nuestra centralita debe de poder
recibir llamadas a la extensión 100 (en el capitulo 6 configuraremos el hardware
PAP2T para que funcione dicha extensión). Pero antes de pasar a realizar las
pruebas, vamos a detenernos a examinar que es lo que hemos hecho en los tres
ficheros de configuración que hemos introducido. Es muy importante y
conveniente tener claro que hace cada uno de los ficheros y conocer las
instrucciones básicas que hemos introducido, para poder posteriormente ir
aumentando la complejidad del entramado de nuestra centralita. La mayoría de
las opciones las hemos comentado con ; <nota del programador> , que es como
se hacen los comentarios en los ficheros de Asterisk, pero vamos a hacer
especial hincapié en aquellas líneas que son cruciales para la configuración y en
aquellos conceptos que han de ser comprendidos.
5.7 ARCHIVOS SIP.CONF, IAX.CONF Y DEMÁS FICHEROS DE
PROTOCOLO DE COMUNICACIONES.
Los archivos de protocolo de comunicaciones se usan para seleccionar que
protocolo usará cada extensión. Asterisk lee todos los archivos de protocolo a la
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 56 -
Instalación y configuración de centralita VoIP basada en asterisk
hora de iniciarse y activa las extensiones (lineas personales) que estén
configuradas en todos ellos. Lógicamente hemos de evitar tener la extensión
[100] configurada simultáneamente en dos de los archivos de protocolo. Cada
protocolo es conveniente en ciertos casos. El más usado y compatible es el
protocolo SIP (acrónimo de Session Initiation Protocol – protocolo de inicio de
sesiones) que es el que hemos usado en nuestra configuración inicial. Para poder
hacer que el hardware que vamos a usar funcione con Asterisk, es necesario que
el mismo sea compatible con este protocolo. El protocolo IAX es un protocolo
libre creado por la empresa Digium para su uso específico en la gestión de voz
sobre IP a través de redes WAN y su uso facilita la comunicación a través de
internet. Si quisiéramos que nuestra centralita tuviera extensiones no conectadas
a la red local sino conectadas a internet en cualquier lugar del mundo y que
dichas extensiones pudieran usar la centralita con todo su potencial, tendríamos
que crear estas extensiones dentro del fichero iax.conf. Existen otros ficheros de
protocolo tales como h323.conf, jabber.conf, etc, cada uno con su idiosincrasia
a la hora de configurarlos, pero con SIP e IAX tenemos los más estandarizados
y es más que suficiente para nuestros fines. Una vez razonado que hace
exactamente el archivo sip.conf, veamos un poco mejor el contenido que le
hemos introducido :
[100] ; nombre de la extensión (linea personal)
Vamos a poder añadir al archivo sip.conf tantas extensiones como queramos, y
podemos llamarlas con el número que nos parezca conveniente. Podemos
organizarlo por departamentos de una empresa, y por ejemplo el teléfono
principal de administración sea el [100], el de Rosa [101], el de Pablo [102], la
extensión del fax del departamento [110]. O por ejemplo podemos añadir una
extensión para emergencias en la garita del guardia de la empresa y llamarle
[091]. Es solo un ejemplo para que nos demos cuenta que tenemos en nuestras
manos el poder de configurar miles de extensiones (nada nos impide poner la
extensión [72384236427834623], solo que es un poco difícil de recordar).
username=100 ; nombre del usuario (mismo que extensión)
El nombre de usuario, que usaremos en los programas Softphone o en el
hardware de gestión de VoIP para configurar la extensión
;secret= ; permite poner una contraseña para activación
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 57 -
Instalación y configuración de centralita VoIP basada en asterisk
En este punto nosotros hemos dejado la contraseña sin configurar. Para una
gestión segura del sistema, sobre todo si se va a tener acceso desde internet, es
conveniente quitar el “ ; ” (comentario) y poner una contraseña de nuestra
elección. Se usará al configurar en el hardware y en los Softphone al igual que
el nombre de usuario.
El siguiente archivo que vamos a ver en detalle es el extensions.conf, el cual
configura los “caminos” (Dial Plan – plan de marcado) que van a seguir las
llamadas en función de diferentes parámetros que nosotros podemos definir
mediante “contextos”. Un contexto es el medio mediante el que vamos a
organizar las acciones que la centralita va a realizar. Lo dividimos en contextos
para que sea más sencillo el posteriormente modificar dichos caminos. Para la
creación de los contextos, se usa un sencillo lenguaje de programación que
permite el uso y creación de variables y los saltos entre lineas de código (el
nunca bien ponderado GO TO). Veamos los contextos que hemos creado :
[general]
El contexto general contiene parámetros de Asterisk, que no vamos a entrar a
explicar. Se puede ver que hace cada uno de ellos en la copia de seguridad
copiaextensions.conf que hemos dejado almacenada para consulta.
[inicio]
El contexto inicio es donde vamos a configurar que va a hacer Asterisk cuando
reciba una llamada en cualquiera de las lineas que le hayamos configurado. El
nombre del contexto lo podemos poner a nuestro gusto y debería ser aclaratorio
de que función va a realizar dicho contexto dentro de la centralita. En nuestro
caso va a ser el punto del “camino” donde las llamadas van a dar sus primeros
“pasos”.
include = salida
Asterisk solamente usa el primer contexto que encuentra en el fichero
extensions.conf, en nuestro caso el contexto [inicio], y ejecuta los pasos que
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 58 -
Instalación y configuración de centralita VoIP basada en asterisk
encuentra en ese contexto. Pero nosotros hemos creado un segundo contexto
para las llamadas salientes. Si no incluimos el contexto [salida] con una orden
include en el contexto principal y marcamos cualquier número, Asterisk nos
dará errores y comunicará. Hemos de añadir mediante include todos los
contextos que hayamos creado y que consideremos necesarios. Los contextos
secundarios pueden ser incluidos en el contexto principal o solamente ser
llamados desde otros contextos, si con ello conseguimos algún objetivo que se
nos haya propuesto por los usuarios de la centralita. Lo veremos más a fondo
cuando compliquemos nuestro Dial Plan.
exten => s,1,Answer() ; descuelga
Todos los “pasos” del camino, que ha partir de ahora vamos a llamar prioridad,
comienzan con la palabra exten y el símbolo => , eso es una prerrogativa del
lenguaje de programación de Asterisk. A continuación se introducen las
instrucciones que constan de varias partes separadas por comas. En la
instrucción que estamos viendo, en primer lugar tenemos la extensión “s”
(start). La extensión “s” es la primera de varias extensiones especiales (h, i, T, t
y fax), de las que solamente vamos a usar inicialmente “s” y “fax”. La extensión
start capta una llamada no generada por nosotros y que por tanto no tiene
número de extensión. El número de extensión en este caso sería el número de
teléfono del llamante. El número “1” que aparece tras la coma, es la prioridad, o
sea, el “paso” dentro de nuestro camino particular hacia gestionar esa llamada.
Lógicamente no debemos comenzar el camino dando el quinto “paso”, pues lo
más probable será que tropecemos.
Por ultimo la función de Asterisk “Answer()” ordena que “conteste”
(descuelgue) la linea para ser enrutada hacia pasos posteriores.
exten => s,2,Dial(Sip/100,30,tr) ;manda la llamada a ext100
En esta orden continuamos manteniendo el mismo llamante que está
almacenado en la extensión “s”, le asignamos la prioridad dos (segundo paso en
nuestro plan de marcado) y vemos la función Dial(), que sirve para obligar a
Asterisk a marcar una extensión que le indiquemos por parámetros. En este caso
lo parametros que le estamos dando son Sip/100, que le indica a Asterisk que
busque en el archivo sip.conf una extensión llamada [100] (que hemos creado
anteriormente). Si por ejemplo hubiésemos creado la extensión dentro del
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 59 -
Instalación y configuración de centralita VoIP basada en asterisk
fichero iax.conf (para su posterior uso a través de internet) tendríamos que haber
solicitado el marcado a la extensión IAX/100.
El segundo parámetro de Dial() es el tiempo que deseamos que “suene” la
extensión a la que llamamos. En este caso intentaría que la extensión
respondiera durante 30 segundos y seguidamente desistiría pasando a la
siguiente prioridad en el enrutado. Podríamos no poner el número 30 (dejando
únicamente ;;) y se intentaría contactar indefinidamente con la extensión. Esto
no es conveniente (hay que poner limites), puesto que si la extensión no
funciona por el motivo que sea, dejamos el sistema en un bucle del que la única
salida es que el llamante cuelgue.
El ultimo parámetro son dos letras. La letra “t” permite que el receptor pueda
transferir la llamada a otra extensión si le parece conveniente y la letra “r”
indica que se va a generar un timbrado (va a sonar un teléfono). También se
podría usar la letra “T” que permite que el llamante pueda transferir la llamada.
exten => s,3,Hungup() ; cuelga al terminar
Y en este tercer paso usamos la función Hungup() (colgar), lo que hacemos con
prioridad tres y para la extensión “s” (teléfono llamante). Hemos colgado a
nuestro paciente usuario.
En las pruebas del sistema veremos como afectan físicamente estas
instrucciones al hardware de la centralita.
[salida]
Sin este contexto, con las instrucciones que lo integran, no podríamos realizar
llamadas. Las instrucciones podríamos haberlas escrito en el contexto [inicio], y
funcionarían correctamente, pero veremos como se puede llegar a complicar
este fichero/programa y agradeceremos el tenerlo todo bien organizado.
exten => _9XXXXXXXX,1,Dial(Zap/1/${EXTEN},,tTr)
Esta instrucción tiene exactamente el mismo formato que las que hemos visto en
el contexto [inicio], pero en lugar de usar la extensión “s” (recordamos por
ultima vez que esta extensión es la primera que se busca si no se ha marcado
ningún número y sirve para dar acceso a la centralita de un usuario llamante),
comprueba que la extensión sea un número que comience por 9 y que
posteriormente tenga ocho dígitos (por eso las ocho “X”).
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 60 -
Instalación y configuración de centralita VoIP basada en asterisk
Cuando marcamos desde cualquiera de los teléfonos conectados a la centralita
un número cualquiera (por ejemplo 12345), ese número se almacena en una
variable llamada ${EXTEN} (las variables en Asterisk siempre tienen el
formato ${NOMBRE_VARIABLES}). Así que nos atenemos al ejemplo,
Asterisk irá mirando paso por paso en todos los contextos buscando el número
12345 o cualquier orden que le permita usarlo (por ejemplo 1XXXX). Si no lo
encuentra, nos dará un error de que no puede marcar dicho número. Pero
marcando por ejemplo el 953291383 si que estamos cumpliendo la condición
exigida en la instrucción que estamos viendo, con lo que comprueba la prioridad
que en este caso es “1” y por tanto pasa gestionar el parámetro en el que
mediante la función Dial() le indicamos que llame a Zap/1. Antes hemos visto
que al entrar una llamada la dirigiamos hacia Sip/100 (extensión 100 dentro del
fichero Sip), pues ahora vamos a dirigir a Zap/1 (extensión 1 dentro del fichero
zapata). En el fichero zapata.conf hemos introducido la configuración de todas
las líneas que nos permite usar nuestra tarjeta de comunicaciones, así que
estamos obligando a Asterisk a llamar a la linea 1 de la tarjeta. Pero la llamada
exacta es Zap/1/${EXTEN}, con lo que le estamos diciendo que llame a la
extensión “1” del fichero zapata.conf y que lo haga con el número que hemos
tomado a través del teclado de nuestro teléfono y que se ha almacenado en la
variable ${EXTEN}. Es un poco enrevesado, pero estamos obligando a Asterisk
a llamar al número de teléfono almacenado en la variable. Asterisk usa ese
número como una extensión más de la centralita aunque no pertenezca a la
misma red (pertenece a la red del operador de telefonía). Lógicamente al pasar
la llamada a través de la red telefónica de nuestra compañía telefónica, esta nos
cobrará por sus servicios el coste que tengamos contratado (tarifa plana, coste
por minutos, etc). Solo pagamos las llamadas que usan las líneas Zap.
exten => _9XXXXXXXX,2,Hangup()
Una vez terminada la llamada realizada en la instrucción anterior (cuando
nosotros o el receptor cuelga el teléfono), nos aseguramos que dicha llamada se
cuelgue en la centralita con prioridad 2. Para colgar usamos la función
Hangup().
exten => _6XXXXXXXX,1,Dial(Zap/1/${EXTEN},,tTr)
Esta instrucción posibilita que se puedan marcar números de teléfono móvil
desde nuestra centralita. Si no se añade, no podríamos llamar a móviles con lo
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 61 -
Instalación y configuración de centralita VoIP basada en asterisk
cual ya estamos gestionando las llamadas. Solo tenemos que comentar con “;”
dos instrucciones y evitamos que los usuarios de la centralita llamen a la novia.
exten => _6XXXXXXXX,2,Hangup
Nos aseguramos que tras la llamada se cuelga la extensión en la centralita.
6 CONFIGURANDO EL ENTORNO (PARTE I).
Para comenzar a hacer las pruebas vamos a conectar algunos de los dispositivos
hardware que hemos descrito en el punto 1 de la sección MATERIAL. Primero hemos de
conectar un cable de teléfono desde la línea telefónica (la toma de pared RJ11 donde
habitualmente conectamos el teléfono) hasta la linea 1 de nuestra tarjeta de
comunicaciones Digium TDM-400. Posteriormente conectamos nuestro Internet Phone
Adapter Linksys PAP2T. Para ello hemos de usar un cable RJ45 (cable estándar de red)
con el que conectaremos el puerto INTERNET del dispositivo a nuestro ROUTER o
SWITCH para añadirlo a nuestra red local y posteriormente conectamos el teléfono
analógico AIRIS T850M al conector PHONE 1 del PAP2T. Ya tenemos nuestro
escenario de pruebas preparado, con un único teléfono conectado a nuestra centralita y
con el que vamos a intentar enviar y recibir llamadas. Una vez que logremos hacerlo,
conectaremos más dispositivos e intentaremos interactuar entre ellos.
Ahora que tenemos conectado un teléfono, la línea y el adaptador Linksys, hemos de
configurar el adaptador Linksys para permitir gestionar llamadas. Dicho adaptador tiene
activo un cliente DHCP (recibe una dirección IP automática desde un servidor DHCP),
con lo que tomará una IP acorde con nuestra red. Para saber en que IP se ha conectado,
podemos usar la orden
nmap 172.16.0.* (con dígitos acordes a nuestro rango IP)
y una vez sepamos en que IP está, desde un navegador WEB accedemos poniendo en la
barra de direcciones
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 62 -
Instalación y configuración de centralita VoIP basada en asterisk
http://172.16.0.208 (en este caso la IP que tiene en nuestra red)
Nos aparece un gestor WEB que nos permite modificar los diferentes parámetros de los
que dispone este adaptador telefónico. Pulsamos en Admin Login para acceder a los
recursos de administrador del dispositivo, pulsamos en System y en la pestaña donde
aparece DHCP le indicamos “no”. Debajo ponemos los parametros de red que nos
interesen, para que sean fijos y podamos acceder siempre al PAP2 desde la misma
dirección IP. Lógicamente apuntamos la IP para crear luego nuestro mapeado de la red.
Pulsamos donde pone “Line 1” y en la sección Proxy añadimos la dirección IP de nuestro
servidor Asterisk (en nuestro caso es 172.16.0.211); en las secciones Auth Id y User Id
ponemos el número de extensión que queramos asignar a esa línea del PAP2. Nosotros
hemos creado en el fichero sip.conf un usuario llamado 100 con lo que ese número es el
que tenemos que incluir en dichas secciones. Si a la hora de crear la extensión
hubiésemos configurado una contraseña en la instrucción secret estaríamos obligados a
incluir dicha contraseña en la sección password. Tiene que quedar la configuración tal y
como mostramos en la captura de pantalla que vemos a continuación :
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 63 -
Instalación y configuración de centralita VoIP basada en asterisk
Pulsamos en Save Settings. Ya tenemos nuestra centralita preparada para realizar y
recibir las primeras llamadas.
Probamos a descolgar el teléfono y comprobamos que tenemos línea. Llamamos al
vecino del cuarto. Si nos contesta, el estar leyendo este documento a merecido la pena.
Podemos también probar a llamarnos al teléfono móvil, y disfrutar de nuestra tono de
llamada favorito. El contexto [salida] funciona. Ahora probamos a llamar a nuestro
número de teléfono fijo desde el móvil y comprobamos que el teléfono suena y podemos
mantener una conversación con nuestro interlocutor. El contexto [inicio] también
funciona.
Ahora que sabemos que nuestra centralita funciona, solamente nos queda el añadir la
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 64 -
Instalación y configuración de centralita VoIP basada en asterisk
orden para que Asterisk arranque cada vez que se inicie el servidor. No lo hemos hecho
hasta ahora por si teníamos cualquier problema de cuelgues por una mala configuración o
una gestión errónea, poder usar el nunca bien ponderado botón de reset. Pero ya si que
podemos editar el archivo
vi /etc/rc.local
y añadir la instrucción
asterisk
antes de la línea que pone “exit 0”. Guardamos y cerramos el archivo de configuración.
7 CONFIGURANDO EL ENTORNO (PARTE II).
Una centralita que de servicio a una sola extensión (un solo teléfono físico) es muy triste,
así que vamos a configurar en el PAP2 un teléfono inalámbrico analógico y vamos
también a conectar un teléfono IP THOMSON. Cuando terminemos tendremos tres
teléfono e intentaremos realizar llamadas internas a través de la centralita, que no tienen
coste, puesto que se realizan a través de nuestra red local. Para ello, antes de conectar los
dispositivos, vamos a añadir las extensiones en el fichero sip.conf con las siguientes
instrucciones
[200]
username = 200
type = friend
context = inicio
host = dynamic
[300]
username = 300
type = friend
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 65 -
Instalación y configuración de centralita VoIP basada en asterisk
context = inicio
host = dynamic
y también vamos a añadir reglas de marcado en el fichero extensions.conf añadiendo en
el contexto [salida] lo que indicamos a continuación
exten => 100,1,Dial(Sip/100,30,tTr)
exten => 100,2,Hangup()
exten => 200,1,Dial(Sip/200,30,tTr)
exten => 200,2,Hangup()
exten => 300,1,Dial(Sip/300,30,tTr)
exten => 300,2,Hangup()
exten => 400,1,Dial(Sip/400,30,tTr)
exten => 400,2,Hangup()
Podemos poner estas líneas dentro del contexto donde nos parezca conveniente, teniendo
en cuenta que tiene que revisar todas las instrucciones hasta encontrar la adecuada. Si
nuestra centralita va a soportar principalmente tráfico de llamadas entre extensiones, es
conveniente poner las instrucciones al principio del contexto, sin embargo, si lo que
vamos a hacer es principalmente hacer llamadas a móviles, esas líneas son las que deben
estar en primer lugar. Como se puede observar, vamos teniendo opciones más complejas
de optimización y gestión de la centralita. Y es solo el principio de lo que vamos a hacer.
Aunque es probable que por lo hecho hasta ahora tengamos claro que hacen las
instrucciones anteriores, veamos detenidamente una de las extensiones creadas
exten => 100,1,Dial(Sip/100,30,tTr)
Si marcamos 100 en cualquiera de los teléfonos (excepto desde la extensión 100 que
comunica), Asterisk intenta con prioridad 1 llamar a la extensión Sip/100 durante 30
segundos y permitiendo que tanto el llamante como el receptor, puedan desviar la
llamada a otra extensión. De igual forma funcionan las otras dos extensiones creadas.
exten => 100,2,Hangup()
Terminada la comunicación, nos aseguramos que la conexión en la centralita se finalice.
Para que la extensión [200] funcione, hemos de configurar nuestro teléfono THOMSON
ST2022 con una IP dentro del rango de nuestra red. Conectamos el teléfono a la red
eléctrica y a nuestra red local con un cable estándar RJ45. Lo dejamos unos segundos
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 66 -
Instalación y configuración de centralita VoIP basada en asterisk
que termine de configurarse y pulsamos las tecla MENU para ver una selección en
pantalla. Pulsamos en dicha selección la opción Admin y nos pide una contraseña. La
contraseña por defecto de este modelo de teléfono es 784518. La introducimos y le
damos a OK. Pulsamos Select sobre la opción Networking y con la flecha abajo vamos
pasando hasta encontrar la dirección IP. Le damos a Edit y ponemos la IP que nos
convenga. En nuestro caso vamos a poner la IP 172.16.0.207 y pulsamos Save. El
teléfono se reiniciará (de nuevo la discoteca) y volvemos a entrar en Admin
introduciendo la contraseña. Ahora en lugar de entrar en la opción Networking, bajamos
con la flecha y pulsamos sobre SIP Configuration. Nos aparece Profile 1. Lo
seleccionamos con Select. Pulsamos la flecha abajo para encontrar una opción que pone
Name, donde hemos de escribir el nombre de extensión que va a tener el teléfono.
Nosotros le vamos a llamar Ext. 300. Pulsamos de nuevo la tecla abajo y nos aparece
PxySrv y la siguiente RegSrv, teniendo que poner en ambas opciones la IP de nuestro
servidor Asterisk pulsando sobre Edit (nuestro servidor es el 172.16.0.211). Seguimos
bajando y donde pone RegID y TelNbr hemos de poner (también pulsando en Edit y
posteriormente en Save) el número con el que hemos llamado a nuestra extensión en el
fichero SIP. Como en este caso hemos añadido tres extensiones al fichero sip.conf
([200], [300] y [400]) le vamos a llamar a este teléfono 300.
Nos faltaría configurar la extensión [200] en nuestro adaptador telefónico PAP2 para
tener tres teléfonos operativos. Para ello accedemos desde el navegador WEB al la
página de configuración y seguimos los mismos pasos que para configurar la extensión
[100] (capítulo 6 – Configurando el entorno (Parte I)). Solo que en lugar de
modificarlo en Line 1, las modificaciones las hacemos sobre Line 2 y lógicamente, en
lugar de poner 100, pondremos 200 donde corresponda.
Evidentemente tendremos que conectar nuestro teléfono inalámbrico AIRIS T800B1 al
conector Phone 2 del adaptador Linksys para poder usar la extensión 200.
8 CONFIGURACIÓN DE SOFTPHONE VOIXPHONE.
Queremos usar también “teléfonos” por software para nuestra instalación, así que vamos
a descargar y configurar VoixPhone. Lo vamos a instalar en el portátil AIRIS Praxis
N1070 que tiene instalada una distribución UBUNTU de Linux. Descargamos desde la
siguiente web : http://www.voixphone.com/index.php/Download la versión para
Linux. Descomprimimos el archivo descargado y pulsamos doble click sobre el mismo.
Nos aparece un menú de instalación en el que seleccionamos la instalación Default (por
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 67 -
Instalación y configuración de centralita VoIP basada en asterisk
defecto) y posteriormente hay que pulsar siguiente hasta que nos solicita el idioma en el
que seleccionamos español. Nos pedirá durante el proceso la contraseña de administrador
la cual suministramos y por ultimo nos pregunta si queremos un acceso directo en el
escritorio, a lo que contestamos que si. Para configurarlo hemos de modificar nuestro
fichero iax.conf para lo que vamos a realizar una copia del que se crea por defecto con la
instrucción
mv /etc/asterisk/iax.conf /etc/asterisk/copiaiax.conf
tras lo que editamos el fichero nuevo
vi /etc/asterisk/iax.conf
y le incluimos una nueva extensión mediante las siguiente instrucciones
[general]
bindport = 4569 ; puerto por defecto del protocolo
bindaddr = 0.0.0.0 ; dirección ip para la conexión (todas)
context = inicio ; contexto por defecto
language = es
delayreject = yes
bandwitch = low ; usar codecs con bajo consumo de ancho de banda
allow = all ; codecs que se usarán (permitimos todos)
[700]
username = 700
type = friend
secret = 700
context = inicio
host = dynamic
nat = yes
tras lo que guardamos y salimos. Ahora vamos a configurar en el Softphone la extensión
que acabamos de crear. Para ello vamos a Opciones, Teléfono y donde nos pide dirección
del servidor insertamos 172.16.0.211 (nuestra IP del servidor Asterisk). En puerto
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 68 -
Instalación y configuración de centralita VoIP basada en asterisk
dejamos 4569, en nombre de usuario ponemos 700, contraseña 700, nombre identificador
700 y número identificador 700 (fácil ¿no?). Le damos a la marca de aplicar y pulsamos
en Discar para que nos aparezca el teclado numérico para poder llamar. Cada vez que
modificamos los parámetros de los archivos de configuración de Asterisk, tenemos dos
opciones para que estos parámetros se hagan efectivos. La primera es cerrar Asterisk
desde el CLI con la instrucción stop when convenient, que cierra los servicios de
Asterisk cuando detecta que ya no queda nadie hablando por teléfono (también se puede
usar stop now, pero queda feo dejar a los usuarios con la palabra en la boca) y volver a
iniciar Asterisk ya sea escribiendo asterisk en la consola o reiniciando la máquina
virtual. El segundo método, mas eficiente es sencillamente poner en el CLI la instrucción
dialplan reload, que hará que se ejecuten todas las modificaciones. Así que es lo que
deberíamos hacer para que nuestra nueva extensión esté operativa. Es conveniente
hacerlo antes de configurar el Softphone, puesto que en caso contrario, el mismo no
podrá registrar la extensión en nuestra centralita y nos dará errores. ¿He avisado tarde?
9 Comprobación del funcionamiento de la instalación hardware.
Ahora que tenemos operativa la centralita y todos los teléfonos hardware que vamos a
usar, es oportuno el hacer comprobaciones de funcionamiento. Para ello es conveniente
en nuestro servidor Asterisk el abrir la consola (CLI) de Asterisk con la instrucción
asterisk -vvvvvvvvvvr
Veremos que cada acción que hagamos con nuestra centralita se verá reflejada en
pantalla, dando información, pistas y errores que nos ayudarán en la configuración. Si lo
deseamos, podemos acceder desde una segunda consola a nuestro servidor Asterisk para
poder seguir realizando modificaciones al sistema (ALT+F2 y nos autentificamos como
administrador).
Teniendo el CLI Asterisk en pantalla descolgamos nuestra extensión [100] (el teléfono
sobremesa AIRIS) y marcamos el 300 (la extensión de nuestro teléfono THOMSON).
Veremos lo siguiente
-- Executing [300@inicio:1] Dial("SIP/100-006dd0c0", "Sip/300|30|tTr") in new
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 69 -
Instalación y configuración de centralita VoIP basada en asterisk
stack
Nos dice que se va a ejecutar una llamada (Dial()) desde la extensión SIP/100 a la
extensión Sip/300.
-- Called 300
Indica que la llamada está en proceso (esta buscando la extensión y comprobando si está
operativa).
-- SIP/300-006e1400 is ringing
Informa de que la conexión se ha establecido y que el teléfono está sonando.
Si en este momento, descolgamos la extensión [300], veremos en pantalla
-- SIP/300-006e1400 answered SIP/100-006dd0c0
lo que nos informa de SIP/300 ha contestado a la llamada de SIP/100 correctamente. Si
en cualquier momento colgamos alguno de los teléfonos veremos
== Spawn extension (inicio, 300, 1) exited non-zero on 'SIP/100-006dd0c0'
que la conexión entre ambas extensiones ha terminado correctamente.
Supongo que el afanado lector habrá constatado lo interesante que resulta tener operativo
el CLI durante las configuración de la centralita, puesto que nos hace tener una idea clara
de lo que va pasando en sus entrañas.
Es conveniente que probemos a llamar entre las diferentes extensiones para ver si todo
funciona correctamente y que veamos como afectan al CLI las diferentes llamadas.
Realmente ahora esto si que parece una centralita. Podemos desde los teléfono
analógicos desviar llamadas desde una extensión a otra marcando # y el número de
extensión a la que queremos pasar la llamada (mientras observamos como afecta todo
ello al CLI).
Esta es la traza de una llamada de la extensión [100] a la [200], la cual a descolgado (se
supone que hablan algo) y que la [200] ha transferido a la [300] (la trescientos a
mantenido también una conversación) y por ultimo uno de los usuario (el [100] o el
[300], puesto que el [200] al transferir la llamada, no esta involucrado) ha colgado.
-- Executing [200@inicio:1] Dial("SIP/100-006dd0c0", "Sip/200|30|tTr") in new
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 70 -
Instalación y configuración de centralita VoIP basada en asterisk
stack
marcamos desde la extensión [100] a la [200]
-- Called 200
se realiza la llamada
-- SIP/200-006e1400 is ringing
suena el teléfono en la [200]
-- SIP/200-006e1400 answered SIP/100-006dd0c0
la extensión [200] contesta
-- Started music on hold, class 'default', on SIP/100-006dd0c0
la extensión [200] ha pulsado # y por tanto se llama al sistema de música en espera
-- <SIP/200-006e1400> Playing 'pbx-transfer' (language 'es')
suena la música (el fichero que se está escuchando se llama 'pbx-transfer')
-- Stopped music on hold on SIP/100-006dd0c0
la música termina porque se ha terminado de marcar un número en el terminal
-- Executing [300@inicio:1] Dial("SIP/100-006dd0c0", "Sip/300|30|tTr") in new
stack
el número que se ha marcado es el 300 con lo que nos genera la llamada
-- Called 300
y llama a la extensión [300]
-- SIP/300-006f17f0 is ringing
suena el teléfono en la extensión
-- SIP/300-006f17f0 answered SIP/100-006dd0c0
se responde a la llamada y por ultimo
== Spawn extension (inicio, 300, 1) exited non-zero on 'SIP/100-006dd0c0'
uno de los usuario cuelga el teléfono.
10 DIALPLAN (AÑADIENDO FUNCIONES A LA CENTRALITA).
10.1 LOCUCIÓN DE ENTRADA.
Tenemos operativa la centralita y nuestros teléfono. Es el momento de
complicar un poco nuestro Dial plan. Actualmente nuestro Dial plan es un poco
soso. Cuando entra una llamada la dirigimos directamente a la extensión [100] y
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 71 -
Instalación y configuración de centralita VoIP basada en asterisk
desde esa extensión podríamos derivar las llamadas donde nos interese, siendo
este el clásico método de tener una persona atendiendo el teléfono. Pero nuestra
centralita puede más que todo eso. Vamos a hacer que cuando alguien llame, le
salga una locución (mensaje de voz) que le indique las posibilidades de contacto
que le ofrece la centralita. El menú telefónico de la locución de acceso va a ser
el siguiente :
“Ha llamado a proyecto asterisk, si desea hablar con José Manuel Campos pulse
uno, si desea hablar con Miguel Guzmán pulse dos, si desea hablar con tutoría
pulse tres, si no desea hablar con ninguno de los anteriores, pulse 4 y será
atendido por un operador”
Lo primero que vamos a hacer es grabar la locución. Como a lo largo de la
configuración de la centralita y de su vida útil, tendremos que grabar múltiples
locuciones, lo ideal es automatizar las operaciones de grabación lo máximo
posible. Es por lo que vamos a crear una extensión de marcado dedicada a
realizar y escuchar las grabaciones, para ello hemos de incluir en nuestro
extensions.conf unas nuevos comandos al final de los ya existentes en el
contexto salida. Las instrucciones a incluir serían
exten => 555,1,Answer() ; descuelga
exten => 555,n,Wait(2) ; espera 2 segundos
exten => 555,n,Record(locucion:gsm)
con esta instrucción le indicamos que grabe un archivo llamado locucion.gsm
con lo que nosotros digamos por el auricular telefónico
exten => 555,n,Wait(2) ; espera 2 segundos
exten => 555,n,Hangup() ; cuelga
exten => 556,1,Playback(locucion) ; reproduce locucion.gsm
exten => 556,n,Hangup() ; cuelga
tras lo que guardamos y salimos del archivo. En el CLI de Asterisk usamos la
instrucción dialplan reload para que los cambios tengan efecto y probamos el
funcionamiento de nuestra extensión de grabación de mensajes marcando en
cualquiera de los teléfonos 555. Esperamos a que nos salga un pitido fuerte y
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 72 -
Instalación y configuración de centralita VoIP basada en asterisk
agudo que indica que la grabación se ha iniciado (en el CLI también nos
informará de ello), y es cuando ponemos nuestra mejor voz para grabar el
mensaje que hemos escrito anteriormente. Esperamos unos segundos después de
terminar de hablar y colgamos el teléfono. El mensaje se ha grabado en nuestro
servidor en la carpeta /var/lib/asterisk/sounds/locucion.gsm y procedemos a
escucharlo usando la extensión de escucha 556 para lo que descolgamos el
teléfono y marcamos dicha extensión. Si lo que escuchamos nos parece
correcto, tenemos nuestra locución de inicio preparada. Solo tendríamos que
cambiar de nombre el archivo por otro que nos resultara más clarificador y
sobre todo porque si grabamos otra locución, se grabaría encima de la ya
existente. Para cambiar el nombre al archivo lo hacemos con la instrucción
mv /var/lib/asterisk/sounds/locucion.gsm /var/lib/asterisk/sounds/loc_inicio.gsm
Si nos fijamos, a la hora de añadir las instrucciones para grabación en el archivo
extensions.conf no hemos marcado las prioridades en las instrucciones y las
hemos sustituido por la letra n a excepción de la primera prioridad que si que le
hemos indicado que es 1. En cualquiera de las instrucciones que vamos
añadiendo a la centralita podemos hacer esto, ya que n indica a Asterisk que
sume uno a la prioridad anterior. Es por lo que la segunda línea sería 1+n = 2.
Esto hace que no tengamos que estar poniendo las prioridades a mano en largas
cadenas de condiciones.
Ahora vamos a añadir la locución a nuestro plan de marcado. Editamos el
archivo extensions.conf por enésima vez y modificamos el contexto [inicio]
para que quede mas o menos así
[inicio]
include = salida
exten => s,1,Answer() ; descuelga
exten => s,n,Background(loc_inicio) ; reproduce locucion
exten => s,n,Dial(SIP/100,30,tr) ; marca a la extensión
100
exten => s,n,Hangup() ; cuelga
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 73 -
Instalación y configuración de centralita VoIP basada en asterisk
Probamos (recargando el dialplan) nuestra nueva configuración llamando a
nuestra centralita desde un teléfono externo para así escuchar nuestra dulce voz.
Ahora hemos de configurar el contexto inicio para que haga lo que dice la
locución de entrada. Si asignamos la extensión [100] a José Manuel Campos, la
[200] a Miguel Guzmán, la [300] a tutoría y la [400] a un hipotético operador,
hemos de hacer que si el llamante marca alguno de los dígitos indicados en la
locución, se transfiera correctamente la llamada al destinatario solicitado. Para
ello volvemos a modificar el contexto para que quede como sigue
[inicio]
include = salida
exten => s,1,Answer() ; descuelga
exten => s,n,Background(loc_inicio)
exten => s,n,WaitExten(5) ; espera 5 segundos
exten => s,n,Background(loc_inicio)
exten => s,n,WaitExten(5)
exten => s,n,Goto(100,1)
exten => s,n,Hangup()
exten => 1,1,Goto(100,1)
exten => 2,1,Goto(200,1)
exten => 3,1,Goto(300,1)
exten => 4,1,Goto(400,1)
Grabamos, salimos, reiniciamos el dialplan, comprobamos que funciona y
vamos a ver que diablos hemos hecho. Veamos las instrucciones más
rocambolescas a fondo
exten => s,n,Background(loc_inicio)
Aunque ya la hemos visto anteriormente es conveniente indicar que para
reproducir las locuciones podemos emplear Playback o Background. Playback
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 74 -
Instalación y configuración de centralita VoIP basada en asterisk
realiza la reproducción total del archivo de audio y Background reproduce hasta
que se pulsa una tecla en el terminal. Es por lo que si deseamos obligar al
llamante a escuchar nuestro mensaje usaríamos Playback, pero como no es el
caso y si el llamante conoce la extensión queremos que acceda a ella en
cualquier momento, con pulsar una adecuada, listo.
exten => s,n,WaitExten(5)
Dejamos un espacio de tiempo de 5 segundos para permitir al llamante ponderar
cual de las opciones que le hemos suministrado en la locución es la que desea
usar. Es el tiempo en el que se supone ha de pulsar la extensión adecuada. Si se
pasan esos 5 segundos, le damos una segunda oportunidad reproduciendo
totalmente la locución, por si no ha entendido algo en la primera reproducción,
tras eso esperamos otros 5 segundos y si no ha marcado nada valido
exten => s,n,Goto(100,1)
le indicamos a Asterisk que transfiera la llamada entrante a la extensión [100]
con la prioridad 1.
Por ultimo las instrucciones del tipo
exten => 1,1,Goto(100,1)
son sencillas de entender. Si hemos marcado 1 en la locución nos pasa
directamente a la extensión que hemos configurado para ese número con la
prioridad 1 (en este caso la [100]).
La orden Goto nos permite saltar automáticamente hasta cualquiera de las
ordenes de los contextos activos. Podríamos poner 1,1,Goto(555,1) y nos
saltaría automáticamente a nuestra extensión de grabación de locuciones al
pulsar el llamante la opción 1. Si nos fijamos, nuestra instrucción de grabación
es 555,1,Answer() y el inicio de esa instrucción que es 555,1 no se repite en
ningún punto del dialplan. Goto es una herramienta muy potente que usaremos a
discreción.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 75 -
Instalación y configuración de centralita VoIP basada en asterisk
10.2 CONTROL HORARIO.
¿Que pasaría si alguien llamara a nuestra centralita fuera del horario en el que
las diferentes extensiones pueden atender las llamadas? El llamante pulsaría la
extensión deseada y el teléfono sonaría durante el tiempo que le hayamos
especificado, pero no contestaría nadie. Eso nos dejaría en muy mal lugar. Así
que vamos a configurar en nuestro dialplan un control horario que haga saltar
locuciones indicando que se está llamando en día festivo o que se está llamando
fuera del horario en el que el usuario de la extensión está disponible. Para ello
vamos a tener que modificar sustancialmente los contextos. En primer lugar le
cambiamos al contexto [inicio] actual el nombre por [entrada] y justo antes de
ese contexto hemos de crear de nuevo el contexto [inicio] que es donde vamos a
añadir las instrucciones para redirigir las llamadas en función del día y hora.
Hemos de tener en cuenta que tenemos que grabar las locuciones para cada uno
de los escenarios en los que nos podemos encontrar.
Primer escenario, que José Manuel Campos no esté, para lo que vamos a grabar
la locución “Si desea contactar con José Manuel Campos, le rogamos llame de
seis a diez de la tarde”. Esa locución, por supuesto, saldrá solamente cuando se
llame fuera del horario indicado. Al archivo de audio el llamaremos joseno.
Ponemos un ejemplo de como hacerlo y habría que repetirlo en el resto de
escenarios.
mv /var/lib/asterisk/sounds/locucion.gsm /var/lib/asterisk/sounds/joseno.gsm
Segundo escenario, que Miguel Guzmán no esté, para lo que vamos a grabar la
locución “Si desea contactar con Miguel Guzmán, le rogamos llame de 10 de la
mañana a 3 de la tarde”. Al archivo de audio le llamaremos miguelno.
Tercer escenario, que no haya nadie en tutoría, para lo que vamos a grabar la
locución “Si desea contactar con tutoría, le rogamos llame lunes o martes a
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 76 -
Instalación y configuración de centralita VoIP basada en asterisk
partir de las seis y media de la tarde”. Al archivo de audio le llamaremos
tutoriano.
Cuarto escenario, que haya llamado a los operadores, que será enviada a la
siguiente locución “Lamentamos comunicarle que aun no tenemos presupuesto
para poder pagar operadores, intente contactar con otra extensión”. Al archivo
de audio le llamaremos operadoresno.
Quinto escenario, que haya llamado fuera del horario en el que alguien puede
atender la llamada para lo que vamos a grabar “Ha llamado fuera de nuestro
horario de atención de consultas, le rogamos llame de Lunes a Sábado de 10 a
15 horas o de 18 a 22 horas”. Al archivo de audio le llamaremos horano.
Sexto escenario, que haya llamado en domingo que le saldría la locución “Hasta
el creador descansó el séptimo día, con lo que hoy no podemos atenderle”. Al
archivo de audio le llamaremos domingono.
Grabamos los mensajes, recordamos cambiar el nombre de cada uno de ellos
con la extensión .gsm después de cada grabación (si no se sobreescriben) y
ahora hay que integrarlos en el dialplan, poniendo el nuevo contexto [inicio] al
principio del archivo extensions.conf y el contexto [horario] al final del mismo
[inicio]
include = entrada
include = horarios
exten => s,1,Answer()
exten => s,2,Wait(3)
exten => s,3,GotoifTime(22:01-09:59|mon-sat|*|*?horario,s,13)
exten => s,4,GotoifTime(15:01-17:59|mon-sat|*|*?horario,s,13)
exten => s,5,GotoifTime(00:00-23:59|sun|*|*?horario,s,16)
Con estas instrucciones en el nuevo contexto inicio, hacemos que si alguien
llama en domingo o en horarios que no haya nadie no le de ni la opción a
seleccionar una extensión, sino que automáticamente le indique al llamante que
no se le puede atender.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 77 -
Instalación y configuración de centralita VoIP basada en asterisk
Modificamos también el contexto [entrada], al que le quitamos la instrucción
s,1,Answer() (puesto que la llamada ya está contestada en el contexto [inicio]),
y nos aseguramos que como primera linea después del include está la
instrucción
exten => s,n,Background(loc_inicio)
El no ponerle prioridad es porque va a pasar dicha prioridad desde el contexto
[inicio] continuando por el orden que llevara en dicho contexto. Así podemos
hacer todos los añadidos que queramos de horarios en [inicio] sin tener que
modificar posteriormente las prioridades de todas la líneas del contexto
[entrada].
Ahora hemos de crear el contexto [horario], que es el que realmente va a
ejecutar la orden de reproducir las diferentes locuciones. Ponemos las siguientes
instrucciones
[horario]
exten => s,1,Answer() ; comienza joseno
exten => s,2,Playback(joseno)
exten => s,3,Hangup()
exten => s,4,Answer() ; comienza miguelno
exten => s,5,Playback(miguelno)
exten => s,6,Hangup()
exten => s,7,Answer() ; comienza tutoriano
exten => s,8,Playback(tutoriano)
exten => s,9,Hangup()
exten => s,10,Answer() ; comienza operadoresno
exten => s,11,Playback(operadoresno)
exten => s,12,Hangup()
exten => s,13,Answer() ; comienza horano
exten => s,14,Playback(horano)
exten => s,15,Hangup()
exten => s,16,Answer() ; comienza domingono
exten => s,17,Playback(domingono)
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 78 -
Instalación y configuración de centralita VoIP basada en asterisk
exten => s,18,Hangup()
y por ultimo para cada una de las extensiones [100], [200], [300] y [400] vamos
a incluir una orden GotoifTime personalizada, con lo que tenemos que
modificar en el contexto salida dichas extensiones y cambiar por lo que
ponemos a continuación
exten => 100,1,GotoifTime(22:01-17:59|mon-sat|*|*?horario,s,1)
exten => 100,n,Dial(Sip/100,30,tTr)
exten => 100,n,Hangup()
exten => 200,1,GotoifTime(15:01-09:59|mon-sat|*|*?horario,s,4)
exten => 200,n,Dial(Sip/200,30,tTr)
exten => 200,n,Hangup()
exten => 300,1,GotoifTime(00:01-18:29|wed-sun|*|*?horario,s,7)
exten => 300,n,Dial(Sip/300,30,tTr)
exten => 300,n,Hangup()
exten => 400,1,GotoifTime(00:00-23:59|mon-sun|*|*?horario,s,10)
exten => 400,n,Dial(Sip/400,30,tTr)
exten => 400,n,Hangup()
Ahora podemos guardar y salir del archivo, volver a cargar el dialplan en el CLI
y comprobar si nuestras modificaciones son efectivas. Recomendamos ir
haciendo pruebas, cambiando horas, y comprobando los diferentes efectos que
esos cambios tienen sobre el funcionamiento de la centralita. Como siempre,
veamos más detenidamente las mejores jugadas del partido
exten => s,3,GotoifTime(22:01-09:59|mon-sat|*|*?horario,s,13)
Esta instrucción que hemos puesto en el contexto [inicio] hace que si el horario
en el que el llamante esta intentando contactar con nuestra centralita está entre
las diez y un minuto de la noche y las nueve y cincuenta y nueve segundos de la
mañana, de lunes a sábados, salte al contexto horario, a la prioridad 13. Aquí
vemos el posible uso de las prioridades, que nos permiten ir a puntos concretos
dentro de un contexto o extensión. Los asteriscos sirven para indicar si
queremos que esa condición horaria se ejecute solamente ciertos días del mes o
solamente ciertos meses. Un asterisco indica que no procede comprobar esa
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 79 -
Instalación y configuración de centralita VoIP basada en asterisk
opción. Para decirle por ejemplo que esa condición es para los días uno al
quince de cada mes tendríamos que poner la siguiente instrucción
exten => s,3,GotoifTime(22:01-09:59|mon-sat|1-15|*?horario,s,13)
o si por el contrario queremos que solamente revise todos los meses del año
excepto Julio y Agosto tendríamos que poner
exten=> s,3,GotoifTime(22:01-09:59|mon-sat|*|Sep-Jun?horario,s,13)
Con esta información consideramos que el lector que haya seguido el proceso
de creación de la centralita, tiene datos suficientes para poder comprender el
resto de modificaciones que hemos incluido en el dialplan y para poder realizar
sus propias modificaciones para adaptar cada extensión al horario que le sea
conveniente.
10.3 CONFIGURANDO NUEVAS POSIBILIDADES DE MARCADO
Nos hemos cortado con una hoja de papel y decidimos llamar al 061; cual es
nuestra sorpresa al comprobar que en el CLI (¿¡¡¡ como que no lo tenias abierto
en pantalla !!!?) aparece un mensaje que dice así “'061' rejected because
extension not found“. Además para más inri, el teléfono comunica. Eso es
debido a que hemos generado reglas de marcado (extensiones) para llamar a
fijos 9XXXXXXXX y a móviles 6XXXXXXXX, pero no hemos dicho nada de
los números especiales, así que en nuestro dialplan, en el contexto [salida],
vamos a añadir lo siguiente
exten => _0ZZ,1,Dial(Zap/1/${EXTEN},,r)
exten => _0ZZ,n,Hangup()
que quiere decir que si marcamos cualquier número que comience por cero y
que los dos siguientes número sean cualquiera del uno al nueve, haga el
marcado. Ni que decir tiene que Z es el comodín para todos los números menos
el cero. Esta regla nos permite llamar a 061,091, etc.
exten => _1ZZ,1,Dial(Zap/1/${EXTEN},,r)
exten => _1ZZ,n,Hangup()
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 80 -
Instalación y configuración de centralita VoIP basada en asterisk
que nos permite llamar al teléfono 112 y similares.
exten => _[89]0[0-289]XXXXXX,1,Dial(Zap/1/${EXTEN},, r)
exten => _[89]0[0-289]XXXXXX,n,Hangup()
nos permite llamar a teléfonos especiales que no sean de pago (los de pago son
803, 806, 807, 904, 905 y 907). Le estamos diciendo que el número puede tener
en su primer dígito un 8 o un 9, en el segundo dígito un 0 y en el tercero
cualquier número del 0 al 2 o los números 2489. Con esto podríamos llamar a
teléfonos 900, 901, 902 y similares. Como podemos observar cabe la
posibilidad de realizar combinaciones que restrinjan genéricamente las llamadas
a teléfonos que no nos interesan.
exten => _00.,1,Dial(Zap/1/${EXTEN},, r)
exten => _00.,n,Hangup()
con esta extensión permitimos llamadas internacionales. Le estamos diciendo
que cuando marquemos dos veces el cero, acepte cualquier otra combinación de
números que añadamos después (el comodín “punto” significa “cualquier cosa
que marques, yo lo marco”). Si sabemos que las únicas llamadas internacionales
que vamos a realizar son a República Checa, podemos restringir más el patrón
de la extensión y poner algo como _00420.,1,Dial(Zap/1/${EXTEN},, r).
Por ultimo comentar que al igual que podemos permitir, podemos denegar
explícitamente extensiones. Si por ejemplo nuestra organización se dedica a
negocios “turbios” puede ser que deseemos poder llamar al 061, pero no nos
interesa que se realicen llamadas al 091. Para ello podríamos añadir un patrón
de este tipo 091,1,Hangup(), con lo que cada vez que se marque el 091,
automáticamente la centralita nos cuelgue. Por supuesto que no vamos a
integrar esta norma en nuestro dialplan ¿o sí?. Es necesario que esta norma esté
ANTES de la norma genérica que hemos creado para los teléfonos 0NN, pues
recordamos que el dialplan es un sistema de caminos que comienza en el primer
renglón del fichero extensions.conf y va pasando por todos los contextos
incluidos, instrucción por instrucción. Si encuentra primero la extensión 0NN
marcará el 091, pero si encuentra primero la línea que específicamente tiene el
091, colgará y no llegará a evaluar la extensión 0NN. Cada vez tenemos más
herramientas para controlar nuestra centralita.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 81 -
Instalación y configuración de centralita VoIP basada en asterisk
10.4 BUZONES DE VOZ (CONTESTADOR AUTOMÁTICO) Y MENSAJES
DE AUDIO AL CORREO.
Asterisk nos permite configurar buzones de voz que permitan al llamante, si la
persona que ha de atender la extensión no puede coger el teléfono, dejar un
mensaje indicando cual es el motivo de la llamada o cualquier información que
pueda ser de utilidad para el receptor. Para poder acceder a esos mensajes,
hemos de crear nuevas reglas en nuestro dialplan y se podrían escuchar
marcando la extensión del contestador y escuchando el mensaje, como se hace
en todos los teléfonos analógicos. Una vez escuchado el mensaje tenemos
opción de dejarlo almacenado, borrarlo, ver a que hora ha sido recibido, etc.
Pero con Asterisk podemos rizar el rizo y hacer que el mensaje grabado, nos sea
enviado por correo electrónico a nuestro cliente de correo habitual y podemos
escucharlo en el ordenador con ayuda de unos auriculares o unos altavoces y
nuestro reproductor de audio favorito (Amarok, Rhythmbox, Totem, Gstreamer,
o Windows Media si no hay más remedio). Además esto nos permite almacenar
fácil y ordenadamente todos los mensajes de voz que recibamos, pudiendo
acceder a ellos con rapidez en caso de tener dudas con respecto a lo que se nos
dijo en los mismos.
Para poder realizar todas estas operaciones, lo primero que hemos de hacer es
instalar un servidor de correo electrónico en nuestra máquina Asterisk para
permitir el envío de los mensajes de voz a través de dicho servidor. Uno de los
servidores de correo electrónico mas simples de instalar y configurar es exim4
así que lo instalamos con
aptitude install exim4 mailutils
Cuando termine de instalar con la siguiente instrucción nos aparece en pantalla
el asistente de configuración
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 82 -
Instalación y configuración de centralita VoIP basada en asterisk
dpkg-reconfigure exim4-config
Vamos a dejar las opciones que vienen por defecto sin modificar y solamente
vamos a ir comentando los puntos en los que tenemos que realizar alguna
variación o interacción con el asistente... con lo que llegamos a la pantalla en la
que se nos muestra por primera vez “Configuración del servidor de correo”
en la que tenemos que seleccionar la primera opción que pone “Internet site :
el correo se envía y recibe directamente usando smtp”. En la siguiente
pantalla, donde pide “Nombre del sistema de correo” ponemos
proyectoasterisk.net o el que corresponda en la configuración de red del lector.
En las siguientes pantallas seguimos pulsando sin miedo sobre las opciones por
defecto hasta que se nos pide el “Destinatario de correo de root y
postmaster”, donde hemos de poner un usuario valido, nosotros hemos querido
que se envíe el correo a un usuario operador que hemos creado en la máquina
Asterisk con
adduser operador
Podemos hacer una prueba de funcionamiento usando la siguiente instrucción
ls -l | mail <cuenta de correo electrónico>
Ejemplo : ls -l | mail [email protected]
lo que hará que llegue un correo electrónico a la cuenta especificada con el
contenido del directorio en el que estemos posicionados. Comprobamos en el
cliente de correo que usamos habitualmente si ha llegado esta información y si
es así, tenemos completamente configurado nuestro correo y podemos pasar a
configurar los buzones de voz.
Para configurar los buzones, hemos de modificar el archivo voicemail.conf, con
lo que primero le hacemos una copia de seguridad (al igual que hemos hecho de
todos los demás archivos de configuración) para tener salvaguardada la
información que nos puede suministrar sobre cada una de las instrucciones que
lo constituyen, y después lo editamos desde cero
mv /etc/asterisk/voicemail.conf /etc/asterisk/copiavoicemail.conf
vi /etc/asterisk/voicemail.conf
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 83 -
Instalación y configuración de centralita VoIP basada en asterisk
e incluimos en el fichero las siguientes instrucciones
[general]
format = wav ; formato de grabación del audio
attach = yes ; enviar mensajes de voz por correo electrónico
maxmessage = 180
mailcmd = /usr/sbin/exim4
serveremail = [email protected]
fromstring = "Centralita Asterisk de Proyecto Asterisk"
emailsubject = [PBX] Mensaje nº ${VM_MSGNUM} en buzón de voz.
emailbody = \n\n\n***** Este es un mensaje automático de la
centralita de VoIP de *****\n PROYECTOASTERISK *****\n\n\n\n\t Tiene
un mensaje nuevo en su buzón de voz: \n Con el numero ${VM_MSGNUM}. \
n Recibido desde el numero de teléfono ${VM_CALLERID}. \n El $
{VM_DATE} . \n Dicho mensaje se adjunta a este mail, pero no obstante debe
llamar a su buzón de voz y eliminarlo tras su escucha. Si no conoce como
acceder a su buzón de voz, por favor contacte con el departamento al
cargo.\n\n\t Gracias.\n\n\t
[default]
100 => 1234,jose,[email protected]
200 => 1234,miguel,[email protected]
300 => 1234,tutoria,[email protected]
400 => 1234,operador,[email protected]
Con esto hemos creado cuatro buzones de voz independientes para cada una de
las extensiones que salen en nuestra locución de entrada, y vamos a permitir que
cuando el usuario no pueda coger el teléfono, salte automáticamente el buzón de
voz dando al llamante la posibilidad de dejar un mensaje, que será enviado al
correo electrónico que hallamos indicado en la configuración.
Vamos a estudiar detenidamente las líneas de configuración que hemos
incluido; en primer lugar
100 => 1234,jose,[email protected]
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 84 -
Instalación y configuración de centralita VoIP basada en asterisk
El 100 es una extensión que ya tenemos creada, 1234 es la contraseña que
tendremos que poner para poder acceder al buzón de voz (puede ser la misma
para todos los usuarios o ponerla a discreción de los mismos). El parámetro jose
en este caso es el nombre que se le da al buzón y por último, se pone la cuenta
de correo electrónico a la que queremos que vayan los mensajes de voz de esa
extensión.
El resto de parametros que aparecen en la sección general (y algunos que no
aparecen) tienen los siguientes usos
attach: Indica si se adjunta un archivo .wav con el contenido de la grabación
del buzón de voz en las notificaciones de correo electrónico.
delete: Indica que el mensaje de voz será borrado del servidor si es enviado por
correo electrónico.
mailcmd: Sirve para fijar la ruta del servidor de correo electrónico.
maxsilence Indica los segundos de silencio que debe detectar el servidor para
cortar la llamada al buzón. Por defecto es 0 que equivale a un tiempo infinito y
no hace caso a los silencios, parando solamente cuando el llamante cuelgue.
envelope: Si lo activamos con "yes" indicará el día y la hora en que se recibió el
mensaje.
externnotify: Sirve para ejecutar un programa externo cuando alguien deja un
mensaje.
externpass: Sirve para ejecutar un programa externo cuando alguien cambia su
contraseña del buzón.
silencetreshold: Funciona solamente si la opción maxsilence="yes" y sirve para
fijar el umbral de silencio, para ajustar “que” consideramos silencio (cuando nos
llaman puede haber ruido de fondo, pero no estar hablando nadie).
serveremail: Indica el origen de los mensajes de notificación de e-mail.
maxmessage: Indica el tiempo máximo de grabación de un mensaje.
maxmsg: Indica el numero máximo de mensajes en un buzón.
minmessage: Sirve para eliminar los mensajes que tienen menos duración que
lo indicado por este comando.
format: Indica el formato en que se guardará los mensajes e voz. Hay las
siguientes posibilidades: "wav49", "gsm" y "wav".
maxgreet Fija el tiempo máximo del mensaje de bienvenida que pueden
configurar los usuarios.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 85 -
Instalación y configuración de centralita VoIP basada en asterisk
maxlogins: Numero máximo de intentos fallidos al buzón de voz (por si alguien
intenta escuchar nuestro buzón sin saber la contraseña).
cdinternalcontexts: Distingue si los contextos son internos o externos (si el
llamante es una extensión o sin embargo es un número de teléfono ajeno a la
centralita).
promiscredir: Permite soportar redirecciones 302. Por defecto "no".
review: Por defecto es "no". Si lo pusiéramos a "yes" el usuario que deja el
mensaje podría revisarlo antes de salvarlo y dejarlo en el buzón.
operator: Permite marcar una extensión cuando ha saltado el buzón de voz.
saycid: Si lo ponemos a "yes" nos informará del número que llamó antes de
repetir el mensaje.
fromstring: Establece el from (desde) del mensaje de aviso de correo.
emailsubject: Establece el asunto del mensaje de aviso de correo.
emailbody: Establece el cuerpo del mensaje de aviso de correo.
nextaftercmd: Reproduce el siguiente mensaje automáticamente cuando se
borra el anterior
y ya tenemos un poco más claro como podemos gestionar la configuración de
los buzones de voz. Mas... ¿como los integramos en nuestro dialplan? Muy
sencillo, hemos de editar
vi /etc/asterisk/extensions.conf
y añadir al final del archivo un nuevo contexto con las siguientes instrucciones
[buzondevoz]
exten => 12345,1,VoicemailMain(${CALLERIDNUM})
exten => 12345,2,Hangup()
Esto hace que cuando desde cualquiera de las extensiones marquemos el
número de teléfono 12345 Asterisk comprobará cual es la extensión que realiza
la petición (accediendo a la variable del sistema CALLERIDNUM) y le dará
acceso al sistema de buzón de voz para poder escuchar los mensajes grabados.
Nos va tocando hacer pruebas, pero antes será mejora que integremos con un
include el contexto [buzondevoz] en el contexto [salida], puesto que si no lo
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 86 -
Instalación y configuración de centralita VoIP basada en asterisk
hacemos, por mucho que se marque el 12345, “va a ser que no”.
Si hemos hecho todo lo anterior y recargamos el dialplan podemos hacer la
primera prueba. Dejamos el CLI en pantalla para observar como afectan
nuestras actuaciones a la centralita. En primer lugar marcamos el 12345 desde
cualquiera de las extensiones y sale una voz solicitando el número de extensión
del que deseamos acceder a su buzón de voz, indicamos en nuestro caso el 100
y posteriormente nos pide la contraseña (que tenemos definida como 1234).
Eso nos va metiendo en una serie de submenus telefónicos, mediante sucesivas
locuciones, que nos permiten gestionar el buzón. Es interesante el fijarse en los
nombres de los ficheros de audio que se van reproduciendo en el CLI, puesto
que podríamos sencillamente grabando un mensaje personalizado con nuestra
voz y sobreescribiendo el archivo que aparece en el CLI por el nuestro, el
conseguir un buzón de voz totalmente personalizado. Nosotros no lo hemos
hecho, porque en principio pensamos usar principalmente el método de correos
electrónicos, con los que no hace falta acceder para nada al sistema
automatizado de buzón de voz.
Ahora vamos a decidir cuando tiene que “saltar” el buzón de voz. Eso lo
hacemos volviendo a editar extensions.conf y modificar las extensiones [100]
[200][300] y [400] añadiendo en las mismas la siguiente instrucción
exten => 100,n,Voicemail,100
justo antes de la instrucción que contiene el colgado (Hangup). Así antes de
colgar, se pide al llamante si desea grabar un mensaje. En el caso de ser la
extensión [200] o sucesivas, creo evidente cual sería la instrucción a insertar.
Volvemos a recargar el dialplan y realizamos la prueba de llamar a las
extensiones. Como tenemos configurado que nuestras extensiones suenen
durante 30 segundo tendremos que esperar ese tiempo a que salte el contestador
que nos indicará que dejemos un mensaje después de oír la señal. Dejamos un
mensaje y, como las balas, abrimos nuestro cliente de correo electrónico para
ver si tenemos un flamante y maravilloso archivo .wav con el mensaje que
hemos dejado.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 87 -
Instalación y configuración de centralita VoIP basada en asterisk
10.5 GRABACIÓN DE CONVERSACIONES Y LEY DE PROTECCIÓN DE
DATOS.
Una de las cosas que hemos visto muy interesantes es la posibilidad de grabar
todas o parte de las conversaciones que gestiona Asterisk. Eso supone una
herramienta de control y gestión de personal extremadamente potente. Un
supervisor puede asegurarse que los componentes de su equipo están siguiendo
las directrices de atención telefónica que su organización a estipulado. Claro
que esto entra en claro conflicto que la ley de protección de datos, que
expresamente penaliza las grabaciones digitales sin el consentimiento de la
persona grabada. Es por lo que en el caso de que quisiéramos legalmente grabar
las conversaciones, en la locución de acceso tendríamos que añadir una locución
extra indicando “Su mensaje puede ser grabado para la gestión de calidad, en
caso de no desear ser grabado, indíquelo a la persona que le atienda”. Con esto
estaríamos cumpliendo la ley. En todo caso, cumpliendo o no la ley, es una
herramienta más de nuestra centralita y vamos a ver el modo de hacerlo. En
primer lugar podemos hacer grabaciones puntuales. Eso significa que la persona
que atiende la llamada puede decidir grabar la conversación en un momento
dado, para lo que primero tendremos que haber habilitado la función de
grabación en el extensions.conf para esa extensión y en segundo lugar el
operador de la extensión a de pulsar *1 con lo que hace que a partir de ese
momento la conversación se grabe en el directorio /var/spool/asterisk/monitor.
Para habilitar la grabación en la linea de la extensión en el extensions.conf
habría que añadir w en los parametros de la misma
exten => 100,n,Dial(Sip/100,30,tTrw)
Pero si lo que deseamos es grabar todo lo que pasa por una extensión, podemos
añadir estas instrucciones a la extensión o extensiones que deseemos grabar de
manera constante. Estas lineas tienen que ponerse al principio de la extensión,
para que antes incluso de que se descuelgue el teléfono, el sistema ya esté en
disposición de comenzar la grabación
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 88 -
Instalación y configuración de centralita VoIP basada en asterisk
exten => 100,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--
%H-%M-%S--)})
exten => 100,2,MixMonitor(ENTRADA-${horadellamada}-$
{CALLERID(num)}-${EXTEN}.wav)
y a continuación las líneas que normalmente hemos tenido operativas para usar
la extensión. Explicamos que hacen exactamente estas instrucciones
exten => 100,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--
%H-%M-%S--)})
indica que las llamadas entrantes en la extensión [100] almacenaran una
variable llamada horadellamada (eso es una variable de usuario creada por
nosotros, por si no se ha notado). Esa variable contendrá el día, mes, año, hora,
minuto y segundo de inicio de la llamada en formato texto para poder usarlo
junto con más parametros en la confección de un nombre de archivo en el que se
almacenará la grabación.
exten => 100,2,MixMonitor(ENTRADA-${horadellamada}-$
{CALLERID(num)}-${EXTEN}.wav)
indica que se almacenara en el directorio por defecto de grabaciones, que como
hemos indicado antes es /var/spool/asterisk/monitor, un archivo cuyo nombre
será ENTRADA seguido de un guión, seguido de la variable que hemos
almacenado anteriormente con el dia y hora de la llamada, seguido de otro
guión, seguido del número de la persona que ha llamado que está almacenado
en la variable de sistema CALLERID (el poner num entre paréntesis es para
indicar que solamente se aceptará para esa variable un parámetro
numérico),seguido de un guión, seguido del número de extensión que ha
recibido la llamada (almacenado en la variable de sistema EXTEN), seguido por
ultimo de la extensión .wav que nos deja finalmente un nombre de archivo que
permite identificar con facilidad las grabaciones, un ejemplo de nombre de
archivo generado es este : ENTRADA-08-06-08—
21-58-08---953121212-200.wav
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 89 -
Instalación y configuración de centralita VoIP basada en asterisk
10.6 INSTALACIÓN DE HYLAFAX, SERVIDOR DE GESTIÓN DE FAX.
Uno de los puntos de mayor complejidad a la hora de configurar la centralita es
la gestión de fax. Una vez configurada, nos permitirá enviar faxes desde los
terminales informáticos de la empresa, sencillamente indicando que el
documento que hemos de enviar lo queremos imprimir al fax, momento en que
se nos solicitará el número de teléfono al que deseamos remitir dicho fax y
Asterisk se encargará de todo. También estará Asterisk atento a todas las
llamadas entrantes para asegurarse de si se identifican o no como una llamada
de fax, para en el caso de que lo hagan, gestionarlas y remitirlas a una extensión
donde hayamos conectado un fax físico, o si lo deseamos, a una cuenta de
correo electrónico desde la que podremos revisar e imprimir si nos interesa el
contenido de dicho fax. Para la gestión de fax vamos a usar el servidor hylafax
y para instalarlo, tendremos que usar
aptitude install hylafax-server
Una vez instalado, ejecutamos la orden faxsetup que crea una configuración
inicial almacenando la configuración en dos directorios. Ambos directorios
contienen la misma información, aunque nosotros hemos de modificar archivos
únicamente en uno de ellos. Cuando el servidor hylafax se reinicia,
automáticamente copia los ficheros de configuración del directorio donde los
modificamos al directorio para su uso “personal”. Esos directorios son
/etc/hylafax, que es donde haremos las modificaciones y /var/spool/hylafax/etc
que es donde estará almacenado el duplicado que usa el servidor. En el
directorio /etc/hylafax podremos encontrar los ficheros que detallamos a
continuación
/etc/hylafax/hfaxd.conf
Este es el archivo de configuración del demonio del servidor hylafax y en el se
definen donde están los ficheros de configuración adicionales. Raramente hay
que modificar los parametros que contiene, pero lo indicamos por si en un caso
excepcional es necesario para alguna configuración compleja.
/etc/hylafax/hyla.conf
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 90 -
Instalación y configuración de centralita VoIP basada en asterisk
Parámetros de configuración del los clientes para que puedan enviar fax desde
el servidor mediante sendfax.
/etc/hylafax/config
Configuración general de hylafax para el sistema local. Se puede especificar en
este archivo como llamará el servidor de fax a los diferentes números de
teléfono (incluyendo como distinguir llamadas internacionales de locales). Se
puede también configurar la gestión de archivos log (archivos que contienen
información de todo lo que va haciendo el servidor de fax), el número máximo
de trabajos concurrentes, tamaño máximo de la página del fax, si se desea
página informativa añadida automáticamente al fax enviado con los datos de la
organización, y por ultimo, pero no menos importante, el número máximo de
intentos que realizará el servidor a un número de fax dado antes de indicarnos
que no puede enviar el fax.
/etc/hylafax/hosts.hfaxd
Este archivo especifica los equipos y usuarios a los que se les permite acceder a
los servicios de fax, por medio del proceso hfaxd. Podemos añadir y quitar
usuarios de fax sin necesidad de editar el fichero ejecutando en la línea de
comandos del sistema las instrucciones faxadduser y faxdeluser seguidas del
nombre del usuario.
/var/spool/hylafax/info
Directorio con información de las máquinas receptoras a las que ya se ha
enviado algún fax.
/var/spool/hylafax/docq
Directorio donde hylafax almacena todos los documentos enviados.
10.7 CONFIGURACIÓN DE HYLAFAX PARA UTILIZAR MODEM
VIRTUAL DE ASTERISK.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 91 -
Instalación y configuración de centralita VoIP basada en asterisk
En primer lugar hemos de crear una nueva extensión para la recepción de fax.
Vamos añadir para ello en el fichero
vi /etc/asterisk/iax.conf
las instrucciones necesarias para añadir la extensión [777] (nuestra flamante
nueva extensión para fax)
[777]
username = 777
type = friend
secret = 777
qualify = yes
notransfer = yes
host = dynamic
context = fax
callerid = “Fax” <777>
allow = all
modificamos el archivo
vi /etc/asterisk/zapata.conf
añadiendo la instrucción
faxdetect = both ; permite envío y recepción de fax
modificamos por fin nuestro dialplan agregando en el archivo extensions.conf,
al final del contexto [inicio]
exten => fax,1,Goto(fax,777,1)
y agregamos en el contesto inicio un include = fax.
Ahora creamos el contexto de fax. Esto lo podemos poner al final del
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 92 -
Instalación y configuración de centralita VoIP basada en asterisk
extensions.conf donde nos parezca conveniente, recordando que al final del
dialplan han de estar las extensiones a las que demos menos uso. La extensión
quedaría así
[fax]
exten => 777,1,Answer()
exten => 777,n,Dial(IAX2/777)
exten => 777,n,Hangup()
y para comprobar que todo esta correcto, en la línea de comandos del sistema
ejecutamos la instrucción
iaxmodem ttyIAX
que nos mostrará unas lineas de registro del servicio (con algunos errores, eso es
normal, no hay que asustarse), y que finalmente aparecerá un mensaje
“Registration completed successfully” a lo que seguidamente en el CLI
ejecutamos la instrucción iax2 show peers like 777 que nos responde con un
mensaje como el siguiente
Name Host Mask Port Status
777/777 127.0.0.1 (D) 255.255.255.255 45699 OK (2 ms)
lo que nos indica que todo está preparado para poder recibir fax correctamente.
Solo nos falta hacer que el proceso faxgetty esté constantemente a la escucha de
los posibles fax entrantes. Para ello hemos de añadir en el archivo
vi /etc/inittab
justo al principio del fichero tras las dos primeras lineas de descripción del
archivo, las dos instrucciones que indicamos a continuación
iax:2345:respawn:/usr/local/bin/iaxmodem ttyIAX &>
/var/log/asterisk/iaxmodem-ttyIAX
fax:2345:respawn:/usr/local/sbin/faxgetty ttyIAX
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 93 -
Instalación y configuración de centralita VoIP basada en asterisk
tras lo que grabamos, salimos y reiniciamos nuestra máquina Asterisk para que
cargue el proceso correspondiente.
Aquí viene la complicación, pues hemos de buscar a alguien que tenga
posibilidad de enviar fax para que haga unos intentos y veamos el resultado de
nuestros esfuerzos.
Podemos mandar un fax de prueba con la instrucción
sendfax -n -d <número de fax> /etc/hylafax/faxcover.ps
(o cualquier otro archivo .ps que tengamos)
Cuando nos envíen un fax, comprobamos si dicho fax aparece en
/var/spool/hylafax/recvq (estará en formato TIFF o PDF).
Si no entran los fax o no se envían correctamente, podemos intentar comprender
donde esta el problema echando un vistazo al archivo /var/log/messages. Para
ver el estado del sistema de fax usaremos faxstat y para ver la cola de fax
pendientes de envío usaremos faxstat -s.
10.8 RECEPCIÓN DE FAX EN EL CORREO ELECTRÓNICO.
Hemos de crear un fichero de configuración nuevo mediante la instrucción
vi /etc/hylafax/FaxDispatch
que contenga los siguientes comandos
FILETYPE=pdf;
Añadimos al final del fichero
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 94 -
Instalación y configuración de centralita VoIP basada en asterisk
vi /etc/aliases
FAXMASTER: [email protected]
Por ultimo solo nos queda editar el fichero
vi /etc/hylafax/FaxNotify
y añadir
NOTIFY_FAXMASTER=yes;
RETURNFILETYPE=pdf;
Con esto deberíamos de recibir en el correo electrónico que hemos indicado en
la configuración tanto los fax entrantes en ficheros adjuntos a una notificación
informativa de cual ha sido el número de teléfono que nos ha remitido dicho
fax, como una confirmación de que los fax que estamos enviando, funcionan
correctamente.
10.9 INTEGRAR CDR ASTERISK. GESTIÓN DE BASE DE DATOS.
Una de las funciones más llamativas de Asterisk, es la posibilidad de gestión
mediante bases de datos de toda la información obtenida de las llamadas que
pasan a través del servidor. Es una maravilla que hay que ver para creer, así que
aptitude install mysql-server apache2 php5 php5-mysql php5-pd
Una vez instalado el servidor web y el servidor de base de datos entramos en la
línea de comando del gestor de base de datos con la instrucción mysql y vamos
introduciendo los siguientes comandos
CREATE DATABASE asterisk;
GRANT INSERT ON asterisk.* TO asterisk@localhost IDENTIFIED BY
'password'
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 95 -
Instalación y configuración de centralita VoIP basada en asterisk
donde password lo sustituimos por la contraseña de root que tengamos en la
máquina Asterisk. Seguimos introduciendo instrucciones
USE asterisk;
CREATE TABLE cdr (calldate datetime NOT NULL default '0000-00-00
00:00:00',clid varchar(80) NOT NULL default '',src varchar(80) NOT NULL
default '',dst varchar(80) NOT NULL default '',dcontext varchar(80) NOT
NULL default '',channel varchar(80) NOT NULL default '',dstchannel
varchar(80) NOT NULL default '',lastapp varchar(80) NOT NULL default
'',lastdata varchar(80) NOT NULL default '',duration int(11) NOT NULL
default '0',billsec int(11) NOT NULL default '0',disposition varchar(45) NOT
NULL default '',amaflags int(11) NOT NULL default '0',accountcode
varchar(20) NOT NULL default '',userfield varchar(255) NOT NULL default
'');
ALTER TABLE cdr ADD INDEX (calldate);
ALTER TABLE cdr ADD INDEX (dst);
ALTER TABLE cdr ADD INDEX (accountcode);
Y modificamos los ficheros de asterisk para la base de datos
vi /etc/asterisk/cdr_mysql.conf
que nos aseguramos que contenga las instrucciones que indicamos a
continuación
[global]
hostname=localhost
dbname=asterisk
password=
user=root
editamos
vi /etc/asterisk/res_mysql.conf
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 96 -
Instalación y configuración de centralita VoIP basada en asterisk
asegurándonos que contenga
[general]
dbhost = 127.0.0.1
dbname = asterisk
dbtable= cdr
dbuser = root
dbpass =
dbport = 3306
dbsock = /tmp/mysql.sock
Descargamos asterisk-stat que contiene una página web en PHP que permite
visualizar los datos que asterisk almacena en la base de datos, para que funcione
nos vamos a
cd /var/www
descargamos y descomprimimos el siguiente archivo, con lo que se nos crea una
carpeta llamada asterisk-stat-v2
wget http://areski.net/asterisk-stat-v2/asterisk-stat-v2_0_1.tar.gz
tar -zxvf asterisk-stat-v2_0_1.tar.gz
modificamos el fichero
vi /var/www/asterisk-stat-v2/lib/defines.php
y comprobamos que en el principio del fichero las instrucciones que
presentamos a continuación existen y con los parámetros que indicamos
define ("WEBROOT", "http://localhost/asterisk-stat/");
define ("FSROOT", "/var/www/html/HTTP2/Asterisk/asterisk-stat-v2/");
define ("LIBDIR", FSROOT."lib/");
define ("HOST", "localhost");
define ("PORT", "3306");
define ("USER", "root");
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 97 -
Instalación y configuración de centralita VoIP basada en asterisk
define ("PASS", "");
define ("DBNAME", "asterisk");
define ("DB_TYPE", "mysql");
define ("DB_TABLENAME", "cdr");
y finalmente, aleluya, para poder ver las estadísticas de nuestra centralita desde
un cliente WEB, solamente tendríamos que escribir en la barra de direcciones
http://172.16.0.211/asterisk-stat-v2/cdr.php
La página de estadísticas tiene múltiples opciones que dejamos en manos del
lector el explorar. Además es totalmente modificable para alguien con
conocimientos de PHP (de echo la página que descargas está en ingles y
nosotros la hemos traducido al castellano). Se pueden añadir nuevas estadísticas
y funcionalidades que puedan ser útiles en nuestra organización.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 98 -
Instalación y configuración de centralita VoIP basada en asterisk
RESULTADOS
Durante la gestación del proyecto y su posterior desarrollo, hemos tenido que leer
cantidades ingentes de documentación. Esencialmente páginas web, foros y manuales en linea.
Esas lecturas han conseguido principalmente dos cosas; por un lado que hayamos obtenido el
resultado esperado, esto es, una centralita plenamente operativa con unas funciones que superan a
las centralitas de gama media-alta que venden o alquilan las operadoras de telefonía, y por un
precio extremadamente inferior. Pero por otro lado, una vez el proyecto estaba maduro, y pasada
la fase de pruebas iniciales, gracias a seguir extrayendo información de internet, nos dimos cuenta
que muchas cosas que habíamos hecho de manera manual durante los procesos de instalación se
podían automatizar, haciendo más sencilla la creación e instalación de nuevas máquinas virtuales.
Eso nos animó a pensar “¿por que no crear más máquinas virtuales que provean de más servicios
al servidor”? También, en nuestro afán porque nuestro servidor fuese lo más seguro y escalable
dentro de lo posible, vimos que existe un sistema de archivos llamado LVM extremadamente
flexible que provee ciertas funciones interesantes.
Planteamos en aras de las seguridad el añadirle un firewall al servidor (un corta fuegos –
herramienta software para intentar evitar intrusiones o ataques a ordenadores) para lo que
encontramos Shorewall y para que todo ello funcionara correctamente nos vimos en la necesidad
de usar un servidor DHCP (que asigna direcciones IP automáticamente), un servidor SAMBA
(que permite compartir archivos entre diferentes sistemas operativos) y hemos querido que tanto
esfuerzo, se salvaguarde cada poco tiempo, para lo que hemos generado un sistema de copias de
seguridad automatizado mediante CRON (un gestor de ejecución de tareas de Debian). El
resultado es que tenemos un pequeño proyecto secundario en el que explicamos las mejoras que
hemos encontrado y con esas mejoras hemos generado las instrucciones de creación de una nueva
máquina virtual que engloba todas las funciones que, por desconocimiento, en un principio no
teníamos previsto incluir en nuestro servidor de centralita Asterisk. He aquí el resultado :
1 CREACIÓN DE MAQUINA VIRTUAL CON SOPORTE LVM, SERVIDOR DE
FICHEROS, SERVIDOR DNS, FIREWALL Y COPIAS DE SEGURIDAD CON
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 99 -
Instalación y configuración de centralita VoIP basada en asterisk
CRON.
Una vez creada la primera máquina virtual nos planteamos crear otra que nos sirva de
cortafuegos, copias de seguridad servidor de nombres (DNS) y ficheros (vamos a
centralizar toda la información de la red en esta máquina que hará las veces de servidor
de enlace entre redes).
El primer problemas que se nos plantea es en el tema de la generación de datos, pues
como nuestro sistema esta en maquinas virtuales de tamaño fijo, llegará un momento en
que debido a los datos generados por el uso de la centralita (mensajes de voz archivados,
faxes, datos del CDR), nos quedaremos sin espacio en el disco duro. Para solucionar esto
utilizaremos volúmenes lógicos a la hora de crear las imágenes de las maquinas virtuales.
El segundo problema a resolver es el como configurar nuestro sistema para que todo el
trafico que pase desde internet a nuestra intranet pase por esta maquina y proteja tanto
nuestros datos como toda nuestra red de Internet. Para esto le instalaremos a nuestro
sistema una tarjeta de red extra que conectaremos directamente a Internet y
configuraremos nuestro sistema Xen para que la máquina virtual administre esta tarjeta
directamente, al igual que hicimos con la tarjeta de comunicaciones Asterisk, y así poder
ejercer las funciones de router en nuestra intranet.
1.1 DEFINICIÓN Y CARACTERISTICAS DE LVM:
LVM es una implementación de un administrador de volúmenes lógicos para el
kernel Linux.
LVM incluye muchas de las características que podemos esperar de un administrador
de volúmenes, incluyendo:
- Redimensionado de grupos lógicos
- Redimensionado de volúmenes lógicos
- Instantáneas de sólo lectura (LVM2 ofrece lectura y escritura)
- RAID0 de volúmenes lógicos (unir varios discos duros como uno)
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 100 -
Instalación y configuración de centralita VoIP basada en asterisk
LVM no implementa RAID1 o RAID5, por lo que se recomienda usar software
específico de RAID para estas operaciones, teniendo las LV por encima del RAID.
En la imagen de la derecha
podemos observar cómo
trabaja LVM. Los volúmenes
lógicos agrupan particiones
físicas de disco, y éstos a su
vez, aunque no está
representado en la figura, se
engloban en un grupo lógico.
De esta forma, /home se
compone de hda3, hda4 y
hdb3, y a su vez, /usr engloba
a hda1, hda2, hdb1 y hdb2.
1.1.1 Ventajas de usar LVM :
- La gestión de volúmenes lógicos proporciona una vista de alto nivel sobre el
almacenamiento en un ordenador, en vez de la tradicional vista de discos y
particiones.
- Los volúmenes de almacenamiento bajo el control de LVM pueden ser
redimensionados y movidos a voluntad, aunque esto quizá necesite actualizar las
herramientas del sistema.
- LVM también permite la administración en grupos definidos por el usuario,
permitiendo al administrador del sistema tratar con volúmenes llamados, por
ejemplo, "ventas" o "desarrollo", en vez de nombres de dispositivos físicos,
como "sda" o "sdb".
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 101 -
Instalación y configuración de centralita VoIP basada en asterisk
1.1.2 Anatomía de un LVM :
Un volumen LVM se descompone en tres partes:
1.1.2.1 Volúmenes físicos (PV): son los discos duros, particiones o cualquier
otra "cosa" que parezca un disco duro (como por ejemplo los RAID).
1.1.2.2 Volúmenes lógicos (LV): es el equivalente a una partición en un
sistema tradicional. El LV es visible como un dispositivo estándar de
bloques, por lo que puede contener un sistema de archivos (por ejemplo
/home).
1.1.2.3 Grupos de volúmenes (VG): es la parte superior de la LVM. Es la
"caja" en la que tenemos nuestros volúmenes lógicos (LV) y nuestros
volúmenes físicos (PV). Se puede ver como una unidad administrativa en la
que se engloban nuestros recursos. Hay que hacer notar que mientras un PV
no se añada al VG, no podemos comenzar a usarlo.
A su vez, un PV se divide en “chunks” de datos, que se conocen como PE
(acrónimo de physical extents – medidas físicas), que son del mismo tamaño
que los PE del VG. Además, un LV se divide también en LE (logical extents),
cuyo tamaño es el mismo para todos los LV del VG.
Por ejemplo, teniendo como referencia la imagen del comienzo del artículo,
supongamos que tenemos un VG llamado CASA, con 4MB de PE, al que
queremos añadir un LV para /tmp/. Añadimos dos particiones de disco,
/dev/sda4 y /dev/sdb3, que se llamarán PV1 y PV2 (se las puede renombrar a
discreción del usuario). Los PV pueden ser de distinto tamaño y por lo tanto,
tendrán un número distinto de PE, por lo que supongamos que tenemos para
PV1 99 PE y para PV2 248 PE. Ahora, podemos crear el LV que necesitamos,
que puede ser de cualquier tamaño entre 1 y 347 (99+248) PE. De esta forma se
crea una tabla que relaciona los PE y los LE y si, por ejemplo, escribimos 4 MB
en el LE número 1 del LV, se corresponderán con el PE 51 de la PV1.
1.1.3 Instantáneas (copias de seguridad) : Las instantáneas (snapshots) permiten al
administrador crear un nuevo dispositivo que será una copia exacta del LV,
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 102 -
Instalación y configuración de centralita VoIP basada en asterisk
congelada en algún punto del tiempo. Normalmente esto se realiza de forma
automática, para no alterar el funcionamiento normal del sistema. Cuando la
instantánea ha terminado, el administrador puede quitar el dispositivo sin mayor
complicación. Además, no es necesario que los datos en el LV se encuentren en
un estado consistente, ya que muchos sistemas de ficheros en el kernel 2.6 lo
realizan de forma automática. Una diferencia importante entre la versión 1 de
LVM (LVM1 a partir de ahora) y la versión 2 (LVM2) es que en la primera, los
snapshots eran de sólo lectura, mientras que en LVM2 son de lectura y escritura.
¿Cuál es la diferencia? En LVM1, se crea lo que se llama una tabla de
excepciones, que se usa para mantener una lista de qué bloques en disco han
cambiado. Si un bloque va a ser modificado en el origen, primero se copia en la
instantánea, se marca como copiado en la tabla de excepciones y luego los
nuevos datos se copian al volumen original. En LVM2, las instantáneas
funcionan como en LVM1, pero con la característica de que si los datos se
escriben en el snapshot (una vez montado), ese bloque se marca como usado en
la tabla de excepciones y no se copia al volumen original. Esta característica es
muy útil debido a que podemos crear nuestra instantánea, montarla y probar un
programa o un nuevo navegador de ficheros. Si ocurre algo desastroso, la
desmontamos, la borramos y volvemos a colocar el volumen original.
1.2 EMPEZAMOS LA INSTALACIÓN.
Preparamos nuestro sistema, necesitamos una partición vacía o bien un disco duro,
para esto vamos a utilizar un HD de 320 GB.
Primero tendremos que particionar el disco duro. Utilizaremos el comando fdisk
(fdisk /dev/hdb) creamos una partición nuevo con la opción “n” , le cambiamos el
tipo con la opción “t” y elegimos el tipo de partición Linux LVM. Para escribir los
datos en el disco duro y salir pulsamos “w”.
fdisk /dev//hdb
El número de cilindros para este disco está establecido en 38913
No hay nada malo en ello, pero es mayor que 1024, y en algunos casos
podría causar problemas con:
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 103 -
Instalación y configuración de centralita VoIP basada en asterisk
1) software que funciona en el inicio (ejemplo versiones antiguas de LILO)
2) software de arranque o particionamiento de otros sistemas operativos
(ejemplo FDISK de DOS, FDISK de OS/2)
Orden (m para obtener ayuda): p
Disco /dev//hdb: 320.0 GB, 320072933376 bytes
255 cabezas, 63 sectores/pista, 38913 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Dispositivo Inicio Comienzo Fin Bloques Id Sistema
/dev//hdb1 1 38913 312568641 8e Linux LVM
Inicializamos la partición y creamos el volumen físico (PV), es decir
pvcreate /dev/hdb1
Vemos el resultado con pvdisplay:
--- Physical volume ---
PV Name /dev/hdb1
VG Name vg
PV Size 298,09 GB / not usable 0
Allocatable yes
PE Size (Kbyte) 4096
Total PE 76310
Free PE 60424
Allocated PE 15886
PV UUID yeOwtx-Bt1Z-Q43X-cu3k-lM7z-Rwik-VcMH49
Ahora nos disponemos a crear un grupo de volumen (VG) llamado también vg
vgcreate vg /dev/sdb1
que comprobamos también con vgdisplay, obteniendo
--- Volume group ---
VG Name vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 28
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 104 -
Instalación y configuración de centralita VoIP basada en asterisk
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 10
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 298,09 GB
PE Size 4,00 MB
Total PE 76310
Alloc PE / Size 15886 / 62,05 GB
Free PE / Size 60424 / 236,03 GB
VG UUID 9P10qW-d6GW-tZnC-RWGC-E1fZ-poEs-pFhCsx
Una vez hecho esto ya solo nos queda crear nuestra maquina virtual con soporte para
LVM. Para ello instalamos un paquete para creación de maquinas virtuales que
provee una forma más rápida que la descrita durante el proceso de instalación del
servidor Asterisk
aptitude install xen-tools
modificaremos el fichero
vi /etc/xen-tools/xen-tools.conf
para que quede con las siguientes instrucciones
#dir = /data/xenmachines/
lvm = vg # Nombre del volumen lvm
debootstrap = 1
size = 4Gb # Tamaño que tomara en un principio
memory = 128Mb # Memoria RAM reservada para esta maquina virtual
swap = 128Mb # Tamaño de la partición Swap # noswap = 1
fs = ext3 # El sistema de ficheros que vamos a usar es ext3
dist = etch # Distribución a instalar por defecto
image = sparse
gateway = 172.16.0.1
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 105 -
Instalación y configuración de centralita VoIP basada en asterisk
netmask = 255.255.255.0
kernel = /boot/vmlinuz-2.6.18-6-xen-amd64 # o la que estemos usando
initrd = /boot/initrd.img-2.6.18-6-xen-amd64 # o la que estemos usando
Una vez hecho esto ya podemos crear todas las imágenes que queramos con el
comando:
xen-create-image --hostname <nombre> --ip <ip de la maquina>
Ejemplo: xen-create-image --hostname intranet --ip 172.16.0.212
Con este comando creamos directamente la maquina y con una Debian instalada.
Este proceso tardara algo pues la instalación de la Debian en esta maquina virtual la
hace desde internet con debootstrap (utilizado en la creación de la maquina Asterisk).
Y arrancamos la maquina con:
xm create -c /etc/xen/intranet.cfg
Con esto ya tenemos creada nuestra maquina virtual con un tamaño fijo de 4 Gb y
nos disponemos a probar como funciona eso del LVM.
1.3 PRUEBAS CON LVM.
1.3.1 Eliminando un LV.
Supongamos que no deseamos, por el motivo que sea, seguir usando el LV
llamado intranet y deseamos eliminarlo para disponer de ese espacio para otros
usos. Lo hacemos con :
lvremove /dev/vg/intranet
1.3.2 Extendiendo un LV.
Supongamos que por el contrario en lugar de eliminar un LV queremos añadirle
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 106 -
Instalación y configuración de centralita VoIP basada en asterisk
5GB de capacidad, para ello tendríamos que usar las instrucciones
lvextend-L+5G /dev/vg/intranet ; extiende el LV en +X cantidad de espacio
e2fsck -f /dev/vg/intranet ; examina la partición antes de tocarla
resize2fs /dev/disk/intranet ; realiza el cambio definitivo de tamaño
1.3.3 Reduciendo un LV.
Veamos el caso contrario, pensemos que queremos reducir intranet, le
quitaremos 5GB, el proceso es parecido al anterior:
e2fschk -f /dev/vg/intranet
resize2fs /dev/vg/intranet 35G
lvreduce -L-5G /dev/vg/intranet
Esto consigue que
1- revisamos el sistema de archivos (FS) ext3
2- reducimos el tamaño del FS ext3 (aquí sí hay que saber a cuánto reducirlo)
3- reducimos el tamaño del LV intranet, si te fijas usamos -L-5G aunque
también podíamos haber usado -L35G para indicarle el valor al que lo
reducimos.
Con esto nos basta para reducir el tamaño en 5GB.
1.3.4 Removiendo un PV.
Supongamos que un PV nuestro lo queremos sacar. Puede ser porque hemos
agregado un nuevo PV anteriormente que es muy grande y ya este PV viejo nos
queda pequeño y nos molesta su pírrica presencia, queremos por tanto eliminar
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 107 -
Instalación y configuración de centralita VoIP basada en asterisk
el disco con
pvmove /dev/hdb1
Este proceso puede durar mucho tiempo, puesto que pvmove saca la
información que tenga guardada y la almacena en los otros PV, esto sin alterar el
esquema de los LV. Por supuesto que la suma de capacidad disponible en los
otros PV debe ser mayor o igual a la cantidad de información que se esté
moviendo. Al finalizar de mover el PV, lo podemos eliminar del VG con:
vgreduce vg /dev/hdb1
1.4 CONCLUSIÓN
Una vez hechas todas las comprobaciones podemos asegurar que por muchas
maquinas virtuales que creemos o por mucho información que vayamos a guardar en
nuestro servidor de ficheros y copias de seguridad, vamos a poder en todo momento
administrar la capacidad de disco duro pudiendo disminuir el tamaño de una maquina
virtual que en un principio la creamos demasiado grande y poder dárselo a otra
maquina virtual que realmente lo necesite.
Si por el contrario ya hemos llenado toda la capacidad del disco duro se puede añadir
otro mas (en cualquier momento) aumentando el tamaño del primero. Parecido a un
RAID 0. La diferencia con este radica en que el RAID0 hace una escritura en
paralelo con lo que es mucho mas rápido que el LVM pero no permite hacer las
maravillas (en el aspecto de posibilidades de gestión del LVM.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 108 -
Instalación y configuración de centralita VoIP basada en asterisk
2 DEFINICIÓN Y CARACTERÍSTICAS DEL FIREWALL (SHOREWALL +
IPTABLES).
Shorewall (Shoreline Firewall) es una robusta herramienta de alto nivel para la
configuración de cortafuegos. Shorewall solo necesita que se le proporcionen algunos
datos en algunos ficheros de texto simple y éste creará las reglas de cortafuegos
correspondientes a través de Iptables. Shorewall puede permitir utilizar un sistema como
cortafuegos dedicado, permitiendo múltiples funciones como puerta de enlace,
dispositivo de encaminamiento (router) y servidor de servicios de red.
Iptables es el nombre de la herramienta de espacio de usuario (User Space, es decir, área
de memoria donde todas las aplicaciones, en modo de usuario, pueden ser intercambiadas
hacia memoria virtual cuando sea necesario) a través de la cual los administradores de
sistemas crean reglas para cada filtrado de paquetes y módulos de NAT. Iptables es la
herramienta estándar de todas las distribuciones modernas de GNU/Linux.
2.1 INSTALACIÓN DEL FIREWALL.
Primero le instalamos a nuestro sistema una tarjeta de red secundaria conectada
directamente al dispositivo que nos suministra servicios de internet (router adsl ,
cable módem, etc) y configuramos (al igual que hicimos con tarjeta Asterisk) en el
grub de nuestra maquina principal el parámetro necesario para poder administrar esta
tarjeta directamente en la maquina virtual de cortafuegos, usando de nuevo la
instrucción lspci y tomando nota de la dirección para añadirla
INMEDIATAMENTE a continuación de la que teníamos añadida para la gestión de
la tarjeta de comunicaciones (tal y como está explicado en el capítulo 3 -
INSTALACIÓN Y CONFIGURACIÓN DE SERVIDOR XEN). La instrucción
debería quedar más o menos así
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 109 -
Instalación y configuración de centralita VoIP basada en asterisk
module /boot/vmlinux-2.6.18-6-xen-amd64 root=/dev/sda1 ro console=tty0
max_loop=8 pciback.hide=(01:06.0)(01:07.0)
Modificamos el fichero de configuración de la máquina virtual que nos han creado
las herramientas de creación de Xen, mediante la instrucción
vi /etc/xen/intranet.cfg
y nos aseguramos que la instrucción PCI contenga lo siguientes
pci=['01:07.0']
Copiamos en /etc/xen/auto/ el archivo de configuración una vez modificado para que
así se inicie automáticamente cada vez que encendamos el servidor y arrancamos la
máquina virtual con
xm create /etc/xen/auto/intranet.cfg -c
Una vez arrancada la maquina virtual tenemos que decirle al sistema que tenemos
una tarjeta de red extra y que nos conectaremos por dhcp a la red de Internet, para
ello editamos el fichero de configuración de las tarjetas de red que en Debian se
encuentra en /etc/network/interfaces
auto eth0
iface eth0 inet static
address 172.16.0.212
netmask 255.255.255.0
auto eth1
iface eth1 inet dhcp
Al reiniciar la red con /etc/init.d/networking restart comprobaremos que en esta
maquina virtual ya tenemos Internet. Podemos ver el resultado con la instrucción
ifconfig.
En este caso eth0 es la tarjeta (virtual en este caso) que se conecta a nuestra red y
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 110 -
Instalación y configuración de centralita VoIP basada en asterisk
eth1 es la tarjeta de red que conecta la máquina intranet directamente a internet para
poder, una vez filtrada la conexión, suministrar servicios al resto de máquina reales y
virtuales de la red. Pero para que comparta la conexión tenemos que instalar
Shorewall en intranet mediante la instrucción
aptitude install shorewall
Shorewall es fácil de configurar. Al instalarlo se crean unos ficheros de
configuración en /etc/shorewall que son los que tendremos que modificar para
configurarlo.
/etc/interfaces .- En este fichero configuramos las tarjetas de red que tenemos y
donde están conectadas
net eth1 detect dhcp,tcpflags,norfc1918,routefilter,nosmurfs,logmartians
loc eth0 detect tcpflags,detectnets,nosmurfs
/etc/masq .- Este fichero es el que nos sirve para configurar el enrutado de la
conexión de internet de una tarjeta de red a otra y así poder compartir la conexión a
internet
#INTERFACE SUBNET ADDRESS PROTO PORT(S)IPSEC
eth1 eth0
/etc/shorewall/policity .- Aquí indicamos la política que vamos a seguir. No es
necesario modificarlo, pues como viene por defecto es suficiente para que el sistema
funcione, aunque podríamos, dependiendo del grado de seguridad que queramos para
nuestra red, cambiar las políticas por defecto.
/etc/shorewall/rules .- En este fichero le vamos a decir al firewall que puertos
queremos dejar abiertos y a que puertos de las maquinas de nuestra red va a ir.
Ejemplo si queremos direccionar el puerto 110 (POP3) a la maquina 172.168.0.213
de nuestra red usaríamos la instrucción
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 111 -
Instalación y configuración de centralita VoIP basada en asterisk
NAT net loc:192.168.0.155:110 tcp 110
/etc/shorewall/zones .- Aquí configuramos las distintas zonas en que se va a
componer nuestro cortafuegos, en nuestro caso configuramos 3 zonas una para
nuestra red local otra para internet y otra para el cortafuegos.
#ZONE TYPE OPTIONS IN OUT OPTIONS OPTIONS
fw firewall
net ipv4
loc ipv4
Si todo esta bien configurado al hacer un /etc/init.d/shorewall restar ya estamos
compartiendo con nuestra red la conexión a internet. Eso si la configuración IP de las
máquinas de la red la tendremos que configurar a mano debido a que aun no hemos
instalado ningún servidor DHCP (este se encarga de asignar direcciones IP, puerta de
enlace y servidor de nombres automáticamente).
3 CONFIGURACIÓN SERVIDOR DHCP.
DHCP (sigla en inglés de Dynamic Host Configuration Protocol) es un protocolo de red
que permite a los nodos de una red IP obtener sus parámetros de configuración
automáticamente. Se trata de un protocolo de tipo cliente/servidor en el que generalmente
un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes
conforme éstas van estando libres, sabiendo en todo momento quién ha estado en
posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después.
Sin DHCP, cada dirección IP debe configurarse manualmente en cada computadora y, si
la computadora se mueve a otro lugar en otra parte de la red, se debe configurar otra
dirección IP diferente. El DHCP le permite al administrador supervisar y distribuir de
forma centralizada las direcciones IP necesarias y, automáticamente, asignar y enviar una
nueva IP si la computadora es conectado en un lugar diferente de la red.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 112 -
Instalación y configuración de centralita VoIP basada en asterisk
El protocolo DHCP incluye tres métodos de asignación de direcciones IP:
Asignación manual o estática: Asigna una dirección IP a una máquina determinada. Se
suele utilizar cuando se quiere controlar la asignación de dirección IP a cada cliente, y
evitar, también, que se conecten clientes no identificados.
Asignación automática: Asigna una dirección IP de forma permanente a una máquina
cliente la primera vez que hace la solicitud al servidor DHCP y hasta que el cliente la
libera. Se suele utilizar cuando el número de clientes no varía demasiado.
Asignación dinámica: el único método que permite la reutilización dinámica de las
direcciones IP. El administrador de la red determina un rango de direcciones IP y cada
computadora conectada a la red está configurada para solicitar su dirección IP al servidor
cuando la tarjeta de interfaz de red se inicializa. El procedimiento usa un concepto muy
simple en un intervalo de tiempo controlable. Esto facilita la instalación de nuevas
máquinas clientes a la red.
En nuestro caso vamos a preparar nuestro servidor para poder suministrar este último
método de asignación.
3.1 PROCEDIMIENTO PARA LA PUESTA EN MARCHA.
aptitude install dhcpd
y una vez terminada la instalación editamos el archivo
vi /etc/dhcpd.conf
que tiene que contener las siguientes instrucciones
subnet 192.168.0.0 netmask 255.255.255.0 {
range dynamic-bootp 172.16.0.220 172.16.0.240;
option broadcast-address 172.16.0.255;
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 113 -
Instalación y configuración de centralita VoIP basada en asterisk
option domain-name-servers 172.16.0.1;
option routers 192.168.0.212;
}
En la linea1, hace referencia a nuestra red local (al rango) y su mascara (en este caso,
al ser de clase C, es 255.255.255.0).
En la linea 2, configuramos el rango de IP que se van a dar a los clientes. En este
caso de la IP 172.16.0.220 a la 172.16.0.240, es decir que el servidor configurará
automáticamente hasta 20 clientes simultáneos.
En la linea 3 está la dirección de broadcast de la red, que siempre que no haya
subredes creadas terminara en .255 con la dirección de la red.
En la linea 4, se hace referencia a la IP del servidor DNS que utilizaran los clientes
de la red local. Como no hay ningún servidor DNS configurado aún en la red local,
configuramos la IP del servidor DNS del proveedor de Internet.
En la linea 5, finalmente, se referencia a la máquina que hace de gateway de la red,
que en este caso es la misma que tiene el servidor DHCP configurado.
Con esto solo ya solo nos resta reiniciar el servidor dhcp con un ‘/etc/init.d/dhcpd
restart’ y listo, ya tenemos el servidor configurado y funcionando.
4 REALIZACIÓN DE COPIAS DE SEGURIDAD CON SAMBA + CRON.
Hacer una copia de seguridad o copia de respaldo (backup en inglés, el uso de este
anglicismo está ampliamente extendido) se refiere a la copia de datos de tal forma que
estas copias adicionales puedan restaurar un sistema después de una pérdida de
información. La copia de seguridad es útil por varias razones:
- Para restaurar un ordenador a un estado operacional tras un desastre (copias de
seguridad del sistema.
- Para restaurar un pequeño número de ficheros después de que hayan sido borrados
o dañados accidentalmente (copias de seguridad de datos).
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 114 -
Instalación y configuración de centralita VoIP basada en asterisk
- En el mundo de la empresa, además es útil y obligatorio, para evitar ser sancionado
por los órganos de control en materia de protección de datos.
La primera la tenemos cubierta con nuestro sistema de maquinas virtuales con Xen y para
la segunda utilizamos esta maquina virtual para realizar la copia de los datos de todos los
equipos de nuestra red, tanto Windows como Linux. Para esto utilizaremos el programa
Samba para comunicarnos con las maquinas Windows y CRON para arrancar nuestro
sistema de copias de seguridad.
4.1 SAMBA
Samba es una implementación libre del protocolo de archivos compartidos de
Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a
CIFS) para sistemas de tipo UNIX. De esta forma, es posible que ordenadores con
Linux, Mac OS X o Unix en general se vean como servidores o actúen como clientes
en redes de Windows. Samba también permite validar usuarios haciendo de
Controlador Principal de Dominio (PDC), como miembro de dominio e incluso como
un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de
servir colas de impresión, directorios compartidos y autenticar con su propio archivo
de usuarios. Entre los sistemas tipo Unix en los que se puede ejecutar Samba, están
las distribuciones GNU/Linux, Solaris y las diferentes variantes BSD.
Samba configura directorios Unix/Linux como recursos para compartir a través de la
red. Para los usuarios de Microsoft Windows, estos recursos aparecen como carpetas
normales de red. Los usuarios de Linux pueden montar en sus sistemas de archivos
estas unidades de red como si fueran dispositivos locales, o utilizar la orden
smbclient para conectarse a ellas muy al estilo del cliente de la línea de órdenes ftp.
Cada directorio puede tener diferentes permisos de acceso sobrepuestos a las
protecciones del sistema de archivos que se esté usando en Linux. Por ejemplo, las
carpetas home pueden tener permisos de lectura y escritura para cada usuario,
permitiendo que cada uno acceda a sus propios archivos; sin embargo, deberemos
cambiar los permisos de los archivos localmente para dejar al resto ver nuestros
archivos, ya que con dar permisos de escritura en el recurso no será suficiente.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 115 -
Instalación y configuración de centralita VoIP basada en asterisk
La configuración de Samba se logra editando un solo archivo, accesible en
/etc/smb.conf o en /etc/samba/smb.conf.
Para las copias de seguridad de todas las máquinas Windows de nuestra red hemos
creado un script que copia todo lo que tenemos en un recurso compartido según el
día de la semana. El archivo que contiene el script lo guardamos en
/root/backupwindows y el script lo suministramos como anexo1 al documento,
tanto en papel como en formato electrónico. El script hace copias de seguridad cada
día de la semana de las carpetas que le indiquemos en la función function
CopiaDiaria().
Para la copia de seguridad de las maquinas Linux, hemos generado un segundo script
que al igual que el primero, guarda copia de seguridad de las carpetas que le
indiquemos. Este script también lo almacenamos en /root/backuplinux y lo
añadimos como anexo 2 a la documentación.
4.2 CRON.
CRON es es un administrador regular de procesos en segundo plano (demonio) que
ejecuta programas a intervalos regulares (por ejemplo, cada minuto, día, semana o
mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se
especifican en el archivo /etc/crontab.
CRON se podría definir como el "equivalente" a Tareas Programadas de Windows.
Los usuarios habilitados para crear su archivo crontab se especifican en el archivo
/etc/cron.allow. De manera análoga, los que no lo tienen permitido figuran en
/etc/cron.d/cron.deny o en /etc/cron.deny.
Formato del archivo crontab
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 116 -
Instalación y configuración de centralita VoIP basada en asterisk
01 * * * * root nice -n 19 run-parts /etc/cron.hourly
50 0 * * * root nice -n 19 run-parts /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts /etc/cron.monthly
Para agregar, quitar o modificar tareas, hay que editar el crontab. Esto se hace con la
orden crontab -e, que abrirá el editor definido en la variable entorno EDITOR y
cargará el archivo crontab correspondiente al usuario que está autentificado en el
sistema.
4.2.1 Sintaxis de configuración de CRON.
El momento de ejecución de un script lo indicamos en el archivo crontab
teniendo en cuenta que tiene cinco posibles parámetros en este orden :
Minutos : (0-59)
Horas : (0-23)
Días : (1-31)
Mes : (1-12)
Día de la semana : (0-6), siendo 1=Lunes, 2=Martes, etc, 0=Domingo
Por tanto para indicar en el crontab que queremos ejecutar nuestro script de
copia de seguridad todos los Lunes a las diez de la noche tendríamos que indicar
* 22 * * 01 /root/backuplinux
o podríamos hacer que la copia fuese todos los días quince de cada mes a las
doce y cinco de la madrugada
05 00 15 * * /root/backupwindows
Ni que decir tiene que podemos ejecutar no solo nuestros scripts, sino también
cualquier orden de sistema o cualquier aplicación que nos interese.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 117 -
Instalación y configuración de centralita VoIP basada en asterisk
CONCLUSIONES
El software libre es la panacea universal para la informática. Es el único medio que hace
que el ser humano no tenga que reinventar la rueda una y mil veces. Es una perdida de recursos y
tiempo el que si alguien quiere suministrar un procesador de textos, tenga que reescribir el código
desde cero. Y eso por cada organización, empresa o particular que desee disponer de dicho
procesador de textos, creando además diferentes formatos incompatibles entre sí.
Nosotros, sin tener que reinventar la rueda hemos podido crear una centralita telefónica
de alto valor añadido, aprovechando el trabajo previo de personas que han cedido horas de su
tiempo para generar esta maravilla de la computación que es Asterisk. Es por lo que por nuestra
parte vamos a poner nuestro proyecto a disposición de la comunidad del software libre para que
gracias a nuestras experiencias, podamos facilitar que otras personas no tengan que usar la
barbaridad de horas de lectura y creación que hemos tenido que emplear nosotros para poner en
marcha un servidor Asterisk. Para que otras personas, no tengan que reinventar la rueda y puedan
dedicar su tiempo a sus aficiones, a su familia, a sus amigos o ¡¡¡ que diablos !!! a generar más
software libre que luego todos podamos disfrutar.
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 118 -
Instalación y configuración de centralita VoIP basada en asterisk
BIBLIOGRAFÍA
http://www.genbeta.com/2007/09/29-cual-es-el-tamano-optimo-para-la-swap-en-linux
http://www.laespiral.org/articulos/chroot/entorno-chroot.html
http://www.kriptopolis.org/instalar-xen-en-arch-linux
http://www.howtoforge.com/perfect_setup_xen3_debian
http://linuxupc.upc.es/~kampa/blog/gnulinux/instalar-xen-en-gnudebian-etch/
http://www.linuca.org/body.phtml?nIdNoticia=355&nIdPage=4
http://julioduque.wordpress.com/2007/11/27/virtualizar-puerto-paralelo-en-xen/feed/
http://es.wikipedia.org/wiki/E1
http://es.wikipedia.org/wiki/RDSI
http://www.escritura-uah.es/index.php?option=com_easyfaq&task=view&id=16
http://www.voip-info.org/wiki-Asterisk+CLI
http://www.ecualug.org/?q=2007/jul/29/forums/asterisk_cli
http://www.asteriskguru.com/tutorials/cli_cmd_14_page2.html
http://www.pixelado.org/?p=36
http://mdelgac.weblog.net/2007/10/12/escenario-de-configuracion-basica-de-asteriskpap2spa400/
http://forum.asterisk-online.com.ar/phpBB2/viewtopic.php?
p=560&sid=188d4322251373820ca88b291786b188
http://www.3cx.es/voip-sip/telefonos-sip.php
http://www.voipforo.com/asterisk/configuracion-extensions-conf.php
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 119 -
Instalación y configuración de centralita VoIP basada en asterisk
ANEXO I
SCRIPT DE COPIAS DE SEGURIDAD MEDIANTE RSYNC PARA SISTEMAS
WINDOWS
#!/bin/sh
#Copia un Recurso compartido SAMBA con montaje y desmontaje
#Parámetros: Recurso CarpetaOrigen CarpetaDestino
function CopiaCarpetas()
{
echo "*** Comienza copia diaria de carpeta $1/$2 a $3"
mount -t smbfs -o password= $1 /mnt
rsync -a --delete /mnt/$2/ /backup2/$3
umount /mnt
echo "*** Termina copia diaria de carpeta $1/$2 a $3"
}
function CopiaDiaria()
{
#Insertar una linea por cada recurso compartido a copiar
#PC MIGUEL
CopiaCarpetas //172.16.0.241/AEAT . $1/miguel/AEAT
CopiaCarpetas //172.16.0.241/mis_documentos . $1/miguel/mis_documentos
#PC PEDRO
CopiaCarpetas //172.16.0.242/Documents_and_settings . $1/pedro/Documents_and_settings
}
MiFecha=`date +%Y_%m_%d`
echo "********************** BACKUP DEL $MiFecha ********************************"
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 120 -
Instalación y configuración de centralita VoIP basada en asterisk
dia=`date +%A`
case "$dia" in
lunes)
CopiaDiaria lunes
;;
martes)
CopiaDiaria martes
;;
miércoles)
CopiaDiaria miércoles
;;
jueves)
CopiaDiaria jueves
;;
viernes)
CopiaDiaria viernes
;;
esac
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 121 -
Instalación y configuración de centralita VoIP basada en asterisk
ANEXO II
SCRIPT DE COPIAS DE SEGURIDAD EN ARCHIVOS COMPRIMIDOS .TAR PARA
SISTEMAS LINUX
#!/bin/bash
#Directorios que queremos copiar
ETC=/etc/
HOME=/home/almacen
#Guardamos la fecha
DIA=`date +%Y%m%d`
#Destino, donde se almacenaran las copias de seguridad
DEST=/backup2 /linux
echo “Creando copia completa”
tar -cvzf $DEST/etc.$DIA.copia.tar.gz $ETC
tar -cvzf $DEST/almacen.$DIA.copia.tar.gz $HOME
echo “Copia completa terminada”
echo COPIA DE SEGURIDAD DEL $DIA DE $ETC $HOME CREADA | mail [email protected]
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 122 -
Instalación y configuración de centralita VoIP basada en asterisk
ANEXO III
CONTENIDO DEL ARCHIVO ZAPATA.CONF
[channels]
language = es
usecallingpres = yes
usercallerid = yes
hidecallerid = no
callwaiting = yes
threewaycalling = yes
transfer = yes
immediate = yes
faxdetect = both
busydetect = yes
group=1
context = inicio
busycount = 7
immediate = yes
signalling = fxs_ks
echocancel = yes
echocancelwhenbridged=yes
answeronpolarityswitch=yes
hanguponpolarityswitch=yes
rxgain = 0.5
txgain = 1.0
channel =>1
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 123 -
Instalación y configuración de centralita VoIP basada en asterisk
ANEXO IV
CONTENIDO DEL ARCHIVO SIP.CONF
[general]
port = 5060
bindaddr = 0.0.0.0
context = inicio
disallow = all
allow = alaw
language = es
useragent = ASTERISK PBX PROYECTO
tos = 0x18
videosupport = yes
[100]
username = 100
type = friend
;secret =
;callerid =
context = inicio
;nat = yes ; permitir que la extension se use desde internet
host = dynamic ; permite que la extensión se use con todas ips
;canreinvite = no
;qualify = yes
;call-limit = 10
mailbox = 100
[200]
username = 200
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 124 -
Instalación y configuración de centralita VoIP basada en asterisk
type = friend
context = inicio
host = dynamic
mailbox = 200
[300]
username = 300
type = friend
context = inicio
host = dynamic
mailbox = 300
[400]
username = 400
type = friend
secret = 400
context = inicio
host = dynamic
mailbox = 400
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 125 -
Instalación y configuración de centralita VoIP basada en asterisk
ANEXO V
CONTENIDO DEL ARCHIVO IAX.CONF
[general]
bindport = 4569 ; puerto por defecto del protocolo IAX
bindaddr = 0.0.0.0 ; dirección IP para la conexión (cualquiera)
context = inicio ; contexto por defecto
languaje = es
delayreject = yes
bandwitch = low ; usar codec con bajo consumo de ancho de banda
allow = all ; codecs que se usarán (permitimos todos)
[700]
username = 700
type = friend
secret = 700
context = inicio
host = dynamic
nat = yes
[777]
username = 777
type = friend
qualify = yes
notransfer = yes
secret = 777
host = dynamic
context = fax
nat = no
callerid = “Fax” <777>
allow = all
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 126 -
Instalación y configuración de centralita VoIP basada en asterisk
ANEXO VI
CONTENIDO DEL ARCHIVO EXTENSIONS.CONF
[general]
static = yes
writeprotect = no
autofallthrough = yes
clearglobalvars = no
priorityjumping = no
language = es
[inicio]
include = entrada
include = horario
include = fax
exten => s,1,Answer() ; descuelga
exten => s,n,Wait(3) ; espera 3 segundos
exten => s,n,GotoifTime(22:01-09:59|mon-sat|*|*?horario,s,13) ;
exten => s,n,GotoifTime(15:01-19:59|mon-sat|*|*?horario,s,13) ;
exten => s,n,GotoifTime(00:00-23:59|sun|*|*?horario,s,16) ;
exten => fax,1,Goto(fax,777,1) ; si es un fax marca la extensión 777
[entrada]
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 127 -
Instalación y configuración de centralita VoIP basada en asterisk
include = salida
exten => s,n,Background(loc_inicio)
exten => s,n,WaitExten(5)
exten => s,n,Background(loc_inicio)
exten => s,n,WaitExten(5)
exten => s,n,Goto(100,1)
exten => s,n,Hangup()
exten => 1,1,Goto(100,1)
exten => 2,1,Goto(200,1)
exten => 3,1,Goto(300,1)
exten => 4,1,Goto(400,1)
[salida]
include = buzondevoz
; extensiones internas
exten => 100,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--
%H-%M-%S--)})
exten => 100,n,MixMonitor(ENTRADA-${horadellamada}-$
{CALLERID(num)}-${EXTEN}.wav)
exten => 100,n,GotoifTime(22:01-17:59|mon-sat|*|*?horario,s,1)
exten => 100,n,Dial(Sip/100,30,tTr)
exten => 100,n,Voicemail,100
exten => 100,n,Hangup()
exten => 200,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--
%H-%M-%S--)})
exten => 200,n,MixMonitor(ENTRADA-${horadellamada}-$
{CALLERID(num)}-${EXTEN}.wav)
exten => 200,n,GotoifTime(15:01-09:59|mon-sat|*|*?horario,s,4)
exten => 200,n,Dial(Sip/200,30,tTr)
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 128 -
Instalación y configuración de centralita VoIP basada en asterisk
exten => 200,n,Voicemail,200
exten => 200,n,Hangup()
exten => 300,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--
%H-%M-%S--)})
exten => 300,n,MixMonitor(ENTRADA-${horadellamada}-$
{CALLERID(num)}-${EXTEN}.wav)
exten => 300,n,GotoifTime(00:01-18:29|wed-sun|*|*?horario,s,7)
exten => 300,n,Dial(Sip/300,30,tTr)
exten => 300,n,Voicemail,300
exten => 300,n,Hangup()
exten => 400,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--
%H-%M-%S--)})
exten => 400,n,MixMonitor(ENTRADA-${horadellamada}-$
{CALLERID(num)}-${EXTEN}.wav)
exten => 400,n,GotoifTime(00:00-23:59|mon-sun|*|*?horario,s,10)
exten => 400,n,Dial(Sip/400,30,tTr)
exten => 400,n,Voicemail,400
exten => 400,n,Hangup()
; llamadas a fijos y móviles
exten => _9XXXXXXXX,1,Dial(Zap/1/${EXTEN},,tTr)
exten => _9XXXXXXXX,n,Hangup
exten => _6XXXXXXXX,1,Dial(Zap/1/${EXTEN},,tr)
exten => _6XXXXXXXX,n,Hangup
; llamadas a teléfonos de policía, bomberos, emergencias
exten => _0ZZ,1,Dial(Zap/1/${EXTEN},,r)
exten => _0ZZ,n,Hangup()
exten => _1ZZ,1,Dial(Zap/1/${EXTEN},,r)
exten => _1ZZ,n,Hangup()
; llamadas a teléfonos superiores al 9xx y 8xx (teléfonos de pago por servicios)
exten => _[89]0[0-289]XXXXXX,1,Dial(Zap/1/${EXTEN},, r)
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 129 -
Instalación y configuración de centralita VoIP basada en asterisk
exten => _[89]0[0-289]XXXXXX,n,Hangup()
; llamadas internacionales
exten => _00.,1,Dial(Zap/1/${EXTEN},, r)
exten => _00.,n,Hangup()
; llamadas del sistema para grabar y escuchar locuciones de voz
exten => 555,1,Answer()
exten => 555,n,Record(locucion:gsm)
exten => 555,n,Hangup()
exten => 556,1,Playback(locucion)
exten => 556,2,Hangup()
[horario]
exten => s,1,Answer() ; comienza joseno
exten => s,2,Playback(joseno)
exten => s,3,Hangup()
exten => s,4,Answer() ; comienza miguelno
exten => s,5,Playback(miguelno)
exten => s,6,Hangup()
exten => s,7,Answer() ; comienza tutoriano
exten => s,8,Playback(tutoriano)
exten => s,9,Hangup()
exten => s,10,Answer() ; comienza operadoresno
exten => s,11,Playback(operadoresno)
exten => s,12,Hangup()
exten => s,13,Answer() ; comienza horano
exten => s,14,Playback(horano)
exten => s,15,Hangup()
exten => s,16,Answer() ; comienza domingono
exten => s,17,Playback(domingono)
exten => s,18,Hangup()
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 130 -
Instalación y configuración de centralita VoIP basada en asterisk
[fax]
exten => 777,1,Answer()
exten => 777,n,Dial(IAX2/777)
exten => 777,n,Hangup()
[buzondevoz]
exten => 12345,1,VoicemailMain(${CALLERIDNUM})
exten => 12345,2,Hangup()
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 131 -
Instalación y configuración de centralita VoIP basada en asterisk
ANEXO VII
CONTENIDO DEL ARCHIVO CDR_MYSQL.CONF
[global]
hostname=localhost
dbname=asterisk
password=
user=root
;port=3306
;sock=/tmp/mysql.sock
;userfield=1
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 132 -
Instalación y configuración de centralita VoIP basada en asterisk
ANEXO VIII
CONTENIDO DEL ARCHIVO RES_MYSQL.CONF
[general]
dbhost = 127.0.0.1
dbname = asterisk
dbtable= cdr
dbuser = root
dbpass =
dbport = 3306
dbsock = /tmp/mysql.sock
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 133 -
Instalación y configuración de centralita VoIP basada en asterisk
ANEXO IX
CONTENIDO DEL ARCHIVO VOICEMAIL.CONF
[general]
format=wav ; formato de grabación del audio
attach=yes ; enviar mensajes de voz por correo electrónico
maxmessage=180
mailcmd=/usr/sbin/sendmail -t
serveremail=root@localhost
fromstring="Centralita Asterisk de Proyecto Asterisk"
emailsubject=[PBX] Mensaje número ${VM_MSGNUM} en buzón de voz.
emailbody=\n\n\n***** Este es un mensaje automático de la centralita de VoIP de *****\n
PROYECTOASTERISK *****\n\n\n\n\t Tiene un mensaje nuevo en su buzón de voz: \n Con el
numero ${VM_MSGNUM}. \n Recibido desde el numero de teléfono ${VM_CALLERID}. \n El
${VM_DATE} . \n Dicho mensaje se adjunta a este mail, pero no obstante debe llamar a su buzón
de voz y eliminarlo tras su escucha. Si no conoce como acceder a su buzón de voz, por favor
contacte con el departamento al cargo.\n\n\t Gracias.\n\n\t
[default]
100 => 1234,100,100,jose@localhost
200 => 1234,200,200,[email protected]
300 => 1234,300,300,[email protected]
400 => 1234,400,400,[email protected]
José Manuel campos moreno y Miguel José guzmán munuera
Pag. - 134 -
Instalación y configuración de centralita VoIP basada en asterisk
ANEXO X
MANUAL DE INSTRUCCIONES DE CENTRALITA ASTERISK.
Si suena el teléfono :
Descolgar y hablar.
Si queremos llamar :
Descolgar, marcar y hablar (si nos lo cogen).
Si deseamos transferir una llamada :
Pulsamos # y el número de extensión donde deseamos pasar la llamada.
Si deseamos grabar una llamada :
Pulsamos *1 en cualquier momento durante la conversación.
Si deseamos escuchar el buzón de voz :
Pulsamos 12345, esperamos respuesta y seguimos instrucciones.
Si deseamos grabar una locución para la centralita :
Pulsamos 555, esperamos tono y declamamos la locución.
Si deseamos escuchar la última locución grabada :
Pulsamos 556 y escuchamos nuestra dulce voz.
José Manuel campos moreno y Miguel José guzmán munuera