INSTALACIÓN Y CONFIGURACIÓN DE CENTRALITA ... - ZonaOpen

INSTALACIÓN Y CONFIGURACIÓN DE CENTRALITA ... - ZonaOpen INSTALACIÓN Y CONFIGURACIÓN DE CENTRALITA ... - ZonaOpen

24.04.2013 Views

INSTALACIÓN Y CONFIGURACIÓN DE CENTRALITA VoIP BASADA EN ASTERISK

<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.................................................................................................................................125­140<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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!