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