instalaciÓn y configuraciÓn de centralita voip...

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

Upload: hathuy

Post on 10-Nov-2018

242 views

Category:

Documents


1 download

TRANSCRIPT

INSTALACIÓN Y CONFIGURACIÓN

DE CENTRALITA VoIP BASADA EN

ASTERISK

Pag. - 1 -

Instalación y configuración de centralita VoIP basada en asterisk

Indice

INTRODUCCIÓN..............................................................................................................................5

..............................................................................................................................................................

OBJETIVOS.......................................................................................................................................8

..............................................................................................................................................................

MATERIAL......................................................................................................................................11

1 ELEMENTOS HARDWARE........................................................................................................11

1.1 CPU SERVIDOR ASTERISK....................................................................................................11

1.1.1 Procesador.................................................................................................................................11

1.1.2 Placa base.................................................................................................................................11

1.1.3 Memoria RAM.........................................................................................................................12

1.1.4 Disco duro................................................................................................................................12

1.1.5 Tarjeta gráfica...........................................................................................................................12

1.1.6 Lector óptico.............................................................................................................................13

1.1.7 Chasis (caja CPU).....................................................................................................................13

1.2 TARJETA DE COMUNICACIONES DIGIUM.........................................................................13

1.3 PORTÁTIL KIRA N1070...........................................................................................................14

1.4 THOMPSON SPEEDTOUCH 2030...........................................................................................14

1.5 PLANTRONICS AUDIO 650 USB............................................................................................14

1.6 BLUETOOTH JABRA BT250V................................................................................................14

1.7 LINKSYS PAP2..........................................................................................................................15

1.8 TELÉFONO AIRIS T800M1......................................................................................................15

1.9 TELÉFONO AIRIS T850M........................................................................................................15

..............................................................................................................................................................

2 ELEMENTOS SOFTWARE.........................................................................................................15

2.1 DEBIAN GNU/LINUX..............................................................................................................16

2.2 SOPORTE RAID1......................................................................................................................17

2.3 XEN............................................................................................................................................19

2.4 ASTERISK.................................................................................................................................20

2.5 SUBSISTEMA ZAPTEL (ZAPATA TELEPHONY).................................................................21

2.6 SOFTPHONE VOIXPHONE.....................................................................................................21

2.7 CDR ASTERISK........................................................................................................................22

MÉTODO.........................................................................................................................................23

1 OBTENCIÓN Y PREPARACIÓN DEL SOFTWARE DEBIAN.................................................23

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 2 -

Instalación y configuración de centralita VoIP basada en asterisk

2 INSTALACIÓN Y CONFIGURACIÓN DE DEBIAN.................................................................25

3 INSTALACIÓN Y CONFIGURACIÓN DE SERVIDOR XEN...................................................31

4 COMANDOS PARA GESTIONAR LAS MAQUINAS VIRTUALES XEN...............................44

4.1 LISTAR MAQUINAS VIRTUALES..........................................................................................44

4.2 LISTAR RECURSOS CONSUMIDOS POR LAS MAQUINAS..............................................44

4.3 AJUSTAR CANTIDAD DE MEMORIA USADA POR MÁQUINA.......................................44

4.4 INSTRUCCIONES DE PARADA..............................................................................................45

4.5 INSTRUCCIÓN DE MIGRACIÓN...........................................................................................45

4.6 INICIO MANUAL DE MÁQUINA XEN..................................................................................45

4.7 MÉTODOS DE ACCESO A MÁQUINA VIRTUAL XEN.......................................................45

..............................................................................................................................................................

5 INSTALACIÓN Y CONFIGURACIÓN DE ASTERISK.............................................................46

5.1 PAQUETES BÁSICOS NECESARIOS.....................................................................................47

5.2 DESCARGA Y COMPILACION DE SOFTWARE ASTERISK..............................................48

5.3 CONFIGURACIÓN INICIAL TRAS LA INSTALACIÓN.......................................................51

5.4 FICHEROS Y DIRECTORIOS DE ASTERISK.......................................................................52

5.5 ASTERISK CLI (COMMAND LINE INTERFACE)................................................................53

5.6 CONFIGURACIÓN INICIAL DE LOS FICHEROS DE ASTERISK......................................54

5.7 ARCHIVOS SIP.CONF, IAX.CONF Y DEMAS FICHEROS DE PROTOCOLO....................58

..............................................................................................................................................................

6 CONFIGURANDO EL ENTORNO (PARTE I)...........................................................................64

7 CONFIGURANDO EL ENTORNO (PARTE II)..........................................................................67

8 CONFIGURACIÓN DEL SOFTPHONE VOIXPHONE.............................................................70

9 COMPROBACION DEL FUNCIONAMIENTO DE LA INSTALACIÓN HARDWARE...........71

..............................................................................................................................................................

10 DIALPLAN (AÑADIENDO FUNCIONES A LA CENTRALITA)...........................................74

10.1 LOCUCION DE ENTRADA....................................................................................................74

10.2 CONTROL HORARIO.............................................................................................................79

10.3 CONFIGURANDO NUEVAS POSIBILIDADES DE MARCADO........................................83

10.4 BUZONES DE VOZ Y MENSAJES DE AUDIO AL CORREO............................................85

10.5 GRABACIÓN DE CONVERSACIONES Y LEY DE PROTECCIÓN DE DATOS...............91

10.6 INSTALACIÓN DE HYLAFAX, SERVIDOR DE GESTIÓN DE FAX.................................93

10.7 CONFIGURACIÓN DE HYLAFAX PARA UTILIZAR MODEM VIRTUAL ASTERISK. .95

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 3 -

Instalación y configuración de centralita VoIP basada en asterisk

10.8 RECEPCION DE FAX EN EL CORREO ELECTRÓNICO...................................................98

10.9 INTEGRAR CDR ASTERISK. GESTIÓN DE BASE DE DATOS........................................99

..............................................................................................................................................................

RESULTADOS...............................................................................................................................103

1 CREACIÓN DE MAQUINA VIRTUAL CON SOPORTE LVM, DNS, ETC............................104

1.1 DEFINICIÓN Y CARACTERÍSTICAS DE LVM...................................................................104

1.1.1 Ventajas de usar LVM.............................................................................................................105

1.1.2 Anatomía de un LVM.............................................................................................................106

1.1.3 Instantáneas (copias de seguridad).........................................................................................107

1.2 EMPEZAMOS LA INSTALACIÓN........................................................................................107

1.3 PRUEBAS CON LVM...............................................................................................................111

1.3.1 Eliminando un LV...................................................................................................................111

1.3.2 Extendiendo un LV.................................................................................................................111

1.3.3 Reduciendo un LV..................................................................................................................111

1.3.4 Removiendo un PV.................................................................................................................112

1.4 CONCLUSIÓN.........................................................................................................................113

..............................................................................................................................................................

2 DEFINICIÓN Y CARACTERÍSTICAS DEL FIREWALL (SHOREWALL + IPTABLES)......113

2.1 INSTALACIÓN DEL FIREWALL...........................................................................................114

..............................................................................................................................................................

3 CONFIGURACIÓN SERVIDOR DHCP.....................................................................................117

3.1 PROCEDIMIENTO PARA LA PUESTA EN MARCHA........................................................118

..............................................................................................................................................................

4 REALIZACIÓN DE COPIAS DE SEGURIDAD CON SAMBA + CRON................................119

4.1 SAMBA.....................................................................................................................................120

4.2 CRON........................................................................................................................................121

4.2.1 Sintaxis de configuración de CRON......................................................................................122

..............................................................................................................................................................

CONCLUSIONES..........................................................................................................................123

BIBLIOGRAFÍA............................................................................................................................124

ANEXOS.................................................................................................................................125­140

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 4 -

Instalación y configuración de centralita VoIP basada en asterisk

INTRODUCCIÓN

Es innegable que en nuestra sociedad el mayor activo es la información. La información

nos facilita la toma de decisiones a todos los niveles... personal, político, económico, social, etc.

De echo en todas las épocas de la humanidad, la información ha sido vital para el avance de las

civilizaciones, desde los griegos a los persas pasando por los romanos. Mas la información no es

como el agua de lluvia, que un buen día sin pedirla cae sobre nosotros. La información requiere de

medios que nos permitan transmitirla y que llegue a donde nos interesa y a quien o quienes nos

interesa. A lo largo de la historia se han usado para transmitir información personas a pie y a

caballo, palomas mensajeras, señales de humo, sonidos de animales y múltiples formulas más que

la inventiva de la raza humana a pergeñado en diferentes épocas.

Y llegamos a la actualidad. Tenemos tal cantidad de información a nuestra disposición y

tantos medios para transmitirla, tantas personas a las que queremos hacer llegar dicha información,

tantos peligros que acechan a dicha información en ruta hacia su receptor que necesitamos medios

para hacer que esa información sea correctamente dirigida, protegida y entregada donde y como

deseamos.

Es claro que el medio de comunicación que más se ha usado hasta la llegada de Internet

ha sido el teléfono. Fue el primer medio que unió naciones y continentes e incluso a día de hoy

compite aún denodadamente contra su sucesor para seguir siendo la perla de las comunicaciones.

Pero los días del teléfono están contados puesto que llega la convergencia de redes, esto es, la

unión de Internet y el sistema telefónico tradicional. Las grandes operadoras de telefonía y las

grandes empresas ya hace tiempo que están adaptando y convirtiendo sus sistemas para distribuir

el trafico telefónico como datos mediante la VoIP (voz sobre redes basadas en protocolos IP), pero

las pequeñas y medianas empresas aún no han llegado a dar ese paso por los altos costes

tecnológicos y de infraestructuras que ello supone.

Pero en el teatro de las comunicaciones ha entrado un nuevo actor: el software libre.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 5 -

Instalación y configuración de centralita VoIP basada en asterisk

Gracias a ciertas aplicaciones informáticas de las que hablaremos más adelante, todas ellas

realizadas de manera altruista por personas que dedican parte de su tiempo libre a desarrollarlas y

por empresas que han visto en el software libre un modelo de negocio descentralizado, con un

potencial de crecimiento casi ilimitado y una filosofía más afín al ser humano que el modelo de

negocio basado exclusivamente en el capital.

Gracias a este nuevo actor (más particularmente a LINUX DEBIAN y a ASTERISK

como software de gestión de comunicaciones) y a un fabricante norteamericano llamado DIGIUM,

se puede con un coste muy reducido crear una centralita telefónica IP que nos permita usar

teléfonos especiales conectados a nuestra red de área local, gestionar las llamadas que nos hacen y

que realizamos, recibir faxes y mensajes de voz enviando los mensajes al correo electrónico,

enviar mensajes cortos de texto (SMS) desde aplicaciones informáticas y decenas de posibilidades

más que nos pueden hacer prescindir definitivamente del teléfono tal y como lo concebimos. Este

nuevo actor nos permite hacer llegar la información a donde nos interesa con facilidad y elegancia.

Aunque tenemos que tener en cuenta la importancia antes comentada de la seguridad en

las comunicaciones. Si a día de hoy es pernicioso que por motivos técnicos no tengamos conexión

a Internet, habría que imaginar que pasaría si a la misma vez nos quedásemos sin ningún medio de

comunicación. Hacer que un sistema basado en software y hardware nos gestione las

comunicaciones nos proporciona flexibilidad y potencia, pero a la par nos genera algunos riesgos

que hay que tener en cuenta. Para reducir esos riesgos a la mínima expresión, volvemos a utilizar

el software libre. Vamos a utilizar en este Proyecto Integrado un sistema informático con

máquinas virtuales llamado XEN. Este método nos permite que si nuestro servidor de

comunicaciones cae por problemas hardware, software o problemas externos tales como robo,

incendio o similar, se pueda tener funcionando en cuestión de minutos otro servidor y con tan solo

copiar la máquina virtual volvamos a tener funcionando todo nuestro entorno de comunicaciones.

Además al trabajar con máquinas virtuales conseguimos mayor seguridad en nuestro

sistema informático, puesto que si alguien desea acceder al mismo para conseguir nuestra

apreciada información, tendría que conseguir burlar la seguridad de varios sistemas operativos

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 6 -

Instalación y configuración de centralita VoIP basada en asterisk

hasta llegar a controlar la totalidad del sistema. Las máquinas virtuales se instalan sobre un sistema

operativo LINUX que hace las funciones de guardián y aparte cada uno de los sistemas operativos

virtuales tienen sus propias defensas.

En Internet hay un caso de un Ingeniero Informático de una ONG que cuenta la

experiencia en un pueblo perdido de África al que solamente llegaba una línea de teléfono (allí las

líneas telefónicas tienen un coste prohibitivo), consiguió gracias al software libre ASTERISK dar

servicio telefónico al Hospital, al “Ayuntamiento” y a la sede de la ONG, consiguiendo todos ellos

usar el teléfono sin necesidad de desplazarse. Esperamos sinceramente que este Proyecto Integrado

sea el germen que haga que personas con conocimientos informáticos y buena voluntad, puedan

hacer pequeños milagros. El pequeño milagro de la comunicación.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 7 -

Instalación y configuración de centralita VoIP basada en asterisk

OBJETIVOS

1 Obtención de todo el software necesario para el proyecto a través de Internet sin

costes de licencias al usar software libre o versiones gratuitas plenamente

operativas.

2 Instalación de una distribución DEBIAN del sistema operativo LINUX.

2.1 Durante el proceso de instalación dejar documentados los pasos a seguir para llevar a

buen termino la misma.

2.2 En el inicio de la instalación configurar el sistema operativo Debian en RAID1 para

mejorar en lo posible la seguridad y estabilidad del mismo.

2.3 Configurar el entorno de red para el servidor Linux, que permita llamadas por

internet.

2.4 Configurar entorno de trabajo Xen en Debian para gestionar máquinas virtuales.

2.5 Configurar usuarios y contraseñas para una correcta gestión del servidor, adecuando

la seguridad y los permisos.

3 Creación de máquina virtual Xen con las herramientas básicas de trabajo (paquetes

de software imprescindibles) para poder transformarla posteriormente en un

servidor de centralita Asterisk.

3.1 Configurar entorno de red y repositorios desde los que realizar las descargas de

paquete de programas.

3.2 Descargar los paquetes necesarios para la instalación y configuración posterior de

Asterisk.

3.3 Duplicar (copiar) la máquina virtual para tener una configuración base sobre la que

poder crear sucesivas máquinas virtuales.

3.4 Sobre un clon de la máquina virtual original, preparar la configuración de nombre de

host y direcciones IP correspondientes a nuestra futura máquina Asterisk.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 8 -

Instalación y configuración de centralita VoIP basada en asterisk

3.5 Mostrar usar y detallar las herramientas de gestión de las que dispone Xen para

visualizar, mover o modificar las máquinas virtuales.

3.6 Hacer que la máquina virtual se cargue automáticamente al inicio del sistema para

automatizar al máximo el servidor.

4 Descargar de la página web de Digium el software libre Asterisk, compilarlo e

instalarlo en la máquina virtual creada al efecto.

4.1 Configurar tarjeta de comunicaciones Digium para que sea reconocida correctamente

por el software Asterisk.

4.2 Crear una configuración base de una centralita y un dialplan para Asterisk, que

permita como mínimo realizar y recibir llamadas desde un teléfono con una sola

línea telefónica.

4.3 Mostrar, usar y detallar el uso del interfaz de comandos de Asterisk llamado CLI, el

cual provee un modo consola para suministrar comandos de gestión y control a la

centralita.

4.4 Configurar Asterisk para ser inicializado automáticamente en el encendido del

servidor, para hacer el sistema lo más autónomo posible.

5 Configurar una centralita Asterisk.

5.1 Configurar diferentes protocolos de transmisión de voz sobre IP.

5.2 Permitir llamadas entrantes a la centralita.

5.3 Permitir llamadas salientes desde la red de área local a la que se haya conectado la

centralita.

5.4 Crear extensiones telefónicas dentro de la red de área local.

5.5 Permitir llamadas internas entre extensiones y transferencia de llamadas tanto

internas como externas entre las mismas.

5.6 Permitir restringir numeración de marcado en llamadas salientes ya sea en general, o

por extensión.

5.7 Gestionar llamadas entrantes generales o personalizadas por extensión en función de

mes, día y hora.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 9 -

Instalación y configuración de centralita VoIP basada en asterisk

5.8 Crear un sistema de grabación y escucha de locuciones para ser usadas

posteriormente en las diferentes opciones de la centralita.

5.9 Crear buzones de voz generales o para cada usuario que permitan tener contestador

automático y poder hacer una gestión personalizada del mismo.

5.10 Crear un sistema de envío y recepción de fax no físico mediante detección del tipo

de llamada recibida.

5.11 Crear un servidor de correo electrónico que permita a la centralita Asterisk, según la

configuración que le suministremos, enviar a uno o varios usuarios a sus respectivas

cuentas de correo electrónico, los mensajes de voz y faxes que hayan recibido,

pudiendo ver y escuchar dichos mensajes y faxes desde sus respectivos clientes de

correo.

5.12 Descargar el paquete de software CDR Asterisk, que trae la configuración base para

el almacenamiento de todos los datos de las llamadas realizadas o recibidas con sus

atributos de hora, origen, destino, etc.

5.13 Preparar el entorno MySQL para poder crear la base de datos sobre la que va a

trabajar el software CDR Asterisk.

5.14 Crear la base de datos para el CDR Asterisk.

5.15 Preparar el entorno Apache para poder acceder a la base de datos del CDR Asterisk

desde cualquier cliente WEB y visualizar el contenido de la misma.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 10 -

Instalación y configuración de centralita VoIP basada en asterisk

MATERIAL

1 ELEMENTOS HARDWARE

1.1 CPU SERVIDOR ASTERISK : Para la gestión de la centralita se pueden utilizar

sin ningún problema equipos informáticos reciclados, siendo los requisitos mínimos

recomendados para hacer funcionar una CPU con ASTERISK tener un procesador

superior a 300MHZ, 64 MB de memoria RAM y 512 MB de espacio disponible en

disco duro. Como los requisitos de instalación de DEBIAN son similares, podría

instalarse prácticamente en cualquier tipo de ordenador.

Es muy importante el que las tarjetas de comunicaciones compatibles con

ASTERISK no usen IRQ (interrupciones del sistema) que ya están siendo usadas por

otros elementos de la CPU. En todo caso y debido a que aparte de querer usar nuestra

CPU para la gestión de la centralita de VoIP, vamos a hacerlo mediante máquinas

virtuales, y que además queremos dejar abierta la posibilidad de que la centralita

tenga posibilidad de gestionar un volumen alto de llamadas (lo cual consume

recursos de la CPU), hemos optado por una configuración de gama media-alta.

Dicha configuración sería la siguiente :

1.1.1 Procesador : Hemos optado por un procesador AMD64 4800+ DUAL CORE

en socket AM2. Este procesador utiliza una tecnología llamada AMD

VIRTUALIZATION que permite mejorar el rendimiento de máquinas virtuales.

Eso hace que sea una elección idónea para que el funcionamiento de los

diferentes servicios que se le vayan implementando a nuestro Servidor

aprovechen al máximo los recursos de la CPU.

1.1.2 Placa base : En este caso hemos decidido instalar una placa base ASUS

modelo M2N-SLI. Hemos optado por esta placa por ser ASUS una marca de

reconocido prestigio y calidad. Además de ser aparentemente compatible con el

resto de componentes que vamos a añadir. La placa usa el socket AM2 al igual

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 11 -

Instalación y configuración de centralita VoIP basada en asterisk

que el procesador AMD64 4800+ DUAL CORE y soporta módulos de memoria

DDR2. Al tener una ranura para conectar tarjetas gráficas PCI Express, si en un

momento dado queremos hacer vídeo conferencia y deseamos visualizar en

pantalla a uno o más interlocutores, nos puede hacer falta tener una cierta

potencia gráfica que si no se dispusiera de dicha ranura, no se podría obtener.

1.1.3 Memoria RAM : Hemos incluido 2GB de memoria RAM DDR2 a 800 MHz

en la configuración de nuestro Servidor. Creemos que esta cantidad de memoria

cubre ampliamente las necesidades de recursos para nuestra instalación y en todo

caso, la placa base que estamos usando tiene zócalos de ampliación de memoria

que usaremos en el caso de encontrar problemas por carga excesiva de trabajo a

nivel de asignación de memoria RAM.

1.1.4 Disco duro : Para el almacenamiento hemos tenido muy en cuenta la

velocidad de acceso y la fiabilidad, con lo que se han instalado en el Servidor

dos discos duros SATA (serial ata) de 320 GB de la marca SEAGATE, con una

velocidad de giro de 7200 revoluciones por minuto. Estos discos duros van a

funcionar en modo espejo (RAID1) para conseguir que en todo momento

tengamos posibilidad de recuperar nuestro Servidor en casos de desastre (rotura

de un disco duro).

1.1.5 Tarjeta gráfica : La marca NVIDIA es bien conocida por su robustez y

estabilidad y por ello es la gráfica instalada en nuestro Servidor. El modelo

exacto es una NVIDA GFORCE 8500GT con 512 Mb de memoria y tecnología

PCI Express con refrigeración pasiva. La refrigeración pasiva (sin ventiladores)

creemos que es vital para Servidores, puesto que es conveniente eliminar la

mayor cantidad posible de elementos mecánicos que tienen tendencia a

estropearse con mayor frecuencia que los elementos electrónicos.

1.1.6 Lector óptico : Para realizar la instalación, usamos un lector-grabador de

DVD de la marca LG con una velocidad de lectura de 18X y conectado, al igual

que el disco duro, mediante el interface SATA. Es un grabador que también nos

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 12 -

Instalación y configuración de centralita VoIP basada en asterisk

permitirá realizar copia de seguridad del sistema a DVD tanto de simple como

de doble capa y por tanto poder copiar las máquinas virtuales u otros datos.

1.1.7 Chasis (caja CPU) : Aunque no es la opción más recomendable, la instalación

de todos los componentes la hemos realizado en una caja mixta

sobremesa/semitorre de dimensiones reducidas. Esto es debido a que vamos a

tener que trasladar el Servidor y no podíamos permitirnos que fuese muy pesado

o engorroso de transportar. En todo caso, recomendamos que si se fuese a

utilizar la centralita en producción (en una empresa o institución a pleno

rendimiento) se utilizara un chasis con fuente redundante (dos fuentes de

alimentación por si una de ellas fallase) y más amplio para evitar calentamientos

innecesarios. No creemos que vayamos a tener problemas en este aspecto, puesto

que nuestro Servidor solo estará operativo un par de meses y en ese tiempo es

altamente improbable que se dañe ningún componente por sobrecalentamientos.

1.2 TARJETA DE COMUNICACIONES DIGIUM : Como alma de nuestra centralita

vamos a instalar una tarjeta de comunicaciones DIGIUM TDM400P certificada

ASTERISK con posibilidad de conectarle hasta cuatro módulos FXO o FXS que

permiten conectar hasta cuatro líneas telefónicas o dispositivos de salida analógica.

Para la conexión dispone de 4 tomas RJ11 (clavijas telefónicas convencionales de

cuatro hilos). El corazón de esta tarjeta es un chip INFINEON AN983B. La tarjeta

dispone de un conector molex estándar para poder conectarla a la fuente de

alimentación y que esta le suministre energía extra para que así la tarjeta pueda

suministrar tensión a dispositivos analógicos que se conecten a los conectores RJ11 y

que requieran dicho suministro, tales como teléfonos o fax convencionales.

1.3 PORTÁTIL KIRA N1070 : Para realizar las pruebas con los clientes VoIP por

software, vamos a utilizar un ultra portátil AIRIS KIRA N1070. Esto es un ordenador

con pantalla de 7”, procesador AMD Geode a 500 MHz, un giga byte de memoria

RAM y un disco duro de 80Gb. Al disponer de tecnología inalámbrica tanto

mediante Wifi como mediante Bluetooth, nos va a permitir realizar todo tipo de

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 13 -

Instalación y configuración de centralita VoIP basada en asterisk

pruebas y demostraciones con auriculares inalámbricos.

1.4 THOMPSON SPEEDTOUCH 2030 : Para realizar las conferencias telefónicas

vamos a utilizar un terminal telefónico THOMPSON SPEEDTOUCH 2030 el cual es

un teléfono VoIP de gama alta que dispone de una gran cantidad de funciones que le

dotan de un gran valor añadido. Entre ellas cabe destacar la posibilidad de

comunicarse con servicios de directorio externos como Directorio Activo u

OpenLDAP + Apache. Además soporta NAT, VLAN, registro de llamadas y

múltiples codecs de transmisión. Todas estas funciones nos van a permitir intentar

usar el terminal conectado a través de Internet con nuestra centralita (uso desde

diferentes redes) y probar la calidad con varios codecs de gestión de datos de voz.

1.5 PLANTRONICS AUDIO 650 USB : Con los clientes software VoIP usaremos un

auricular profesional PLANTRONICS AUDIO 650 USB. Esto es un auricular con

micrófono que gracias a tener una alta ganancia y cancelación de ruidos, nos va a

permitir mantener conversaciones sin que notemos que estamos usando algo que no

es un sistema telefónico analógico convencional. La idea es que el usuario no note

diferencia entre la telefonía clásica y nuestra flamante centralita VoIP.

1.6 BLUETOOTH JABRA BT250V : Para integrar mediante Bluetooth con el portátil

AIRIS KIRA N1070, vamos a usar un auricular Bluetooth JABRA BT250V, que una

vez sincronizado nos permitirá comunicarnos con otros terminales gracias al software

cliente de VoIP. Este auricular dispone de batería de litio que nos dará la autonomía

necesaria para realizar las pruebas que consideremos pertinentes.

1.7 LINKSYS PAP2 : Una de las posibilidades que tiene la telefonía IP es el poder

utilizar teléfonos convencionales como terminales VoIP. Pierden unas pocas

funcionalidades, pero son plenamente operativos. Para poder hacer esto necesitamos

un adaptador que nos permita conectar el teléfono a la red local. Ese adaptador es un

ADAPTADOR VoIP LINKSYS PAP2 que dispone de dos conexiones para poder

tener dos teléfonos clásicos.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 14 -

Instalación y configuración de centralita VoIP basada en asterisk

1.8 TELÉFONO AIRIS T800M1 : Para conectar al adaptador VoIP mencionado

anteriormente vamos a usar un teléfono inalámbrico marca AIRIS modelo T800M1

con altavoz manos libres y baterías recargables, el cual será perfecto para realizar las

demostraciones oportunas al poder escucharse en publico, gracias al manos libres, las

locuciones que queremos poner en la centralita IP.

1.9 TELÉFONO AIRIS T850M : También vamos a usar un teléfono fijo de sobremesa

AIRIS T850M conectado a la segunda toma del ADAPTADOR PAP2 para

demostrar que se pueden usar sin problemas este tipo de terminales con las opciones

añadidas por la centralita.

2 ELEMENTOS SOFTWARE

Como se podrá comprobar a lo largo de este proyecto integrado, nuestra principal apuesta

es el software libre, con lo que vamos a intentar por todos los medios no usar en ningún momento

software propietario de ningún fabricante. Esto significa que a excepción del gasto de los

elementos hardware, el coste del software va a ser nulo en lo que se refiere a licencias, aunque sí

que existe un coste que es el tiempo empleado por los recursos humanos necesarios para

configurar todo el sistema. Nuestra opinión es que siempre va a salir más rentable el coste del

trabajo de un técnico local que configure y gestione todo el sistema, que el pago de licencias a un

fabricante foráneo. Además esto hace que se produzca riqueza y valor añadido en nuestro entorno,

y no la fuga constante de divisas a los grandes fabricantes que en poco o nada repercuten en la

mejora de nuestro I+D y nuestra calidad de vida. Ni que decir tiene que para los países más

desfavorecidos, el software libre puede ser su tabla de salvación tecnológica.

Tras este pequeño alegato en favor del software libre vamos a exponer los elementos

software utilizados en este Proyecto Integrado.

2.1 DEBIAN GNU/LINUX : Hemos utilizado una distribución de LINUX llamada

DEBIAN por ser la más reticente a usar programas con licencias propietarias.

Además tiene fama de ser la distribución más estable y segura. Múltiples

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 15 -

Instalación y configuración de centralita VoIP basada en asterisk

distribuciones están basadas en DEBIAN y a día de hoy en Internet hay miles de

páginas y de foros donde se puede conseguir ayuda en el caso de que tengamos

problemas de instalación, configuración o uso. Dentro de DEBIAN hay diferentes

ramas de desarrollo. Estas ramas de desarrollo catalogan la distribución en

ESTABLE, DE PRUEBAS, INESTABLE, CONGELADA Y EXPERIMENTAL.

Nosotros nos hemos decidido por instalar la rama de desarrollo ESTABLE, porque

creemos que tendrá todos los drivers hardware y los elementos software necesarios

para nuestro Proyecto. En caso de que no fuese así, actualizar en todo o en parte a

INESTABLE no sería un problema excesivo. Aunque la palabra asusta un poco, la

rama INESTABLE de DEBIAN es la rama estable en otras distribuciones tales como

UBUNTU o KNOPPIX. Una vez instalada la distribución, actualizaremos todos los

paquetes tanto de seguridad como de sistema.

El Proyecto Debian es una asociación de personas que han hecho causa común para

crear un sistema operativo (SO) libre. Este sistema operativo se llama Debian GNU/

Linux, o simplemente Debian para acortar. Un sistema operativo es un conjunto de

programas y utilidades básicas que hacen que un ordenador funcione. El centro de un

sistema operativo es el núcleo (también llamado kernel). El núcleo es el programa

más importante, realiza todo el trabajo básico y permite ejecutar otros programas.

Los sistemas Debian actualmente usan el núcleo de Linux. Linux es una pieza de

software creada en un principio por Linus Torvalds y soportada de manera altruista

por miles de programadores a lo largo del mundo.

Sin embargo, se está trabajando para ofrecer Debian con otros núcleos, en especial

con el núcleo Hurd. El Hurd es una colección de servidores que se ejecutan sobre un

micronúcleo para implementar las distintas funcionalidades. El Hurd es software

libre producido por el proyecto GNU. Una gran parte de las herramientas básicas que

completan el sistema operativo, vienen del proyecto GNU; de ahí los nombres: GNU/

Linux y GNU/Hurd. Estas herramientas también son libres.

Hay que tener en cuenta que lo que la gente quiere es software de aplicación y

herramientas que los ayuden a realizar lo que necesiten hacer, desde editar

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 16 -

Instalación y configuración de centralita VoIP basada en asterisk

documentos, ejecutar aplicaciones de negocios hasta divertirse con juegos o

programar más software; es por lo que Debian viene con más de 18733 paquetes

(software precompilado y empaquetado en un formato de instalación sencilla en un

ordenador) todos ellos de forma gratuita. Es un poco como una torre. En la base está

el núcleo. Encima se encuentran todas las herramientas básicas. Después está todo el

software que ejecutamos en el ordenador. En la cima de la torre se encuentra Debian

organizando y encajando las diferentes piezas software cuidadosamente para que

todo el sistema trabaje en conjunto.

2.2 SOPORTE RAID1 : Durante el proceso de instalación vamos a usar el soporte

RAID de DEBIAN. Aunque en si mismo no es un programa, las distribuciones

LINUX funcionan mediante el método de paquetes. Eso significa que no tienes que

instalar los programas, sino que solamente se tiene que instalar una porción de

código de programa que viene precompilado en formatos estándar tales como RPM o

DEB. Así que vamos a describir todos los paquetes que van a ser representativos

durante el proceso de instalación del Servidor VoIP.

Así que volviendo al RAID, vamos a instalar DEBIAN en nuestros discos duros con

el soporte RAID1 por software de DEBIAN, lo cual va a permitir que nuestros discos

duros contengan cada uno de ellos una copia íntegra de todo el sistema. Un RAID1

crea una copia exacta (o espejo) de un conjunto de datos en dos o más discos. Esto

resulta útil cuando el rendimiento en lectura es más importante que la capacidad. Un

conjunto RAID1 sólo puede ser tan grande como el más pequeño de sus discos. Un

RAID1 clásico consiste en dos discos en espejo, lo que incrementa exponencialmente

la fiabilidad respecto a un sólo disco; es decir, la probabilidad de fallo del conjunto

es igual al producto de las probabilidades de fallo de cada uno de los discos (pues

para que el conjunto falle es necesario que lo hagan todos sus discos).

Adicionalmente, dado que todos los datos están en dos o más discos, con hardware

habitualmente independiente, el rendimiento de lectura se incrementa

aproximadamente como múltiplo lineal del número del copias; es decir, un RAID1

puede estar leyendo simultáneamente dos datos diferentes en dos discos diferentes,

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 17 -

Instalación y configuración de centralita VoIP basada en asterisk

por lo que su rendimiento se duplica. Para maximizar los beneficios sobre el

rendimiento del RAID1 se recomienda el uso de controladoras de disco

independientes, una para cada disco (práctica que algunos denominan splitting o

duplexing). El tiempo medio de lectura se reduce, ya que los sectores a buscar

pueden dividirse entre los discos, bajando el tiempo de búsqueda y subiendo la tasa

de transferencia, con el único límite de la velocidad soportada por la controladora

RAID. Sin embargo, muchas tarjetas RAID1 IDE antiguas leen sólo de un disco de la

pareja, por lo que su rendimiento es igual al de un único disco. Al escribir, el

conjunto se comporta como un único disco, dado que los datos deben ser escritos en

todos los discos del RAID1. Por tanto, el rendimiento no mejora.

El RAID1 tiene muchas ventajas de administración. Por ejemplo, en algunos

entornos es posible «dividir el espejo»: marcar un disco como inactivo, hacer una

copia de seguridad de dicho disco y luego «reconstruir» el espejo. Esto requiere que

la aplicación de gestión del conjunto soporte la recuperación de los datos del disco en

el momento de la división.

2.3 XEN : Cuando nuestra distribución DEBIAN esté funcionando en RAID1, el

siguiente paso será instalar XEN. Es una máquina virtual de código abierto

desarrollada por la Universidad de Cambridge. La meta del diseño es poder ejecutar

instancias de sistemas operativos con todas sus características, de forma

completamente funcional en equipos que no tienen por que ser muy potentes. Xen

proporciona aislamiento seguro, control de recursos, garantías de calidad de servicio

y migración de máquinas virtuales en caliente. Los sistemas operativos deben ser

modificados explícitamente para ejecutar Xen (aunque manteniendo la

compatibilidad con aplicaciones que el usuario tenga instaladas). Utiliza una técnica

llamada paravirtualización con la que puede alcanzar alto rendimiento (es decir, bajas

penalizaciones del rendimiento, típicamente alrededor del 2%, con los peores casos

de rendimiento rondando el 8%; esto contrasta con las soluciones de emulación que

habitualmente sufren penalizaciones de un 20%). Con la paravirtualización, se puede

alcanzar alto rendimiento incluso en arquitecturas (x86) que no suelen conseguirse

con técnicas tradicionales de virtualización.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 18 -

Instalación y configuración de centralita VoIP basada en asterisk

A diferencia de las máquinas virtuales tradicionales, que proporcionan entornos

basados en software para simular hardware, Xen requiere portar los sistemas

operativos para adaptarse al API (interfaz de programa) de Xen. Hasta el momento

hay ports (traducciones o versiones de un mismo programa) para NetBSD, Linux,

FreeBSD y Plan 9. Novel ha realizado un port de NetWare para Xen. Un port de

Windows XP fue creado durante el desarrollo inicial de Xen, pero las licencias de

Microsoft prohíben su lanzamiento público. Las máquinas virtuales Xen pueden ser

migradas en caliente entre equipos físicos sin pararlos. Durante este proceso, la

memoria de la máquina virtual es copiada iterativamente al destino sin detener su

ejecución. Una parada muy breve de alrededor de 60 a 300 milisegundos es necesaria

para realizar la sincronización final antes de que la máquina virtual comience a

ejecutarse en su destino final. Una tecnología similar es utilizada para suspender las

máquinas virtuales a disco y cambiar a otra máquina virtual.

2.4 ASTERISK : Una vez que tengamos nuestra distribución plenamente operativa, en

RAID con una distribución DEBIAN como máquina principal y otra DEBIAN

virtualizada, vamos a instalar el software ASTERISK que se incluye en los

repositorios (almacenes de paquetes) de DEBIAN. Asterisk es una aplicación de

software libre (bajo licencia GPL) de una central telefónica (PBX). Como cualquier

PBX, se puede conectar un número determinado de teléfonos para hacer llamadas

entre sí e incluso conectar a un proveedor de VoIP o bien a una RDSI tanto básicos

como primarios.

Asterisk incluye muchas características anteriormente sólo disponibles en sistemas

costosos propietarios PBX como buzón de voz, conferencias, distribución automática

de llamadas, y otras muchas más. Los usuarios pueden crear nuevas funcionalidades

escribiendo un dialplan en el lenguaje de programación de script de Asterisk o

añadiendo módulos escritos en lenguaje C o en cualquier otro lenguaje de

programación soportado por Linux.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 19 -

Instalación y configuración de centralita VoIP basada en asterisk

Para conectar teléfonos estándar analógicos son necesarias tarjetas electrónicas

telefónicas FXS o FXO fabricadas por Digium u otros proveedores compatibles con

Asterisk, ya que para conectar el servidor a una línea externa no basta con un simple

módem. Quizá lo más interesante de Asterisk es que soporta muchos protocolos

VoIP como pueden ser SIP, H.323, IAX y MGCP. Asterisk puede interoperar con

terminales IP actuando como un registrador y como gateway entre ambos. Lejos de

poder competir con las compañías que comercializan soluciones de VoIP

hardware/software de alta calidad como Alcatel-Lucent, Cisco, Avaya, Nortel,

Linksys o Thompson, Asterisk se empieza a adoptar en algunos entornos

corporativos como solución de bajo coste y esta pasando a ser asequible a PYMES

para las que hasta hace poco no había soluciones en buena relación prestaciones

precio que les permitieran mejorar sus comunicaciones.

2.5 SUBSISTEMA ZAPTEL (ZAPATA TELEPHONY) : Es un software que permite

operar con las tarjetas de comunicaciones, siendo una especie de puente entre estas y

Asterisk. Contiene los drivers para configurarlas y es imprescindible su correcta

instalación y configuración para el funcionamiento de una centralita IP.

2.6 SOFTPHONE VOIXPHONE : Un Softphone (en inglés combinación de Software

y de Telephone) es un software que hace una simulación de teléfono convencional

por ordenador. Es decir, permite usar el ordenador para hacer llamadas a otros

Softphone o a otros teléfonos convencionales usando algún tipo de enlace, como por

ejemplo una centralita IP. Normalmente, un Softphone es parte de un entorno Voz

sobre IP y puede estar basado en los estándares SIP/H.323/IAX o protocolos

privativos. Hay muchas implementaciones disponibles, aunque el más usado y

conocido es sin lugar a dudas el Microsoft Messenger.

Los Softphone más utilizados basados en el protocolos SIP/IAX actualmente son

eyeBeam, OpenWengo, Nexge, sipXphone, Adore Softphone, Express Talk, Zoiper,

SJPhone, Ekiga y VoixPhone. Funcionan bien con la mayoría de los proveedores de

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 20 -

Instalación y configuración de centralita VoIP basada en asterisk

servicios de telefonía por Internet. Se puede llamar con ellos usando un teléfono USB

o auricular y obtener un servicio gratuito VoIP de teléfono a teléfono. El muy

popular Skype no es simplemente un Softphone sino un servicio P2P VoIP. Los

Softphone son realmente parte de un grupo tecnológico mayor, el CTI (Computer

Telephone Integration). Algunos Softphone están implementados completamente en

software, que se comunica con las PBX (centralitas) a través de LAN (Red de Área

Local) para controlar y marcar a través del teléfono físico. Se hace a través de un

entorno de centro de llamadas, para llamar usando una base de datos de clientes o

para recibir llamadas. En estos casos la información del cliente aparece en la pantalla

de gestión cuando el teléfono suena, dando a los operadores del centro de llamadas

determinada información sobre quién está llamando, cómo recibirlo y dirigirse a esa

persona.

Hemos optado por VoixPhone porque tiene versiones libres, y es un cliente VoIP con

múltiples opciones que pese a su potencia no consume excesivos recursos del

sistema. Tiene versión para Windows con lo que si queremos realizar pruebas desde

algún sistema operativo propietario, tendríamos la posibilidad.

2.7 CDR ASTERISK : Sorprendiendo una vez más, resulta que Asterisk almacena todo

el tráfico de llamadas tanto entrantes como salientes en bases de datos. En esas bases

de datos tenemos identificado el teléfono o extensión que se ha visto involucrado en

la llamada, cuánto tiempo ha empleado en dicha llamada, hora de inicio y final, amén

de mucha más información. Esta información nos puede ayudar a gestionar con

eficiencia los recursos humanos y de comunicación de los que disponemos.

Entre la información que podemos obtener del sistema de analítica de llamadas de

Asterisk tenemos informes de llamadas diarias o mensuales por extensión, tráfico

total de llamadas, comparativa de llamadas con días anteriores, llamadas por

números específicos mediante criterios de búsqueda y todo ello presentado en

atractivas gráficas que nos muestran con claridad la información solicitada.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 21 -

Instalación y configuración de centralita VoIP basada en asterisk

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 22 -

Instalación y configuración de centralita VoIP basada en asterisk

MÉTODO

1 OBTENCIÓN Y PREPARACIÓN DEL SOFTWARE DEBIAN

Para poder comenzar la instalación de nuestra centralita IP, lo primero que hemos de

hacer es conseguir el sistema operativo que vamos a instalar. En este caso hemos de

conseguir la distribución de LINUX denominada DEBIAN. Al ser software libre, se

puede descargar desde Internet. La página web desde donde se puede descargar es

www.debian.org y más exactamente desde este enlace

http://cdimage.debian.org/debian-cd/4.0_r3/amd64/iso-cd/debian-40r3-amd64-

netinst.iso

el cual nos permite descargar la versión AMD64 NETINSTALL SMALL CD

ESTABLE. Para tipo de procesador podemos usar una “versión” de LINUX que

aprovecha al máximo sus características y es por eso que siendo el nuestro un AMD64

descargamos la distribución apropiada. Aparte de eso, también existen diferentes

“versiones” de formulas de instalación, y podemos elegir una u otra en función del uso

que le vayamos a dar a nuestro ordenador. La formula de instalación más común es la

descarga de un CD o DVD que contiene el sistema operativo LINUX completo, más

múltiples programas y aplicaciones. Pero en nuestro caso, para no cargar el sistema de

aplicaciones que en nuestro servidor de telefonía IP no vamos a utilizar, hemos

descargado una versión NETINSTALL que lo que hace es instalar una base muy pequeña

del sistema operativo y que posteriormente a través de Internet adquiere el resto de

aplicaciones y programas que sean necesarios en función de las selecciones que

realicemos durante la instalación. Es por lo que a esta versión, al ser muy reducida y

entrar en un CD más pequeño que los habituales, se le llama SMALL CD (pequeño CD).

Una vez descargada la imagen ISO a un ordenador, tenemos que grabarla en un CD para

poder usarla. Para ello podemos usar nuestro ordenador habitual instalado con LINUX y

usar una de las aplicaciones de LINUX más conocida para grabar CD que se llama

BRASERO. Si no lo tenemos instalado, podemos conseguirlo escribiendo en consola

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 23 -

Instalación y configuración de centralita VoIP basada en asterisk

sudo aptitude install brasero

lo que hará que lo tengamos disponible en el menú Aplicaciones – Sonido y Vídeo. Al

pulsar en el icono del programa, nos saldrá una pantalla como la siguiente en la que

tenemos que seleccionar la opción Grabar imagen

al pulsar en dicha opción nos sale otra pantalla en la que tenemos que pulsar donde pone

ruta

y seleccionamos el archivo que hemos descargado (debian-40r3-amd64-netinst.iso en

nuestro caso o el que esté disponible en Internet en ese momento) con lo que el botón

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 24 -

Instalación y configuración de centralita VoIP basada en asterisk

Grabar que estaba sombreado, permitirá ser pulsado, realizando la copia a CD si lo

tuviésemos insertado, o pidiéndonos que le suministremos un CD virgen para proceder a

realizar la copia del mismo.

En caso de no disponer de un ordenador con LINUX, en este proyecto no damos soporte

a software propietario, con lo que la grabación del CD corre a cargo del lector :) pues

Windows a día de hoy no dispone de ninguna herramienta gratuita para poder grabar

imágenes de CD.

2 INSTALACIÓN Y CONFIGURACIÓN DE DEBIAN

Para proceder a la instalación de la distribución de LINUX DEBIAN (en adelante

simplemente la denominaremos Debian), hay que asegurarse de que en BIOS del

ordenador que se va a utilizar esté configurada la opción de arranque desde la unidad de

CD. Debido a que esto suele venir configurado por defecto y a la gran cantidad de placas

base y BIOS diferentes que hay en el mercado, no creemos pertinente el explicar cómo se

puede modificar dicha configuración. Solo indicar que si se introduce en el lector o

grabador del ordenador Debian copiado en un CD tal y como hemos descrito

anteriormente debe de aparecer una pantalla en la que veremos el logotipo de Debian y

un mensaje que nos invita a pulsar ENTER para continuar con la instalación.

Si hemos llegado hasta este punto, para facilitar la instalación y para facilitarnos a

nosotros el poder realizar capturas de pantalla de la instalación, vamos a utilizar un

entorno gráfico de instalación (instalación mediante entorno de ventanas mediante uso

del ratón). Para acceder a ese entorno gráfico, es necesario que en la posición donde nos

aparece el mensaje que nos invita a pulsar ENTER en lugar de hacerlo, pongamos la

orden installgui tal y como se indica a continuación

Press F1 for help, or ENTER to boot : installgui_

y posteriormente pulsamos la tecla ENTER. En unos segundos tendremos a nuestra

disposición una pantalla en la que se nos solicita el idioma en el que deseamos instalar

Debian, y nosotros vamos a seleccionar Spanish – Español

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 25 -

Instalación y configuración de centralita VoIP basada en asterisk

A partir de aquí vamos a ir seleccionando las siguientes opciones para realizar la

instalación:

REGIÓN : España

LOCALIZACIÓN : es_ES.UTF-8

En la pantalla que nos aparece a continuación se nos piden idiomas adicionales para los

que queremos que Debian tenga soporte. En nuestro caso no vamos a indicar ninguno,

aunque habrá quien desee modificar esta opción y añadir uno o más idiomas. Siéntase

libre de modificar esta o cualquier otra opción a su discreción, puesto que para eso

estamos usando software libre. Pulse en Continuar cuando termine la selección.

IDIOMA DEL TECLADO : Español (viene por defecto)

Seguidamente nos aparece un mensaje en pantalla en el que se nos informa de que se está

intentando configurar la red buscando un servidor DHCP (un servidor de asignación

automática de direcciones de red). Lo normal es que nuestra red disponga de dicho

servidor, ya que normalmente todos los ROUTERS, (dispositivos de interconexión entre

redes con los que habitualmente conectamos nuestros ordenadores a Internet), tienen un

servidor de este tipo. En el caso de que no exista ningún servidor DHCP en nuestra red,

nos saldrían unas opciones en las que se nos permitiría modificar manualmente los

parámetros de nuestra red de área local. Debido a que una configuración de este tipo

tampoco entra en lo que consideramos los objetivos fundamentales de este proyecto,

dejamos en manos del usuario el informarse para configurar adecuadamente las

direcciones IP y resto de parámetros necesarios para conectar correctamente a Internet el

ordenador usado para la configuración de la centralita.

Si todo ha salido bien aparecerá una pantalla en la que se nos pedirá el nombre que

deseamos ponerle a nuestro servidor de telefonía. Nosotros le vamos a llamar gestormv

(ya que este servidor va a gestionar nuestras máquinas virtuales) y pulsaremos en

Continuar para proceder a introducir el nombre de dominio que vamos a utilizar en

nuestra red. Tal y como nos indica este dato puede ser real o inventado. Ha de ser real si

tenemos los conocimientos necesarios para integrar nuestro servidor en un dominio en el

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 26 -

Instalación y configuración de centralita VoIP basada en asterisk

que vaya a interactuar con otros servidores y clientes, o podemos sencillamente poner un

nombre que nos resulte sugestivo. En este caso nuestro dominio se llamará

proyectoasterisk.net.

Llegamos al particionado de discos. Lo primero que tenemos claro es que deseamos tener

un servidor que sea lo más seguro posible y para eso hemos decidido el particionar los

dos discos duros de los que disponemos en RAID1 (configuración de discos en espejo ya

mencionada en el apartado 2.2 del capítulo MATERIALES). Para cargar los paquetes

software necesarios hemos de seleccionar en la pantalla de particionado de discos la

opción Manual, con lo que nos aparecerá la información de los discos duros y del

espacio libre que tienen para poder realizar la instalación. Debido a que nuestros discos

duros están totalmente vacíos, disponemos del 100% del espacio libre para configurar las

particiones en las que posteriormente vamos a proceder a instalar Debian, así que

pulsamos doble click en la primera partición vacía (donde pone pri/lóg xxx.xx GB

ESPACIO LIBRE) y en la siguiente pantalla seleccionamos la opción Crear una

partición nueva para poder elegir que capacidad del disco duro vamos a dedicar a la

partición que deseamos crear. Tenemos disponible todo el disco duro y por defecto nos

selecciona el tamaño máximo, así que tendremos que indicarle que deseamos una

partición de 2GB (que usaremos como partición de intercambio o SWAP). Como hemos

indicado antes, siéntase libre de modificar la capacidad usada para las particiones. En la

bibliografía hay un enlace a una página web en la que explican cuál es el tamaño ideal de

la partición de intercambio para cada tipo de instalación. Para quien no esté familiarizado

con el concepto de la memoria de intercambio, aclarar que se trata de un espacio del

disco duro que el sistema operativo usa como memoria RAM y en el que se almacenan

los procesos que tienen poco uso, permitiendo dejar la memoria RAM libre para otros

programas y procesos.

PARTICIÓN : Primaria

POSICIÓN : Principio

Seleccionamos Utilizar como: sistema ext3 transaccional y en la siguiente pantalla

pulsamos sobre área de intercambio, lo que nos devolverá a la pantalla anterior que se

nos mostrará modificada con la selección que hemos realizado.

Pulsamos en Se ha terminado de definir la partición y veremos que el disco duro en el

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 27 -

Instalación y configuración de centralita VoIP basada en asterisk

que hemos creado la partición de intercambio ahora presenta una partición nueva llamada

> #1 primaria 2GB f intercambio intercambio, justo debajo de la cual tenemos el

espacio libre disponible para generar más particiones. Pulsamos en

pri/lóg xxx.xx GB ESPACIO LIBRE

Crear una partición nueva

Continuar

PARTICIÓN : Primaria

En este punto volvemos seleccionar Utilizar como: sistema ext3 transaccional y en la

siguiente pantalla seleccionaremos volumen físico para RAID, lo que nos devolverá a la

pantalla anterior que se nos mostrará modificada con la selección que hemos realizado.

Pulsamos en Se ha terminado de definir la partición y estaremos de nuevo en la pantalla

inicial en la que se nos mostrará una partición RAID llamada > #2 primaria 318 GB k

raid.

Hemos de repetir toda la operación de creación de particiones con el segundo disco duro,

y nos tiene que quedar la pantalla de configuración de particiones con algo parecido a la

captura que vemos a continuación

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 28 -

Instalación y configuración de centralita VoIP basada en asterisk

Seleccionamos Configurar RAID por software para hacer que las particiones que hemos

creado se unan creando el espejo. Para ello en la siguiente pantalla se nos indica que hay

que realizar unos cambios IRREVERSIBLES que van a destruir la información de los

discos duros. Seleccionamos Sí y Continuar. Llegaremos a la configuración MD-RAID

(configuración Multi-Disco RAID).

Crear un dispositivo MD

TIPO : RAID1

ACTIVOS : 2

Nos pregunta cuántos dispositivos libres vamos a usar. Los dispositivos libres son discos

duros particionados para RAID, pero que se quedan en estado latente a la espera de que

alguno de los discos duros que están en uso falle, pasando en ese momento a estar activo

y a suplir la carencia del disco duro defectuoso. En nuestro caso no hemos querido tener

este sistema de seguridad extra, con lo que dejamos la opción que viene por defecto (0

discos) y Continuar. Llegamos a una nueva pantalla de configuración de RAID en la que

se nos solicita que marquemos dos particiones como dispositivos activos.

En nuestra instalación nos aparecen dos pequeños recuadros junto a los que nos aparecen

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 29 -

Instalación y configuración de centralita VoIP basada en asterisk

las reseñas /dev/sda1 y /dev/sdb1. Ni que decir tiene que hemos de marcar los dos

recuadros y Continuar lo que nos hace regresar a la pantalla de configuración MD-

RAID. Como ya hemos terminado de configurar nuestro sistema multi-disco en RAID1,

podemos Terminar.

Volvemos a la pantalla inicial donde hemos configurado las particiones, la cual ha

cambiado y ahora se nos presenta un nuevo disco llamado Dispositivo RAID1 #0 –

xxx.xx GB dispositivo RAID por software bajo el que aparece como está configurada la

partición RAID. Para poder acceder a dicha partición y modificarla, pulsaremos doble

click sobre > #1 xxx.xx GB. Volvemos a estar en una pantalla conocida, así que iremos

rápido.

Utilizar como: no utilizar, sistema ext3 transaccional

Punto de montaje: ninguno

/ - sistema de ficheros raíz

Se ha terminado de definir la partición

Finalizar el particionado y escribir los cambios en el disco

Y aunque nos parezca increíble, solamente nos falta seleccionar Sí y Continuar para

tener nuestro sistema asegurado mediante un disco duro espejo.

ZONA : Península

Para realizar cualquier operación crítica en el servidor, éste nos solicitará una contraseña

de superusuario. La contraseña ha de ser eficiente en términos de seguridad, con lo que

debe tener letras, números, símbolos y más de ocho caracteres. Para nuestra instalación,

vamos a poner como contraseña de root aste-2008*risk. Pulsamos en Continuar y se nos

solicita el nombre de un usuario para acceder al sistema. Aquí puedes introducir tu

nombre, Continuar. Ahora el nombre con el que el usuario va a acceder a la cuenta del

servidor que es operador (Continuar) y la contraseña operador2008 (Continuar). Es

importante tener en cuenta que Debian distingue entre mayúsculas en minúsculas.

Debian nos solicita una replica de red de la instalación para configurar el Gestor de

paquetes. Esto es debido a que el CD de Debian que estamos usando tiene solamente los

programas necesarios para comenzar las instalación, pero no el sistema operativo

completo, hemos de descargar desde una copia en Internet todos los programas que

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 30 -

Instalación y configuración de centralita VoIP basada en asterisk

necesitemos. Seleccionamos lo siguiente :

CONFIGURAR REPLICA : Si

REPLICA : España

SELECCIÓN DE REPLICA : Continuar

ENCUESTA DE PAQUETES : Sí

TIPO DE INSTALACIÓN : Sistema estándar

GRUB : Sí

Finalmente la instalación expulsa la bandeja del lector de CD (de la que hemos de extraer

la copia de Debian desde la que hemos estado instalando) y nos informa de que la

instalación a concluido. Pulsemos felices en Continuar y el sistema se reiniciará para

que podamos comenzar a trabajar con nuestro servidor.

3 INSTALACIÓN Y CONFIGURACIÓN DE SERVIDOR XEN

Vamos a proceder a la instalación del servidor XEN. Para ello hemos de iniciar sesión en

nuestro servidor con el usuario operador que hemos creado durante la instalación. Una

vez dentro del terminal del servidor, cambiamos la sesión a modo root con la instrucción

su, que nos pedirá la contraseña de administración.

Ahora instalamos los paquetes necesarios para XEN. Para instalarlos hemos de introducir

el siguiente comando :

aptitude install screen ssh debootstrap python python-twisted iproute bridge-utils

libcurl3-dev

Al hacerlo nos indicará que va a adquirir unos 25MB de archivos desde los repositorios a

lo que diremos que sí. Durante el proceso puede ser que el sistema nos solicite la

inserción del CD de instalación de Debian. Una vez finalizado el proceso vamos instalar

un meta paquete (conjunto de paquetes que hacen que una aplicación funcione) que nos

instalará XEN :

aptitude install xen-linux-system-2.6.18-6-xen-amd64

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 31 -

Instalación y configuración de centralita VoIP basada en asterisk

Igualmente solicitará la descarga de los paquetes. Una vez instalados, hay que tener en

cuenta que XEN solamente permite por defecto el uso de cuatro máquinas virtuales, pero

en nuestra instalación es probable que necesitemos más. Es por lo que vamos a cambiar

en GRUB (el gestor de arranque del sistema) un valor para permitir hasta 6 máquinas

virtuales. Para hacerlo hemos de usar un procesador de textos de consola de los muchos

que vienen con Debian (Emacs, vi, joe, nano, etc) y editar el archivo menu.lst añadiendo

al final de la línea module /boot/vmlinux-2.6.18-6-xen-amd64 root=/dev/sda1 ro

console=tty0 la instrucción max_loop=X donde X es la cantidad máxima de máquinas

virtuales que queremos tener en ejecución. En este caso nosotros vamos a asegurarnos de

que la linea quede así: module /boot/vmlinux-2.6.18-6-xen-amd64 root=/dev/sda1 ro

console=tty0 max_loop=8. Para editar el fichero la instrucción y la ruta es

vi /boot/grub/menu.lst

En una instalación normal, el siguiente paso sería configurar la tarjeta de comunicaciones

Digium mediante el driver existente para Debian, pero debido a que queremos que la

tarjeta funcione en una máquina virtual, hay que indicarle al sistema que tiene que

“enmascarar” el funcionamiento de la tarjeta Digium y hacer que la use una máquina

virtual. Para ello lo primero que hemos de hacer es comprobar en qué dirección del BUS

PCI está detectada la tarjeta. Usamos la instrucción lspci -v que nos suministra

información en pantalla de todos los recursos PCI usados, y buscamos donde nos pone

algo similar a lo siguiente (cambia en función de cada marca y modelo de tarjeta de

comunicaciones) : 01:06.0 Ethernet controller Digium Inc. Unknown device 8005.

Esto nos informa que la dirección 01:06.0 es la que vamos a indicar a la máquina virtual

para que use en exclusiva la tarjeta de comunicaciones. Es importante comprobar en el

resultado devuelto por lspci que ninguna otra tarjeta ni dispositivo del sistema está

ocupando la misma dirección, puesto que podría provocar problemas. Si algo estuviese

usando la misma dirección debemos intentar solucionarlo cambiando la tarjeta de slot

PCI o deshabilitando en la BIOS del servidor dispositivos que no sean necesarios, tales

como puertos serie, paralelo, firewire, etc. Y para que XEN use la tarjeta en exclusiva

hemos de volver a editar el archivo menu.lst y añadir a la linea de XEN, que hemos

modificado anteriormente para poder tener más máquinas virtuales, la instrucción

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 32 -

Instalación y configuración de centralita VoIP basada en asterisk

pciback.hide=(01:06.0). Una vez modificado reiniciamos el servidor con reboot.

Al reiniciar entramos ya con la opción de GRUB que hemos estado modificando (la

opción que carga XEN. Ahora tenemos que indicar al sistema que la gestión de red que

van a usar las máquinas virtuales será pasando por la máquina principal. Para ello hemos

de editar como administrador de sistema el fichero xend-config.sxp

vi /etc/xend-config.sxp

y buscamos la linea # (network-script network-bridge), a la que le hemos de eliminar

la # para que este activa. Y hemos de hacer la operación inversa con la linea (network-

script network-dummy) a la que le tenemos que añadir # delante para que no se tenga

en cuenta a la hora del inicio de XEN.

Para que los cambios realizados en la configuración de XEN sean operativos hemos de

reiniciar el demonio (daemon) que lo gestiona. Un demonio es un programa que entra en

funcionamiento al iniciar el sistema y que realiza una labor de manera transparente al

usuario, sin que tenga que intervenir para nada en su ejecución o gestión. Existen

demonios que están funcionando para comprobar cuando se inserta un dispositivo USB o

que comprueban si existen peticiones de acceso al servidor por ftp, ssh, etc. Para poder

reiniciar el demonio que gestiona XEN hemos de introducir la instrucción

/etc/init.d/xend restart

que hace que tengamos finalmente configurado y en espera nuestro servidor XEN. Ahora

vamos a crear nuestra primera máquina virtual en la que vamos a instalar Asterisk.

En primer lugar hemos de crear un usuario para almacenar las máquinas virtuales. Le

vamos a llamar mvirtual. Para crear el usuario usamos

adduser mvirtual

y entramos en la carpeta /home de dicho usuario

cd /home/mvirtual

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 33 -

Instalación y configuración de centralita VoIP basada en asterisk

creamos un directorio para almacenar las máquinas virtuales

mkdir maquinas

y accedemos al directorio

cd maquinas

creamos las imágenes del sistema de archivos que vamos a usar para la máquina virtual,

necesitando una partición que nosotros vamos a generar de 20GB en ext3 para el sistema

y otra partición de 500Mb para intercambio. Creamos las imágenes con

dd if=/dev/zero of=mvasterisk.img bs=1024k count=20000

dd if=/dev/zero of=mvasterisk-swap.img bs=1024k count=500

y le indicamos a cada imagen el sistema de archivos que va a usar (nos avisará de que

mvasterisk.img es un dispositivo especial de bloques y pedirá autorización)

mkfs.ext3 mvasterisk.img

mkfs.ext3 mvasterisk-swap.img

Ya tenemos preparadas las máquinas virtuales para instalarles el sistema operativo sobre

el que va a correr Asterisk. Para instalar el sistema operativo, lo haremos directamente

desde Internet mediante la instrucción debootstrap que descarga, con una sola línea de

comando, lo imprescindible para que funcione un sistema Debian. Para hacerlo primero

creamos una carpeta temporal para “montar”, (almacenarlo en una carpeta a la que

Debian tenga acceso), el sistema de archivos ext3 que hemos creado para la máquina

virtual

mkdir /home/mvirtual/maquinas/temporal

montamos la imagen virtual

mount -o loop /home/mvirtual/maquinas/mvasterisk.img /home/mvirtual/maquinas/

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 34 -

Instalación y configuración de centralita VoIP basada en asterisk

temporal/

instalamos el sistema desde Internet

debootstrap --arch amd64 etch /home/mvirtual/maquinas/temporal/

http://ftp.es.debian.org/debian

Esto iniciará un proceso de descarga de archivos del sistema operativo nos dará el

mensaje I: Base system installed successfully si todo ha salido bien. En este momento

tenemos un sistema Debian instalado en el sistema de archivos que hemos creado con

anterioridad y que hemos montado en el directorio temporal/ (si miramos en el

directorio, veremos una estructura de árbol de ficheros clásica de Debian). Vamos a

conectar con este nuevo sistema operativo. Para hacerlo, vamos a usar la instrucción

chroot /home/mvirtual/maquinas/temporal/

Un entorno chroot sirve para trabajar "como si" tuviéramos un árbol de ficheros

diferente. Esto sirve para simular, por ejemplo, que tenemos instalado un cierto conjunto

de paquetes, o incluso distribuciones Linux enteras. Por ejemplo, en una máquina

instalada con Debian “estable” podemos crear un directorio donde instalemos Debian

“inestable” para probar algunos paquetes más actualizados. Una vez que tenemos

montado el entorno chroot, podemos preparar de forma sencilla unos scripts (programas)

para ejecutar aplicaciones que residen en él de forma casi transparente. Así podemos

utilizar aplicaciones de una versión más nueva de Debian sin tener que reinstalar todo el

sistema.

Esto significa que desde el momento en el que hemos ejecutado la instrucción chroot

temporal/ estamos “dentro” de un nuevo sistema operativo y las operaciones que

hagamos sobre el mismo no afectan al sistema base sobre el que se está ejecutando.

Todos los comandos que escribamos a partir de ahora solamente afectaran a la máquina

que hemos creado.

chroot temporal/

El sistema base Debian adolece de no tener configurado absolutamente nada de lo que

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 35 -

Instalación y configuración de centralita VoIP basada en asterisk

nos va a hacer falta, con lo que hemos de adquirir desde los repositorios de Debian los

paquetes con los programas que vamos a usar. En primer lugar obtenemos el editor de

textos que vayamos a usar, en nuestro caso

aptitude install vim

con lo cual ya podemos editar el archivo sources.list para añadir los repositorios desde

los que vamos a ir actualizando y mejorando nuestro sistema base

vi /etc/apt/sources.list

Hemos de asegurarnos que en el archivo que estamos editando aparezcan las siguientes

líneas (si no están, hemos de añadirlas):

deb http://ftp.es.debian.org/debian/ etch main

deb-src http://ftp.es.debian.org/debian/ etch main

deb http://security.debian.org/ etch/updates main contrib

deb-src http://security.debian.org/ etch/updates main contrib

y una vez añadidas y guardado el archivo, hemos de actualizar nuestro sistema

aptitude update

aptitude dist-upgrade

Instalamos el paquete locales que nos pondrá el sistema en español mediante dos

sencillas instrucciones

aptitude install locales

dpkg-reconfigure locales

En el listado de locales que nos sale, seleccionamos es_ES.UTF-8 UTF-8 y

en_US.UTF-8 UTF-8, con lo que tras darle a ok tendremos habilitados los idiomas

Español e Inglés. Se nos solicita cuál va a ser el idioma predeterminado, a lo que

contestamos es_ES.UTF-8.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 36 -

Instalación y configuración de centralita VoIP basada en asterisk

Y ahora instalamos de una sentada varias aplicaciones útiles para nuestros fines de las

cuales iremos viendo posteriormente su uso

aptitude install ssh zip unzip screen less iftop psmisc udev

Editamos el fichero que contiene el nombre de nuestra nueva máquina virtual

vi /etc/hostname

y le ponemos de nombre asterisk para que se llame así en nuestra red la máquina virtual,

solamente tendríamos que añadir la línea

asterisk

Editamos un fichero de configuración de gestión de dispositivos llamado fstab. Este

fichero se encarga de configurar, al inicio del sistema, las particiones y dispositivos a los

que va a tener acceso una máquina o servidor (ya sea real o virtual), para modificarlo

vi /etc/fstab

y añadir dos lineas como las indicadas a continuación

/dev/hda1 / ext3 defaults 1 2

/dev/hda2 none swap sw 0 0

lo que hará que nuestra máquina virtual sepa que dispone de una partición ext3 para el

sistema y de otra partición swap para intercambio, no configurando ningún dispositivo

tipo lector de DVD o almacenamiento USB. Solamente tendremos acceso a esta máquina

virtual a través de la red, la cual también tenemos que configurar, puesto que si no lo

hacemos dejamos la máquina sin posibilidad de acceso. Para configurar la red

modificamos el archivo interfaces

vi /etc/network/interfaces

añadiendo dos lineas que le indican cual es el interface de red que va a utilizar, que en

nuestro caso no es una tarjeta de red física, sino una interconexión entre máquinas (en

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 37 -

Instalación y configuración de centralita VoIP basada en asterisk

este caso entre la virtual y la real). Las lineas a añadir son

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address 192.168.0.111

netmask 255.255.255.0

gateway 192.168.0.1

Seguimos configurando la red. Ahora le toca el turno al fichero hosts, en el que

normalmente se indican las IP conocidas de máquinas a las que queramos tener acceso

habitualmente, junto con su nombre en la red. En nuestro caso solamente vamos a indicar

la dirección IP local

vi /etc/hosts

y añadimos

127.0.0.1 localhost.localdomain localhost

# Las siguientes lineas son convenientes para hosts con soporte Ipv6

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts

Ha todo esto ya hemos terminado de realizar casi todas las modificaciones requeridas

para que nuestra máquina virtual esté terminada. Nos queda salirnos del “chroot” para

que las operaciones que hagamos a partir de ahora se ejecuten en nuestra máquina real,

para ello escribimos

exit

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 38 -

Instalación y configuración de centralita VoIP basada en asterisk

y ya en la máquina real copiamos parte de los archivos de XEN dentro del árbol de

archivos de la máquina virtual (el cual aún tenemos montado en el directorio temporal).

Para realizar la copia al sitio adecuado, la instrucción es

cp -dpR /lib/modules/2.6.18-6-xen-amd64/

/home/mvirtual/maquinas/temporal/lib/modules

tras lo que desmontamos de la carpeta temporal/ el archivo de imagen de la máquina

virtual con la el comando umount

umount temporal/

En este punto tenemos la maquina virtual con nombre de host mvbase almacenada en el

archivo de imagen mvasterisk.img dentro del directorio /home/mvirtual/maquinas/ y

preparada para entrar en funcionamiento. Vamos a crear una carpeta llamada asterisk y

vamos a copiar dentro la máquina base con el nombre mv01.img (acrónimo de máquina

virtual 01) . Es en esa máquina virtual donde vamos a instalar y configurar realmente

Asterisk. Para ello

mkdir /home/mvirtual/maquinas/asterisk

cp -pf /home/mvirtual/maquinas/mvasterisk.img/

/home/mvirtual/maquinas/asterisk/mv01.img

cp -pf /home/mvirtual/maquinas/mvasterisk-swap.img/ /home/mvirtual/maquinas/

asterisk/mv01-swap.img

Entramos en la recta final. Ahora tenemos que crear el fichero de configuración de la

máquina virtual en la máquina real, que le va a indicar a esta ultima como va a tener que

gestionar los recursos hardware de los que dispone y que parte de esos recursos van a ser

dedicados a la máquina virtual. Creamos el directorio

mkdir /etc/xen/auto

y creamos el fichero

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 39 -

Instalación y configuración de centralita VoIP basada en asterisk

vi /etc/xen/auto/asterisk.sxp

con las siguientes instrucciones en su interior

name=”asterisk”

kernel=”/boot/vmlinuz-2.6.18-6-xen-amd64”

ramdisk=”/boot/initrd.img-2.6.18-6-xen-amd64”

root=”/dev/hd1 ro”

memory=256

disk=['file:/home/mvirtual/maquinas/asterisk/mv01.img,hda1,w','file:/mvirtual/maqui

nas/asterisk/mv01-swap.img,hda2,w']

vif=['mac=']

dhcp=”off”

pci=['01:06.0']

ip=”172.16.0.211”

netmask=”255.255.255.0”

gateway=”172.16.0.1”

hostname=”asterisk”

extra='2'

Creemos conveniente explicar someramente para qué sirven las instrucciones que hemos

introducido en este fichero, por si el lector desea realizar modificaciones.

Name es lógicamente el nombre de la máquina virtual (nombre que tendrá en la red).

Las lineas kernel y ramdisk hacen referencia a dos ficheros de imagen del kernel

(núcleo del sistema operativo Linux) que están almacenados en nuestra máquina

principal y que son los que hacen que la máquina arranque, puesto que contienen la base

del sistema. Al hacer referencia a ese kernel, la máquina virtual adquiere dicho núcleo y

lo utiliza para su funcionamiento. El que esto sea un parámetro modificable es debido a

que en un sistema Linux podemos tener instalados varios núcleos diferentes y usarlos en

función de nuestras necesidades.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 40 -

Instalación y configuración de centralita VoIP basada en asterisk

La linea root indica cual va a ser el disco duro principal de la máquina virtual. En este

caso nosotros le estamos indicando que es hda1.

La linea memory indica cuanta de la memoria física de nuestra máquina real va a ser

dedicada en exclusiva a la máquina virtual.

La linea disk describe que archivos de imagen serán usados como discos duros y en que

dispositivo se van a montar.

La linea vif sirve para asignar a la tarjeta de red virtual de la máquina una dirección mac

(dirección única para cada dispositivo de red). Esto es debido a que si no le asignamos

una mac, cada vez que iniciamos el sistema se creará aleatoriamente una nueva, que nos

generará a su vez un nuevo dispositivo de red. Eso conlleva dificultades de configuración

que no nos podemos permitir. Es por ello que hay que poner una mac dentro de un rango

que tiene asignado XEN por el organismo certificador IEEE. El rango es la mac cuyos

tres primeros pares sean 00:16:e3:xx:xx:xx, debiendo sustituir las xx por los dígitos

hexadecimales generados por el sistema en el primer inicio.

La linea dhcp sirve para, en el caso de que tengamos un servidor dhcp, que la máquina

virtual adquiera automáticamente la dirección ip que le permita conectar a la red.

La linea pci le dice a la máquina virtual que use en exclusiva un dispositivo pci con la

dirección de bus que se le indica.

El resto de parametros son obviamente la configuración de red que el lector ha de

adecuar los valores en función de sus necesidades.

Ahora nos queda reiniciar nuestro servidor y volver a acceder como administrador

sudo reboot

introducir usuario y contraseña de operador

su

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 41 -

Instalación y configuración de centralita VoIP basada en asterisk

introducir contraseña de root y ejecutar una orden que nos va a permitir conectarnos con

nuestra máquina virtual

xm console asterisk

a partir de este momento estamos dentro de la máquina virtual asterisk, para acceder

indicamos que el usuario es root (sin contraseña, puesto que aún no se la hemos

configurado a esta máquina), una vez accedemos a la consola de la máquina virtual,

ejecutamos el comando que nos muestra los interfaces de red y sus parametros de

configuración

ifconfig

donde vemos que dirección física ha tomado la tarjeta de red eth0, la cual comenzará con

00:16:3e: y hemos de copiar completa para poder introducirla en el fichero de

configuración de XEN. Para ello cambiamos de consola con ALT+F3 (por ejemplo,

aunque podemos usar cualquier de las otras consolas disponibles en Debian) y volvemos

a seguir los pasos de acceso hasta ser usuario administrador. En ese momento editamos

de nuevo el fichero

vi /etc/xen/auto/asterisk.sxp

y la linea con la instrucción vif debemos añadir la dirección mac que hemos copiado de

los parametros del interface de red eth0 en la máquina virtual asterisk. La línea debería

de quedar mas o menos

vif=['mac=00:16:3e:xx:xx:xx']

guardamos el fichero y hemos terminado de configurar XEN. Ahora podemos usar

algunas instrucciones para controlar nuestra, de momento, única máquina virtual.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 42 -

Instalación y configuración de centralita VoIP basada en asterisk

4 COMANDOS PARA GESTIONAR LAS MÁQUINAS VIRTUALES XEN

Estar delante de una linea de comandos nos da poca información de como está

configurado un sistema de máquinas virtuales, así que vamos a aprender un poco a

4.1 LISTAR MÁQUINAS VIRTUALES :

Para ello hemos de usar la instrucción xm list que nos indica cuantas máquinas

virtuales tenemos operativas y su estado, suministrando información útil como

el nombre de las máquinas (siendo Domain-0 la máquina real), la id asignada

por XEN para referirnos a ellas, la memoria RAM asignada, las CPUS virtuales

que van a ser usadas por cada máquina, el estado y los tiempos de proceso

consumidos para saber que máquinas tienen más carga de trabajo.

4.2 LISTAR RECURSOS CONSUMIDOS POR LAS MÁQUINAS :

Usando el comando xm top podemos observar los recursos consumidos por las

diferentes máquinas y ordenarlos por CPU, memoria, o cualquier otro parámetro

que nos resulte útil para poder asignar recursos del sistema a las diferentes

máquinas.

4.3 AJUSTAR CANTIDAD DE MEMORIA USADA POR MÁQUINA :

Con el comando xm mem set podemos repartir y modificar en “caliente”

(estando las máquinas virtuales funcionando) la memoria del sistema e indicar

cuanta queremos que use cada máquina virtual en un momento determinado. Si

reiniciamos cualquiera de las máquinas, tomará la cantidad de memoria por

defecto que se le haya indicado en el fichero de configuracion .sxp con el

nombre de la máquina.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 43 -

Instalación y configuración de centralita VoIP basada en asterisk

4.4 INSTRUCCIONES DE PARADA :

Con los comandos xm pause, xm reboot y xm shutdown podemos

respectivamente pausar, reiniciar y apagar una máquina virtual. Una vez

apagada la máquina virtual volveremos a la consola desde la que accedimos a

ella o desde la que la iniciamos.

4.5 INSTRUCCIONES DE MIGRACIÓN :

Con la instrucción xm migrate podemos mover una máquina virtual completa

que esté gestionando por ejemplo nuestra centralita y cambiarla de un ordenador

a otro sin que en ningún momento (o solo unos pocos milisegundos) deje de

funcionar nuestro sistema. Las posibilidades de esta instrucción son tremendas,

ya que podemos mover un servicio desde una máquina situada en un país a otra

máquina en otro país distinto.

4.6 INICIO MANUAL DE MÁQUINA XEN :

Hemos configurado el sistema para que arranque automáticamente nuestra

máquina virtual, pero podríamos iniciar máquinas que no deseemos que se

ejecuten al inicio con la instrucción xm create /<ruta>/<nombre fichero .sxp>.

4.7 MÉTODOS DE ACCESO A MÁQUINA VIRTUAL XEN :

Para poder acceder a nuestras máquinas virtuales, tenemos la opción de

conectarnos tal que si de un ordenador normal se tratase, a través de cualquiera

de los puertos de uso común, tal que por ejemplo ssh, telnet, ftp, etc o

podríamos iniciar una sesión de consola con algún programa de gestión remota

tipo PUTTY, pero la forma más cómoda de acceder a nuestras máquinas

virtuales cuando estamos en el equipo que las está ejecutando, es usar la

instrucción xm console <nombre máquina virtual> con lo que se nos abrirá un

terminal de consola que nos pedirá usuario y contraseña.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 44 -

Instalación y configuración de centralita VoIP basada en asterisk

Una vez introducidos, estaremos dentro de la máquina virtual, y podremos

manipularla, instalarle paquetes (programas) y usar dichos programas, tal que si

de un ordenador real se tratase.

Para cerrar la consola de la máquina virtual, hay que usar la secuencia de teclas

control + ] (símbolo de cerrar corchete).

5 INSTALACIÓN Y CONFIGURACIÓN DE ASTERISK.

Para instalar Asterisk, en primer lugar reiniciamos nuestra máquina real para que todos

los cambios que hemos realizado se ejecuten. Podemos comprobar si nuestra máquina

virtual está operativa con la instrucción xm list que nos reportará información de

Domain-0 (nuestra máquina real) y de Asterisk (nuestra máquina virtual). Para poder

acceder a nuestra máquina virtual solamente tendremos que poner

xm console asterisk

y estaremos en una consola de la máquina virtual que nos solicita el usuario. Accedemos

como usuario root sin contraseña y escribimos la instrucción

passwd

tras lo que el sistema nos solicita por dos veces una contraseña para el usuario

administrador. El lector puede tomarse la libertad de elegir una contraseña, aunque

recomendamos que cumpla los mínimos exigidos de seguridad que exponíamos en el

punto dos de este documento (denominado Instalación y configuración de Debian). Por

fin estamos dentro de nuestra máquina virtual y autentificados como root. Vamos a

instalar Asterisk.

El software de gestión PBX Asterisk está capacitado para trabajar con diferentes tarjetas

de comunicaciones. Pero hemos de saber a que tipo de línea telefónica nos vamos a

conectar para poder instalar y configurar en nuestra máquina virtual la tarjeta adecuada.

Nuestra línea puede ser analógica (convencional) o digital (RDSI), en el caso de ser

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 45 -

Instalación y configuración de centralita VoIP basada en asterisk

digital podríamos tener una linea de acceso BRI (acrónimo de Basic Rate Interface –

interface de tipo básico) que nos proporciona dos canales de voz, o podríamos tener una

línea PRI (acrónimo de Primary Rate Interface – interface de tipo primario) que nos

proporciona treinta canales de voz en formato de transmisión digital E1. Este ultimo

solamente suele ser utilizado en medianas y grandes empresas.

Pero como desgraciadamente no disponemos de una linea digital, vamos a centrarnos en

lo que necesitamos para funcionar con líneas analógicas. Para ello se necesitan tarjetas

con interfaces FXO (acrónimo de Foreign Exchange Office – oficina de intercambio

externo) que son dispositivos informáticos que permiten conectar un ordenador a la red

telefónica básica (RTB) y mediante un software especial, realizar y recibir llamadas de

teléfono. También necesitaremos interfaces FXS que son dispositivos que permiten

conectar un teléfono a un ordenador. Grosso modo podríamos decir que los interfaces

FXO son de entrada y los FXS son de salida. En nuestro caso, debido a que solo tenemos

una línea de teléfono solamente vamos a necesitar un FXO y debido también a que los

teléfonos analógicos que vamos a utilizar los vamos a conectar a un dispositivo hardware

que nos los va a transformar en extensiones IP, no necesitaremos conectar a nuestra

tarjeta de comunicaciones ningún interface FXS. Un interface FXO físicamente es un

conector RJ11 como aquel en el que conectamos nuestros teléfonos fijos en la pared de

nuestras casas, y que gracias a las tarjetas de comunicaciones lo tenemos disponible en

nuestro ordenador. Para “instalarlo” solo tenemos que conectar con un cable de teléfono

el ordenador a la pared.

5.1 PAQUETES BÁSICOS NECESARIOS.

Para poder instalar Asterisk, necesitamos instalar antes unos cuantos paquetes

desde los repositorios Debian. Para poder instalar dichos paquetes, solamente

tendremos que copiar en la consola de nuestra máquina virtual, estando

validados como administradores, la siguiente instrucción en la que vienen

recogidos los nombres de los mismos

aptitude install bison libncurses5-dev libnewt-dev zlib1g-dev libssl-dev initrd-

tools procps linux-headers-2.6.18-6-xen-amd64 build-essentials pciutils

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 46 -

Instalación y configuración de centralita VoIP basada en asterisk

libmysqlclient15-dev

Con esto obtenemos librerías (conjuntos de pequeños programas para ser usados

en programas más complejos) y herramientas de compilación (que permiten

generar programas ejecutables a partir de lineas de código de programación).

Estas herramientas de compilación son indispensables para configurar nuestra

tarjeta de comunicaciones y el software Asterisk. Es muy importante leer los

resultados de las descargas e instalación de los paquetes, ya que en ocasiones

puede pasar que no sea correcto el nombre de alguno de ellos por cambio de la

versión o cualquier otra circunstancia. En caso de que alguno fallara, hemos de

mirar en los repositorios el nombre de la versión nueva y modificar la

instrucción aptitude con nombre correcto del paquete.

5.2 DESCARGA Y COMPILACIÓN DEL SOFTWARE ASTERISK.

Creamos y accedemos a una carpeta donde vamos a guardar el software

necesario para instalar y configurar Asterisk

mkdir asterisk

cd asterisk

y ejecutamos las instrucciones de descarga de la ultima versión de los paquetes

necesarios desde la página web de la empresa Digium (creadora e impulsora de

Asterisk)

wget http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz

wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz

wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz

wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-

current.tar.gz

En el momento en el que nosotros nos descargamos estos paquetes ya existen en

fase beta (fase de pruebas) unos paquetes correspondientes a la versión 1.6 y por

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 47 -

Instalación y configuración de centralita VoIP basada en asterisk

ello avisamos al lector que si las instrucciones de descarga no funcionan, acceda

al ftp de Digium mediante un navegador web y compruebe cual es la ultima

versión disponible para indicarlo en las instrucciones wget.

Ahora descomprimimos y compilamos cada uno de los archivos que hemos

descargado, para ello hemos de utilizar secuencialmente las siguientes

instrucciones (tener en cuenta que pueden cambiar si cambian las versiones de

los paquetes)

tar -zxvf zaptel-1.4-current.tar.gz

cd zaptel-1.4.10.1

./configure

make menuselect

en este momento nos sale un menú ZAPTEL MODULE SELECTION en el

que usando los cursores entramos en todos los apartados y seleccionamos todos

los módulos, tras lo que pulsamos la tecla x para grabar los cambios

Continuamos, (revisando que las instrucciones no generan ningún error), con

make

make install

make config

cd ..

tar -zxvf libpri-1.4-current.tar.gz

cd libpri-1.4.4

make

make install

cd ..

tar -zxvf asterisk-1.4-current.tar.gz

cd asterisk-1.4.19.2

./configure

make menuselect

en el menú dejamos todo por defecto, a excepción de la sección CORE

SOUND PACKAGES en la que añadimos todos los paquetes de sonidos en

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 48 -

Instalación y configuración de centralita VoIP basada en asterisk

español marcando los puntos donde pone CORE-SOUNDS-ES-<formato

audio>. Estos sonidos son locuciones que podremos usar en el contestador

automático de la centralita si no queremos generar unos ficheros de audio

propios. También podemos incluir los puntos 13 y 14 completos, lo que nos

facilita música para dejar llamadas en espera y complementos de sonido para

usos varios. Pulsamos x para salvar y continuamos con la compilación

make

make install

make samples

cd ..

tar -zxvf asterisk-addons-1.4-current.tar.gz

cd asterisk-addons-1.4.6

./configure

make menuselect

no tocamos nada de la configuración y pulsamos x para grabar

make

make install

make samples

cd /

con lo que hemos terminado de instalar Asterisk y el software Zaptel, que

contiene los drivers de la tarjeta de comunicaciones Digium TDM400P que

estamos usando en nuestro servidor. Además hemos instalado los módulos

necesarios para poder utilizar usar la información que genera Asterisk desde una

base de datos y gestionar dicha información (CDR).

5.3 CONFIGURACIÓN INICIAL TRAS LA INSTALACIÓN.

Ahora que tenemos instalado Asterisk, hemos de realizar unas modificaciones al

sistema para que cada vez que lo iniciemos, cargue todo lo necesario para que

nuestra centralita funcione. En primer lugar configuramos Zaptel con la zona

donde nos encontramos y la cantidad de FXO y FXS que va a gestionar. Para

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 49 -

Instalación y configuración de centralita VoIP basada en asterisk

ello editamos

vi /etc/zaptel.conf

y como solamente vamos a usar una linea FXO, buscamos donde aparece

fxsks=1 y si no existe lo añadimos. Si quisiéramos añadir teléfonos analógicos

conectados directamente al ordenador en los hipotéticos FXS que podríamos

instalar en nuestra tarjeta de comunicaciones, tendríamos que asegurarnos que

aparece la linea fxoks=1,2,3,4 (o el número de lineas que quisiéramos

gestionar).

Dentro del mismo fichero hemos de modificar o añadir también donde pone

loadzone por loadzone = es. Es conveniente hacer notar que para las líneas FXO

estamos añadiendo la orden de señal fxsks (señal FXS) y viceversa para las

lineas FXS. Esto es porque las tomas de entrada, requieren señal de salida y

porque las tomas de salida requieren señal de entrada. Guardamos los cambios y

continuamos.

Para que los módulos de Zaptel se carguen en el encendido de nuestra máquina

virtual, hemos de modificar el fichero

vi /etc/rc.local

y añadir por encima de la instrucción exit 0 estos comandos

/etc/rc.local/modprobe zaptel

/etc/rc.local/modprobe wctdm

ztcfg

Guardamos, reiniciamos nuestra máquina virtual con reboot y volvemos a

acceder a ella (con xm console asterisk y suministrando la contraseña de root).

Con la instrucción ztcfg -vv nos aparecen los canales que tenemos disponibles

para configurar. En nuestro caso nos aparece “Channel 01 : FXS Kewlstart

(Default) (Slaves : 01)” indicando que tenemos un canal analógico disponible

para darnos servicios de voz. Estamos en el buen camino, parece que todo

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 50 -

Instalación y configuración de centralita VoIP basada en asterisk

funciona.

5.4 Ficheros y directorios de Asterisk.

En la instalación, Asterisk a creado una serie de directorios y ficheros que es

conveniente conocer, para proceder a la configuración de las extensiones y

conocer un poco mejor la aplicación. Veamos una somera explicación de lo que

contiene cada uno.

/etc/asterisk : Contiene los ficheros de configuración. Gracias a haber ejecutado

la instrucción make samples durante el proceso de instalación, tenemos unos

ejemplos de dichos ficheros de configuración sobre los que podríamos

comenzar a funcionar.

/usr/lib/asterisk/modules : Contiene los módulos de Asterisk que hemos

compilado con las instrucciones make.

/var/lib/asterisk : Aquí están almacenadas las librerías (archivos que contienen

secciones de programa o subprogramas que son necesarios para el

funcionamiento de otro programa más complejo).

/var/lib/asterisk/agi-bin : Directorio para contener los AGI (acrónimo de

Asterisk Gateway Interfaces), que son interfaces para poder integrar PHP, C,

PERL y otros lenguajes de programación con Asterisk.

/var/spool/asterisk : Directorio de almacenamiento de archivos generados por

Asterisk durante su funcionamiento. Estos archivos pueden ser por ejemplo de

audio, generados por el contestador automático al grabar los mensajes de los

usuario y almacenarlos para ser enviados por correo electrónico al usuario de la

extensión que ha recibido la llamada. También pueden ser documentos de

imagen de fax, etc.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 51 -

Instalación y configuración de centralita VoIP basada en asterisk

/var/log/asterisk : Almacén de los archivos log de Asterisk. Un archivo log es

un archivo de texto plano en el que se plasma cualquier acción que realiza un

programa, servidor o aplicación. Aquí podremos encontrar información

pormenorizada de que ha hecho Asterisk desde el inicio de sistema, hasta la

ultima de las llamadas emitidas o recibidas con información relativa a las

mismas. Aquí se almacenan los archivos de los que se alimenta el CDR de

Asterisk que nos va a suministrar información estadística de las llamadas.

5.5 ASTERISK CLI (COMMAND LINE INTERFACE) : Asterisk dispone de

una interfaz de comandos (como una consola de Linux, pero que incluye

instrucciones que afectan directamente al funcionamiento de la centralita). La

cantidad de instrucciones de manipulación y gestión es inmensa y no está a

nuestro alcance el hacer un manual pormenorizado de cada una de ellas.

Durante la configuración de la centralita vamos a usar apenas dos o tres

instrucciones y para quién desee profundizar en el tema, en la bibliografía

hemos indicado unas cuantas páginas web que explican (en ingles) el uso de los

diferentes comandos. Para iniciar Asterisk y acceder al CLI solamente

tendríamos que escribir la instrucción

asterisk -vvvvvvvvvvc (no usar)

aunque lo normal no es que se acceda al CLI Asterisk mediante este método,

sino escribiendo la instrucción

asterisk

que arranca la aplicación en segundo plano y accediendo al CLI mediante la

instrucción

asterisk -vvvvvvvvvvr

En el CLI existen instrucciones para crear extensiones, perfiles, gestionar

codecs (interpretes) de audio y etc. Estas instrucciones no las vamos a utilizar,

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 52 -

Instalación y configuración de centralita VoIP basada en asterisk

puesto que vamos a realizar las modificaciones “a pelo” en los ficheros de

configuración. Esperamos en futuras revisiones de este proyecto, el añadir un

manual completo del CLI Asterisk. Para salir del CLI se usa el comando exit.

Hasta este punto, si hemos introducido la instrucción asterisk, tenemos nuestra

centralita funcionando y corriendo en segundo plano.

5.6 CONFIGURACIÓN INICIAL DE FICHEROS DE ASTERISK; LÍNEA,

EXTENSIONES Y CONTEXTOS.

Durante el proceso de instalación, se nos han generado en la carpeta

/etc/asterisk una serie de archivos de configuración a los que si echamos una

mirada, veremos que traen una cantidad brutal de información. En particular los

que más nos interesan son tres, denominados zapata.conf, extensions.conf y

sip.conf. Los ficheros generados automáticamente por asterisk en /etc/asterisk

tienen una configuración base y comentarios antes de cada instrucción que

explican (en inglés) qué hacen todos y cada uno de los parametros usados en

estos archivos.

Casi todos los parametros están comentados para que no tengan efecto, puesto

que la mayor parte de ellos se usan solamente en configuraciones muy

complejas de entornos de red. Para evitar confusiones y clarificar lo que vamos

haciendo, renombramos los ficheros, llamándolos por ejemplo

copiazapata.conf, copiaextensions.conf y copiasip.conf, para tener acceso a la

información que suministran en caso de que la necesitemos. Para renombrar

podemos usar la instrucción

mv /etc/asterisk/zapata.conf /etc/asterisk/copiazapata.conf

mv /etc/asterisk/extensions.conf /etc/asterisk/copiaextensions.conf

mv /etc/asterisk/sip.conf /etc/asterisk/copiasip.conf

El fichero zapata.conf es el que configura los canales (lineas telefónicas) que

va a tener activos nuestra tarjeta de comunicaciones. Como en este caso

solamente vamos a tener un canal, vamos a editar el archivo y a introducir las

instrucciones para activar y gestionar ese canal

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 53 -

Instalación y configuración de centralita VoIP basada en asterisk

vi /etc/asterisk/zapata.conf

e insertamos lo siguiente

[channels] ; afecta a todos los canales configurados

language = es ; selecciona el lenguaje

usercallerid = yes ; identifica la llamada

hidecallerid = no ; oculta la identificación de llamada

callwaiting = yes ; activa la llamada en espera

threewaycalling = yes ; activa la llamada a tres

transfer = yes ; permite transferir las llamadas

immediate = yes ;

faxdetect = both ; detecta si la llamada recibida es un fax

busydetect = yes ; detecta si la linea esta ocupada

group = 1 ; Indica que esta será la linea Zap 1

context = inicio ; contexto al que va a dirigir la linea la llamada

busycount = 7 ;

immediate = yes ;

signalling = fxs_ks ; tipo de señal que usa la linea

echocancel = yes ; cancelación de eco

echocancelwhenbridged = yes

answeronpolarityswitch = yes

hanguponpolarityswitch = yes

rxgain = 0.5 ;

txgain = 1.0 ;

channel =>1 ; la linea Zap 1 usará el canal 1 de la tarjeta

Digium

ahora editamos por primera vez un extensions.conf limpio al que vamos a

introducir dos contextos para realizar las pruebas de emisión y recepción de

llamadas. Un contexto es una secuencia de ordenes que englobamos con

etiquetas para clarificar su funcionamiento. En este caso vamos a crear un

contexto [inicio] que haga que se reciban llamadas desde la extensión 100 y otro

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 54 -

Instalación y configuración de centralita VoIP basada en asterisk

[salida] que haga que puedan hacerse llamadas desde dicha extensión, para ello

vi /etc/asterisk/extensions.conf

y añadimos en el fichero las siguientes instrucciones

[general]

static = yes ;

writeprotect = no ;

autofallthrough = yes ;

clearglobalvars = no ;

priorityjumping = no ;

language = es ; idioma español en todos lo ficheros

[inicio]

include = salida

exten => s,1,Answer() ; descuelga

exten => s,n,Dial(Sip/100,30,tr) ;manda la llamada a

ext100

exten => s,n,Hungup() ; cuelga al terminar

[salida]

exten => _9XXXXXXXX,1,Dial(Zap/1/${EXTEN},,tTr)

exten => _9XXXXXXXX,n,Hangup

exten => _6XXXXXXXX,n,Dial(Zap/1/${EXTEN},,tTr)

exten => _6XXXXXXXX,n,Hangup

Por ultimo editamos el fichero del protocolo de transmisión sip.conf para añadir

una extensión que llamaremos [100]. El nombre ha de ser numérico y nos va a

permitir posteriormente realizar o pasar llamadas entre extensiones, así que

editamos

vi /etc/asterisk/sip.conf

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 55 -

Instalación y configuración de centralita VoIP basada en asterisk

añadiendo los siguientes parametros

[100] ; nombre de la extensión (linea personal)

username=100 ; nombre del usuario (mismo que extensión)

type=friend ; permite enviar y recibir llamadas

;secret= ; permite poner una contraseña para activación

;callerid= ; muestra este valor al hacer una llamada

language=es ; lenguaje en español en todos los ficheros

context=inicio ; contexto al que se dirige esta extensión

nat=yes ; permite llamadas por internet

host=dynamic ; se puede usar desde cualquier ip de la red

canreinvite=no ;

Con estos tres ficheros, si lo hemos hecho bien, nuestra centralita debe de poder

recibir llamadas a la extensión 100 (en el capitulo 6 configuraremos el hardware

PAP2T para que funcione dicha extensión). Pero antes de pasar a realizar las

pruebas, vamos a detenernos a examinar que es lo que hemos hecho en los tres

ficheros de configuración que hemos introducido. Es muy importante y

conveniente tener claro que hace cada uno de los ficheros y conocer las

instrucciones básicas que hemos introducido, para poder posteriormente ir

aumentando la complejidad del entramado de nuestra centralita. La mayoría de

las opciones las hemos comentado con ; <nota del programador> , que es como

se hacen los comentarios en los ficheros de Asterisk, pero vamos a hacer

especial hincapié en aquellas líneas que son cruciales para la configuración y en

aquellos conceptos que han de ser comprendidos.

5.7 ARCHIVOS SIP.CONF, IAX.CONF Y DEMÁS FICHEROS DE

PROTOCOLO DE COMUNICACIONES.

Los archivos de protocolo de comunicaciones se usan para seleccionar que

protocolo usará cada extensión. Asterisk lee todos los archivos de protocolo a la

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 56 -

Instalación y configuración de centralita VoIP basada en asterisk

hora de iniciarse y activa las extensiones (lineas personales) que estén

configuradas en todos ellos. Lógicamente hemos de evitar tener la extensión

[100] configurada simultáneamente en dos de los archivos de protocolo. Cada

protocolo es conveniente en ciertos casos. El más usado y compatible es el

protocolo SIP (acrónimo de Session Initiation Protocol – protocolo de inicio de

sesiones) que es el que hemos usado en nuestra configuración inicial. Para poder

hacer que el hardware que vamos a usar funcione con Asterisk, es necesario que

el mismo sea compatible con este protocolo. El protocolo IAX es un protocolo

libre creado por la empresa Digium para su uso específico en la gestión de voz

sobre IP a través de redes WAN y su uso facilita la comunicación a través de

internet. Si quisiéramos que nuestra centralita tuviera extensiones no conectadas

a la red local sino conectadas a internet en cualquier lugar del mundo y que

dichas extensiones pudieran usar la centralita con todo su potencial, tendríamos

que crear estas extensiones dentro del fichero iax.conf. Existen otros ficheros de

protocolo tales como h323.conf, jabber.conf, etc, cada uno con su idiosincrasia

a la hora de configurarlos, pero con SIP e IAX tenemos los más estandarizados

y es más que suficiente para nuestros fines. Una vez razonado que hace

exactamente el archivo sip.conf, veamos un poco mejor el contenido que le

hemos introducido :

[100] ; nombre de la extensión (linea personal)

Vamos a poder añadir al archivo sip.conf tantas extensiones como queramos, y

podemos llamarlas con el número que nos parezca conveniente. Podemos

organizarlo por departamentos de una empresa, y por ejemplo el teléfono

principal de administración sea el [100], el de Rosa [101], el de Pablo [102], la

extensión del fax del departamento [110]. O por ejemplo podemos añadir una

extensión para emergencias en la garita del guardia de la empresa y llamarle

[091]. Es solo un ejemplo para que nos demos cuenta que tenemos en nuestras

manos el poder de configurar miles de extensiones (nada nos impide poner la

extensión [72384236427834623], solo que es un poco difícil de recordar).

username=100 ; nombre del usuario (mismo que extensión)

El nombre de usuario, que usaremos en los programas Softphone o en el

hardware de gestión de VoIP para configurar la extensión

;secret= ; permite poner una contraseña para activación

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 57 -

Instalación y configuración de centralita VoIP basada en asterisk

En este punto nosotros hemos dejado la contraseña sin configurar. Para una

gestión segura del sistema, sobre todo si se va a tener acceso desde internet, es

conveniente quitar el “ ; ” (comentario) y poner una contraseña de nuestra

elección. Se usará al configurar en el hardware y en los Softphone al igual que

el nombre de usuario.

El siguiente archivo que vamos a ver en detalle es el extensions.conf, el cual

configura los “caminos” (Dial Plan – plan de marcado) que van a seguir las

llamadas en función de diferentes parámetros que nosotros podemos definir

mediante “contextos”. Un contexto es el medio mediante el que vamos a

organizar las acciones que la centralita va a realizar. Lo dividimos en contextos

para que sea más sencillo el posteriormente modificar dichos caminos. Para la

creación de los contextos, se usa un sencillo lenguaje de programación que

permite el uso y creación de variables y los saltos entre lineas de código (el

nunca bien ponderado GO TO). Veamos los contextos que hemos creado :

[general]

El contexto general contiene parámetros de Asterisk, que no vamos a entrar a

explicar. Se puede ver que hace cada uno de ellos en la copia de seguridad

copiaextensions.conf que hemos dejado almacenada para consulta.

[inicio]

El contexto inicio es donde vamos a configurar que va a hacer Asterisk cuando

reciba una llamada en cualquiera de las lineas que le hayamos configurado. El

nombre del contexto lo podemos poner a nuestro gusto y debería ser aclaratorio

de que función va a realizar dicho contexto dentro de la centralita. En nuestro

caso va a ser el punto del “camino” donde las llamadas van a dar sus primeros

“pasos”.

include = salida

Asterisk solamente usa el primer contexto que encuentra en el fichero

extensions.conf, en nuestro caso el contexto [inicio], y ejecuta los pasos que

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 58 -

Instalación y configuración de centralita VoIP basada en asterisk

encuentra en ese contexto. Pero nosotros hemos creado un segundo contexto

para las llamadas salientes. Si no incluimos el contexto [salida] con una orden

include en el contexto principal y marcamos cualquier número, Asterisk nos

dará errores y comunicará. Hemos de añadir mediante include todos los

contextos que hayamos creado y que consideremos necesarios. Los contextos

secundarios pueden ser incluidos en el contexto principal o solamente ser

llamados desde otros contextos, si con ello conseguimos algún objetivo que se

nos haya propuesto por los usuarios de la centralita. Lo veremos más a fondo

cuando compliquemos nuestro Dial Plan.

exten => s,1,Answer() ; descuelga

Todos los “pasos” del camino, que ha partir de ahora vamos a llamar prioridad,

comienzan con la palabra exten y el símbolo => , eso es una prerrogativa del

lenguaje de programación de Asterisk. A continuación se introducen las

instrucciones que constan de varias partes separadas por comas. En la

instrucción que estamos viendo, en primer lugar tenemos la extensión “s”

(start). La extensión “s” es la primera de varias extensiones especiales (h, i, T, t

y fax), de las que solamente vamos a usar inicialmente “s” y “fax”. La extensión

start capta una llamada no generada por nosotros y que por tanto no tiene

número de extensión. El número de extensión en este caso sería el número de

teléfono del llamante. El número “1” que aparece tras la coma, es la prioridad, o

sea, el “paso” dentro de nuestro camino particular hacia gestionar esa llamada.

Lógicamente no debemos comenzar el camino dando el quinto “paso”, pues lo

más probable será que tropecemos.

Por ultimo la función de Asterisk “Answer()” ordena que “conteste”

(descuelgue) la linea para ser enrutada hacia pasos posteriores.

exten => s,2,Dial(Sip/100,30,tr) ;manda la llamada a ext100

En esta orden continuamos manteniendo el mismo llamante que está

almacenado en la extensión “s”, le asignamos la prioridad dos (segundo paso en

nuestro plan de marcado) y vemos la función Dial(), que sirve para obligar a

Asterisk a marcar una extensión que le indiquemos por parámetros. En este caso

lo parametros que le estamos dando son Sip/100, que le indica a Asterisk que

busque en el archivo sip.conf una extensión llamada [100] (que hemos creado

anteriormente). Si por ejemplo hubiésemos creado la extensión dentro del

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 59 -

Instalación y configuración de centralita VoIP basada en asterisk

fichero iax.conf (para su posterior uso a través de internet) tendríamos que haber

solicitado el marcado a la extensión IAX/100.

El segundo parámetro de Dial() es el tiempo que deseamos que “suene” la

extensión a la que llamamos. En este caso intentaría que la extensión

respondiera durante 30 segundos y seguidamente desistiría pasando a la

siguiente prioridad en el enrutado. Podríamos no poner el número 30 (dejando

únicamente ;;) y se intentaría contactar indefinidamente con la extensión. Esto

no es conveniente (hay que poner limites), puesto que si la extensión no

funciona por el motivo que sea, dejamos el sistema en un bucle del que la única

salida es que el llamante cuelgue.

El ultimo parámetro son dos letras. La letra “t” permite que el receptor pueda

transferir la llamada a otra extensión si le parece conveniente y la letra “r”

indica que se va a generar un timbrado (va a sonar un teléfono). También se

podría usar la letra “T” que permite que el llamante pueda transferir la llamada.

exten => s,3,Hungup() ; cuelga al terminar

Y en este tercer paso usamos la función Hungup() (colgar), lo que hacemos con

prioridad tres y para la extensión “s” (teléfono llamante). Hemos colgado a

nuestro paciente usuario.

En las pruebas del sistema veremos como afectan físicamente estas

instrucciones al hardware de la centralita.

[salida]

Sin este contexto, con las instrucciones que lo integran, no podríamos realizar

llamadas. Las instrucciones podríamos haberlas escrito en el contexto [inicio], y

funcionarían correctamente, pero veremos como se puede llegar a complicar

este fichero/programa y agradeceremos el tenerlo todo bien organizado.

exten => _9XXXXXXXX,1,Dial(Zap/1/${EXTEN},,tTr)

Esta instrucción tiene exactamente el mismo formato que las que hemos visto en

el contexto [inicio], pero en lugar de usar la extensión “s” (recordamos por

ultima vez que esta extensión es la primera que se busca si no se ha marcado

ningún número y sirve para dar acceso a la centralita de un usuario llamante),

comprueba que la extensión sea un número que comience por 9 y que

posteriormente tenga ocho dígitos (por eso las ocho “X”).

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 60 -

Instalación y configuración de centralita VoIP basada en asterisk

Cuando marcamos desde cualquiera de los teléfonos conectados a la centralita

un número cualquiera (por ejemplo 12345), ese número se almacena en una

variable llamada ${EXTEN} (las variables en Asterisk siempre tienen el

formato ${NOMBRE_VARIABLES}). Así que nos atenemos al ejemplo,

Asterisk irá mirando paso por paso en todos los contextos buscando el número

12345 o cualquier orden que le permita usarlo (por ejemplo 1XXXX). Si no lo

encuentra, nos dará un error de que no puede marcar dicho número. Pero

marcando por ejemplo el 953291383 si que estamos cumpliendo la condición

exigida en la instrucción que estamos viendo, con lo que comprueba la prioridad

que en este caso es “1” y por tanto pasa gestionar el parámetro en el que

mediante la función Dial() le indicamos que llame a Zap/1. Antes hemos visto

que al entrar una llamada la dirigiamos hacia Sip/100 (extensión 100 dentro del

fichero Sip), pues ahora vamos a dirigir a Zap/1 (extensión 1 dentro del fichero

zapata). En el fichero zapata.conf hemos introducido la configuración de todas

las líneas que nos permite usar nuestra tarjeta de comunicaciones, así que

estamos obligando a Asterisk a llamar a la linea 1 de la tarjeta. Pero la llamada

exacta es Zap/1/${EXTEN}, con lo que le estamos diciendo que llame a la

extensión “1” del fichero zapata.conf y que lo haga con el número que hemos

tomado a través del teclado de nuestro teléfono y que se ha almacenado en la

variable ${EXTEN}. Es un poco enrevesado, pero estamos obligando a Asterisk

a llamar al número de teléfono almacenado en la variable. Asterisk usa ese

número como una extensión más de la centralita aunque no pertenezca a la

misma red (pertenece a la red del operador de telefonía). Lógicamente al pasar

la llamada a través de la red telefónica de nuestra compañía telefónica, esta nos

cobrará por sus servicios el coste que tengamos contratado (tarifa plana, coste

por minutos, etc). Solo pagamos las llamadas que usan las líneas Zap.

exten => _9XXXXXXXX,2,Hangup()

Una vez terminada la llamada realizada en la instrucción anterior (cuando

nosotros o el receptor cuelga el teléfono), nos aseguramos que dicha llamada se

cuelgue en la centralita con prioridad 2. Para colgar usamos la función

Hangup().

exten => _6XXXXXXXX,1,Dial(Zap/1/${EXTEN},,tTr)

Esta instrucción posibilita que se puedan marcar números de teléfono móvil

desde nuestra centralita. Si no se añade, no podríamos llamar a móviles con lo

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 61 -

Instalación y configuración de centralita VoIP basada en asterisk

cual ya estamos gestionando las llamadas. Solo tenemos que comentar con “;”

dos instrucciones y evitamos que los usuarios de la centralita llamen a la novia.

exten => _6XXXXXXXX,2,Hangup

Nos aseguramos que tras la llamada se cuelga la extensión en la centralita.

6 CONFIGURANDO EL ENTORNO (PARTE I).

Para comenzar a hacer las pruebas vamos a conectar algunos de los dispositivos

hardware que hemos descrito en el punto 1 de la sección MATERIAL. Primero hemos de

conectar un cable de teléfono desde la línea telefónica (la toma de pared RJ11 donde

habitualmente conectamos el teléfono) hasta la linea 1 de nuestra tarjeta de

comunicaciones Digium TDM-400. Posteriormente conectamos nuestro Internet Phone

Adapter Linksys PAP2T. Para ello hemos de usar un cable RJ45 (cable estándar de red)

con el que conectaremos el puerto INTERNET del dispositivo a nuestro ROUTER o

SWITCH para añadirlo a nuestra red local y posteriormente conectamos el teléfono

analógico AIRIS T850M al conector PHONE 1 del PAP2T. Ya tenemos nuestro

escenario de pruebas preparado, con un único teléfono conectado a nuestra centralita y

con el que vamos a intentar enviar y recibir llamadas. Una vez que logremos hacerlo,

conectaremos más dispositivos e intentaremos interactuar entre ellos.

Ahora que tenemos conectado un teléfono, la línea y el adaptador Linksys, hemos de

configurar el adaptador Linksys para permitir gestionar llamadas. Dicho adaptador tiene

activo un cliente DHCP (recibe una dirección IP automática desde un servidor DHCP),

con lo que tomará una IP acorde con nuestra red. Para saber en que IP se ha conectado,

podemos usar la orden

nmap 172.16.0.* (con dígitos acordes a nuestro rango IP)

y una vez sepamos en que IP está, desde un navegador WEB accedemos poniendo en la

barra de direcciones

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 62 -

Instalación y configuración de centralita VoIP basada en asterisk

http://172.16.0.208 (en este caso la IP que tiene en nuestra red)

Nos aparece un gestor WEB que nos permite modificar los diferentes parámetros de los

que dispone este adaptador telefónico. Pulsamos en Admin Login para acceder a los

recursos de administrador del dispositivo, pulsamos en System y en la pestaña donde

aparece DHCP le indicamos “no”. Debajo ponemos los parametros de red que nos

interesen, para que sean fijos y podamos acceder siempre al PAP2 desde la misma

dirección IP. Lógicamente apuntamos la IP para crear luego nuestro mapeado de la red.

Pulsamos donde pone “Line 1” y en la sección Proxy añadimos la dirección IP de nuestro

servidor Asterisk (en nuestro caso es 172.16.0.211); en las secciones Auth Id y User Id

ponemos el número de extensión que queramos asignar a esa línea del PAP2. Nosotros

hemos creado en el fichero sip.conf un usuario llamado 100 con lo que ese número es el

que tenemos que incluir en dichas secciones. Si a la hora de crear la extensión

hubiésemos configurado una contraseña en la instrucción secret estaríamos obligados a

incluir dicha contraseña en la sección password. Tiene que quedar la configuración tal y

como mostramos en la captura de pantalla que vemos a continuación :

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 63 -

Instalación y configuración de centralita VoIP basada en asterisk

Pulsamos en Save Settings. Ya tenemos nuestra centralita preparada para realizar y

recibir las primeras llamadas.

Probamos a descolgar el teléfono y comprobamos que tenemos línea. Llamamos al

vecino del cuarto. Si nos contesta, el estar leyendo este documento a merecido la pena.

Podemos también probar a llamarnos al teléfono móvil, y disfrutar de nuestra tono de

llamada favorito. El contexto [salida] funciona. Ahora probamos a llamar a nuestro

número de teléfono fijo desde el móvil y comprobamos que el teléfono suena y podemos

mantener una conversación con nuestro interlocutor. El contexto [inicio] también

funciona.

Ahora que sabemos que nuestra centralita funciona, solamente nos queda el añadir la

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 64 -

Instalación y configuración de centralita VoIP basada en asterisk

orden para que Asterisk arranque cada vez que se inicie el servidor. No lo hemos hecho

hasta ahora por si teníamos cualquier problema de cuelgues por una mala configuración o

una gestión errónea, poder usar el nunca bien ponderado botón de reset. Pero ya si que

podemos editar el archivo

vi /etc/rc.local

y añadir la instrucción

asterisk

antes de la línea que pone “exit 0”. Guardamos y cerramos el archivo de configuración.

7 CONFIGURANDO EL ENTORNO (PARTE II).

Una centralita que de servicio a una sola extensión (un solo teléfono físico) es muy triste,

así que vamos a configurar en el PAP2 un teléfono inalámbrico analógico y vamos

también a conectar un teléfono IP THOMSON. Cuando terminemos tendremos tres

teléfono e intentaremos realizar llamadas internas a través de la centralita, que no tienen

coste, puesto que se realizan a través de nuestra red local. Para ello, antes de conectar los

dispositivos, vamos a añadir las extensiones en el fichero sip.conf con las siguientes

instrucciones

[200]

username = 200

type = friend

context = inicio

host = dynamic

[300]

username = 300

type = friend

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 65 -

Instalación y configuración de centralita VoIP basada en asterisk

context = inicio

host = dynamic

y también vamos a añadir reglas de marcado en el fichero extensions.conf añadiendo en

el contexto [salida] lo que indicamos a continuación

exten => 100,1,Dial(Sip/100,30,tTr)

exten => 100,2,Hangup()

exten => 200,1,Dial(Sip/200,30,tTr)

exten => 200,2,Hangup()

exten => 300,1,Dial(Sip/300,30,tTr)

exten => 300,2,Hangup()

exten => 400,1,Dial(Sip/400,30,tTr)

exten => 400,2,Hangup()

Podemos poner estas líneas dentro del contexto donde nos parezca conveniente, teniendo

en cuenta que tiene que revisar todas las instrucciones hasta encontrar la adecuada. Si

nuestra centralita va a soportar principalmente tráfico de llamadas entre extensiones, es

conveniente poner las instrucciones al principio del contexto, sin embargo, si lo que

vamos a hacer es principalmente hacer llamadas a móviles, esas líneas son las que deben

estar en primer lugar. Como se puede observar, vamos teniendo opciones más complejas

de optimización y gestión de la centralita. Y es solo el principio de lo que vamos a hacer.

Aunque es probable que por lo hecho hasta ahora tengamos claro que hacen las

instrucciones anteriores, veamos detenidamente una de las extensiones creadas

exten => 100,1,Dial(Sip/100,30,tTr)

Si marcamos 100 en cualquiera de los teléfonos (excepto desde la extensión 100 que

comunica), Asterisk intenta con prioridad 1 llamar a la extensión Sip/100 durante 30

segundos y permitiendo que tanto el llamante como el receptor, puedan desviar la

llamada a otra extensión. De igual forma funcionan las otras dos extensiones creadas.

exten => 100,2,Hangup()

Terminada la comunicación, nos aseguramos que la conexión en la centralita se finalice.

Para que la extensión [200] funcione, hemos de configurar nuestro teléfono THOMSON

ST2022 con una IP dentro del rango de nuestra red. Conectamos el teléfono a la red

eléctrica y a nuestra red local con un cable estándar RJ45. Lo dejamos unos segundos

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 66 -

Instalación y configuración de centralita VoIP basada en asterisk

que termine de configurarse y pulsamos las tecla MENU para ver una selección en

pantalla. Pulsamos en dicha selección la opción Admin y nos pide una contraseña. La

contraseña por defecto de este modelo de teléfono es 784518. La introducimos y le

damos a OK. Pulsamos Select sobre la opción Networking y con la flecha abajo vamos

pasando hasta encontrar la dirección IP. Le damos a Edit y ponemos la IP que nos

convenga. En nuestro caso vamos a poner la IP 172.16.0.207 y pulsamos Save. El

teléfono se reiniciará (de nuevo la discoteca) y volvemos a entrar en Admin

introduciendo la contraseña. Ahora en lugar de entrar en la opción Networking, bajamos

con la flecha y pulsamos sobre SIP Configuration. Nos aparece Profile 1. Lo

seleccionamos con Select. Pulsamos la flecha abajo para encontrar una opción que pone

Name, donde hemos de escribir el nombre de extensión que va a tener el teléfono.

Nosotros le vamos a llamar Ext. 300. Pulsamos de nuevo la tecla abajo y nos aparece

PxySrv y la siguiente RegSrv, teniendo que poner en ambas opciones la IP de nuestro

servidor Asterisk pulsando sobre Edit (nuestro servidor es el 172.16.0.211). Seguimos

bajando y donde pone RegID y TelNbr hemos de poner (también pulsando en Edit y

posteriormente en Save) el número con el que hemos llamado a nuestra extensión en el

fichero SIP. Como en este caso hemos añadido tres extensiones al fichero sip.conf

([200], [300] y [400]) le vamos a llamar a este teléfono 300.

Nos faltaría configurar la extensión [200] en nuestro adaptador telefónico PAP2 para

tener tres teléfonos operativos. Para ello accedemos desde el navegador WEB al la

página de configuración y seguimos los mismos pasos que para configurar la extensión

[100] (capítulo 6 – Configurando el entorno (Parte I)). Solo que en lugar de

modificarlo en Line 1, las modificaciones las hacemos sobre Line 2 y lógicamente, en

lugar de poner 100, pondremos 200 donde corresponda.

Evidentemente tendremos que conectar nuestro teléfono inalámbrico AIRIS T800B1 al

conector Phone 2 del adaptador Linksys para poder usar la extensión 200.

8 CONFIGURACIÓN DE SOFTPHONE VOIXPHONE.

Queremos usar también “teléfonos” por software para nuestra instalación, así que vamos

a descargar y configurar VoixPhone. Lo vamos a instalar en el portátil AIRIS Praxis

N1070 que tiene instalada una distribución UBUNTU de Linux. Descargamos desde la

siguiente web : http://www.voixphone.com/index.php/Download la versión para

Linux. Descomprimimos el archivo descargado y pulsamos doble click sobre el mismo.

Nos aparece un menú de instalación en el que seleccionamos la instalación Default (por

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 67 -

Instalación y configuración de centralita VoIP basada en asterisk

defecto) y posteriormente hay que pulsar siguiente hasta que nos solicita el idioma en el

que seleccionamos español. Nos pedirá durante el proceso la contraseña de administrador

la cual suministramos y por ultimo nos pregunta si queremos un acceso directo en el

escritorio, a lo que contestamos que si. Para configurarlo hemos de modificar nuestro

fichero iax.conf para lo que vamos a realizar una copia del que se crea por defecto con la

instrucción

mv /etc/asterisk/iax.conf /etc/asterisk/copiaiax.conf

tras lo que editamos el fichero nuevo

vi /etc/asterisk/iax.conf

y le incluimos una nueva extensión mediante las siguiente instrucciones

[general]

bindport = 4569 ; puerto por defecto del protocolo

bindaddr = 0.0.0.0 ; dirección ip para la conexión (todas)

context = inicio ; contexto por defecto

language = es

delayreject = yes

bandwitch = low ; usar codecs con bajo consumo de ancho de banda

allow = all ; codecs que se usarán (permitimos todos)

[700]

username = 700

type = friend

secret = 700

context = inicio

host = dynamic

nat = yes

tras lo que guardamos y salimos. Ahora vamos a configurar en el Softphone la extensión

que acabamos de crear. Para ello vamos a Opciones, Teléfono y donde nos pide dirección

del servidor insertamos 172.16.0.211 (nuestra IP del servidor Asterisk). En puerto

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 68 -

Instalación y configuración de centralita VoIP basada en asterisk

dejamos 4569, en nombre de usuario ponemos 700, contraseña 700, nombre identificador

700 y número identificador 700 (fácil ¿no?). Le damos a la marca de aplicar y pulsamos

en Discar para que nos aparezca el teclado numérico para poder llamar. Cada vez que

modificamos los parámetros de los archivos de configuración de Asterisk, tenemos dos

opciones para que estos parámetros se hagan efectivos. La primera es cerrar Asterisk

desde el CLI con la instrucción stop when convenient, que cierra los servicios de

Asterisk cuando detecta que ya no queda nadie hablando por teléfono (también se puede

usar stop now, pero queda feo dejar a los usuarios con la palabra en la boca) y volver a

iniciar Asterisk ya sea escribiendo asterisk en la consola o reiniciando la máquina

virtual. El segundo método, mas eficiente es sencillamente poner en el CLI la instrucción

dialplan reload, que hará que se ejecuten todas las modificaciones. Así que es lo que

deberíamos hacer para que nuestra nueva extensión esté operativa. Es conveniente

hacerlo antes de configurar el Softphone, puesto que en caso contrario, el mismo no

podrá registrar la extensión en nuestra centralita y nos dará errores. ¿He avisado tarde?

9 Comprobación del funcionamiento de la instalación hardware.

Ahora que tenemos operativa la centralita y todos los teléfonos hardware que vamos a

usar, es oportuno el hacer comprobaciones de funcionamiento. Para ello es conveniente

en nuestro servidor Asterisk el abrir la consola (CLI) de Asterisk con la instrucción

asterisk -vvvvvvvvvvr

Veremos que cada acción que hagamos con nuestra centralita se verá reflejada en

pantalla, dando información, pistas y errores que nos ayudarán en la configuración. Si lo

deseamos, podemos acceder desde una segunda consola a nuestro servidor Asterisk para

poder seguir realizando modificaciones al sistema (ALT+F2 y nos autentificamos como

administrador).

Teniendo el CLI Asterisk en pantalla descolgamos nuestra extensión [100] (el teléfono

sobremesa AIRIS) y marcamos el 300 (la extensión de nuestro teléfono THOMSON).

Veremos lo siguiente

-- Executing [300@inicio:1] Dial("SIP/100-006dd0c0", "Sip/300|30|tTr") in new

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 69 -

Instalación y configuración de centralita VoIP basada en asterisk

stack

Nos dice que se va a ejecutar una llamada (Dial()) desde la extensión SIP/100 a la

extensión Sip/300.

-- Called 300

Indica que la llamada está en proceso (esta buscando la extensión y comprobando si está

operativa).

-- SIP/300-006e1400 is ringing

Informa de que la conexión se ha establecido y que el teléfono está sonando.

Si en este momento, descolgamos la extensión [300], veremos en pantalla

-- SIP/300-006e1400 answered SIP/100-006dd0c0

lo que nos informa de SIP/300 ha contestado a la llamada de SIP/100 correctamente. Si

en cualquier momento colgamos alguno de los teléfonos veremos

== Spawn extension (inicio, 300, 1) exited non-zero on 'SIP/100-006dd0c0'

que la conexión entre ambas extensiones ha terminado correctamente.

Supongo que el afanado lector habrá constatado lo interesante que resulta tener operativo

el CLI durante las configuración de la centralita, puesto que nos hace tener una idea clara

de lo que va pasando en sus entrañas.

Es conveniente que probemos a llamar entre las diferentes extensiones para ver si todo

funciona correctamente y que veamos como afectan al CLI las diferentes llamadas.

Realmente ahora esto si que parece una centralita. Podemos desde los teléfono

analógicos desviar llamadas desde una extensión a otra marcando # y el número de

extensión a la que queremos pasar la llamada (mientras observamos como afecta todo

ello al CLI).

Esta es la traza de una llamada de la extensión [100] a la [200], la cual a descolgado (se

supone que hablan algo) y que la [200] ha transferido a la [300] (la trescientos a

mantenido también una conversación) y por ultimo uno de los usuario (el [100] o el

[300], puesto que el [200] al transferir la llamada, no esta involucrado) ha colgado.

-- Executing [200@inicio:1] Dial("SIP/100-006dd0c0", "Sip/200|30|tTr") in new

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 70 -

Instalación y configuración de centralita VoIP basada en asterisk

stack

marcamos desde la extensión [100] a la [200]

-- Called 200

se realiza la llamada

-- SIP/200-006e1400 is ringing

suena el teléfono en la [200]

-- SIP/200-006e1400 answered SIP/100-006dd0c0

la extensión [200] contesta

-- Started music on hold, class 'default', on SIP/100-006dd0c0

la extensión [200] ha pulsado # y por tanto se llama al sistema de música en espera

-- <SIP/200-006e1400> Playing 'pbx-transfer' (language 'es')

suena la música (el fichero que se está escuchando se llama 'pbx-transfer')

-- Stopped music on hold on SIP/100-006dd0c0

la música termina porque se ha terminado de marcar un número en el terminal

-- Executing [300@inicio:1] Dial("SIP/100-006dd0c0", "Sip/300|30|tTr") in new

stack

el número que se ha marcado es el 300 con lo que nos genera la llamada

-- Called 300

y llama a la extensión [300]

-- SIP/300-006f17f0 is ringing

suena el teléfono en la extensión

-- SIP/300-006f17f0 answered SIP/100-006dd0c0

se responde a la llamada y por ultimo

== Spawn extension (inicio, 300, 1) exited non-zero on 'SIP/100-006dd0c0'

uno de los usuario cuelga el teléfono.

10 DIALPLAN (AÑADIENDO FUNCIONES A LA CENTRALITA).

10.1 LOCUCIÓN DE ENTRADA.

Tenemos operativa la centralita y nuestros teléfono. Es el momento de

complicar un poco nuestro Dial plan. Actualmente nuestro Dial plan es un poco

soso. Cuando entra una llamada la dirigimos directamente a la extensión [100] y

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 71 -

Instalación y configuración de centralita VoIP basada en asterisk

desde esa extensión podríamos derivar las llamadas donde nos interese, siendo

este el clásico método de tener una persona atendiendo el teléfono. Pero nuestra

centralita puede más que todo eso. Vamos a hacer que cuando alguien llame, le

salga una locución (mensaje de voz) que le indique las posibilidades de contacto

que le ofrece la centralita. El menú telefónico de la locución de acceso va a ser

el siguiente :

“Ha llamado a proyecto asterisk, si desea hablar con José Manuel Campos pulse

uno, si desea hablar con Miguel Guzmán pulse dos, si desea hablar con tutoría

pulse tres, si no desea hablar con ninguno de los anteriores, pulse 4 y será

atendido por un operador”

Lo primero que vamos a hacer es grabar la locución. Como a lo largo de la

configuración de la centralita y de su vida útil, tendremos que grabar múltiples

locuciones, lo ideal es automatizar las operaciones de grabación lo máximo

posible. Es por lo que vamos a crear una extensión de marcado dedicada a

realizar y escuchar las grabaciones, para ello hemos de incluir en nuestro

extensions.conf unas nuevos comandos al final de los ya existentes en el

contexto salida. Las instrucciones a incluir serían

exten => 555,1,Answer() ; descuelga

exten => 555,n,Wait(2) ; espera 2 segundos

exten => 555,n,Record(locucion:gsm)

con esta instrucción le indicamos que grabe un archivo llamado locucion.gsm

con lo que nosotros digamos por el auricular telefónico

exten => 555,n,Wait(2) ; espera 2 segundos

exten => 555,n,Hangup() ; cuelga

exten => 556,1,Playback(locucion) ; reproduce locucion.gsm

exten => 556,n,Hangup() ; cuelga

tras lo que guardamos y salimos del archivo. En el CLI de Asterisk usamos la

instrucción dialplan reload para que los cambios tengan efecto y probamos el

funcionamiento de nuestra extensión de grabación de mensajes marcando en

cualquiera de los teléfonos 555. Esperamos a que nos salga un pitido fuerte y

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 72 -

Instalación y configuración de centralita VoIP basada en asterisk

agudo que indica que la grabación se ha iniciado (en el CLI también nos

informará de ello), y es cuando ponemos nuestra mejor voz para grabar el

mensaje que hemos escrito anteriormente. Esperamos unos segundos después de

terminar de hablar y colgamos el teléfono. El mensaje se ha grabado en nuestro

servidor en la carpeta /var/lib/asterisk/sounds/locucion.gsm y procedemos a

escucharlo usando la extensión de escucha 556 para lo que descolgamos el

teléfono y marcamos dicha extensión. Si lo que escuchamos nos parece

correcto, tenemos nuestra locución de inicio preparada. Solo tendríamos que

cambiar de nombre el archivo por otro que nos resultara más clarificador y

sobre todo porque si grabamos otra locución, se grabaría encima de la ya

existente. Para cambiar el nombre al archivo lo hacemos con la instrucción

mv /var/lib/asterisk/sounds/locucion.gsm /var/lib/asterisk/sounds/loc_inicio.gsm

Si nos fijamos, a la hora de añadir las instrucciones para grabación en el archivo

extensions.conf no hemos marcado las prioridades en las instrucciones y las

hemos sustituido por la letra n a excepción de la primera prioridad que si que le

hemos indicado que es 1. En cualquiera de las instrucciones que vamos

añadiendo a la centralita podemos hacer esto, ya que n indica a Asterisk que

sume uno a la prioridad anterior. Es por lo que la segunda línea sería 1+n = 2.

Esto hace que no tengamos que estar poniendo las prioridades a mano en largas

cadenas de condiciones.

Ahora vamos a añadir la locución a nuestro plan de marcado. Editamos el

archivo extensions.conf por enésima vez y modificamos el contexto [inicio]

para que quede mas o menos así

[inicio]

include = salida

exten => s,1,Answer() ; descuelga

exten => s,n,Background(loc_inicio) ; reproduce locucion

exten => s,n,Dial(SIP/100,30,tr) ; marca a la extensión

100

exten => s,n,Hangup() ; cuelga

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 73 -

Instalación y configuración de centralita VoIP basada en asterisk

Probamos (recargando el dialplan) nuestra nueva configuración llamando a

nuestra centralita desde un teléfono externo para así escuchar nuestra dulce voz.

Ahora hemos de configurar el contexto inicio para que haga lo que dice la

locución de entrada. Si asignamos la extensión [100] a José Manuel Campos, la

[200] a Miguel Guzmán, la [300] a tutoría y la [400] a un hipotético operador,

hemos de hacer que si el llamante marca alguno de los dígitos indicados en la

locución, se transfiera correctamente la llamada al destinatario solicitado. Para

ello volvemos a modificar el contexto para que quede como sigue

[inicio]

include = salida

exten => s,1,Answer() ; descuelga

exten => s,n,Background(loc_inicio)

exten => s,n,WaitExten(5) ; espera 5 segundos

exten => s,n,Background(loc_inicio)

exten => s,n,WaitExten(5)

exten => s,n,Goto(100,1)

exten => s,n,Hangup()

exten => 1,1,Goto(100,1)

exten => 2,1,Goto(200,1)

exten => 3,1,Goto(300,1)

exten => 4,1,Goto(400,1)

Grabamos, salimos, reiniciamos el dialplan, comprobamos que funciona y

vamos a ver que diablos hemos hecho. Veamos las instrucciones más

rocambolescas a fondo

exten => s,n,Background(loc_inicio)

Aunque ya la hemos visto anteriormente es conveniente indicar que para

reproducir las locuciones podemos emplear Playback o Background. Playback

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 74 -

Instalación y configuración de centralita VoIP basada en asterisk

realiza la reproducción total del archivo de audio y Background reproduce hasta

que se pulsa una tecla en el terminal. Es por lo que si deseamos obligar al

llamante a escuchar nuestro mensaje usaríamos Playback, pero como no es el

caso y si el llamante conoce la extensión queremos que acceda a ella en

cualquier momento, con pulsar una adecuada, listo.

exten => s,n,WaitExten(5)

Dejamos un espacio de tiempo de 5 segundos para permitir al llamante ponderar

cual de las opciones que le hemos suministrado en la locución es la que desea

usar. Es el tiempo en el que se supone ha de pulsar la extensión adecuada. Si se

pasan esos 5 segundos, le damos una segunda oportunidad reproduciendo

totalmente la locución, por si no ha entendido algo en la primera reproducción,

tras eso esperamos otros 5 segundos y si no ha marcado nada valido

exten => s,n,Goto(100,1)

le indicamos a Asterisk que transfiera la llamada entrante a la extensión [100]

con la prioridad 1.

Por ultimo las instrucciones del tipo

exten => 1,1,Goto(100,1)

son sencillas de entender. Si hemos marcado 1 en la locución nos pasa

directamente a la extensión que hemos configurado para ese número con la

prioridad 1 (en este caso la [100]).

La orden Goto nos permite saltar automáticamente hasta cualquiera de las

ordenes de los contextos activos. Podríamos poner 1,1,Goto(555,1) y nos

saltaría automáticamente a nuestra extensión de grabación de locuciones al

pulsar el llamante la opción 1. Si nos fijamos, nuestra instrucción de grabación

es 555,1,Answer() y el inicio de esa instrucción que es 555,1 no se repite en

ningún punto del dialplan. Goto es una herramienta muy potente que usaremos a

discreción.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 75 -

Instalación y configuración de centralita VoIP basada en asterisk

10.2 CONTROL HORARIO.

¿Que pasaría si alguien llamara a nuestra centralita fuera del horario en el que

las diferentes extensiones pueden atender las llamadas? El llamante pulsaría la

extensión deseada y el teléfono sonaría durante el tiempo que le hayamos

especificado, pero no contestaría nadie. Eso nos dejaría en muy mal lugar. Así

que vamos a configurar en nuestro dialplan un control horario que haga saltar

locuciones indicando que se está llamando en día festivo o que se está llamando

fuera del horario en el que el usuario de la extensión está disponible. Para ello

vamos a tener que modificar sustancialmente los contextos. En primer lugar le

cambiamos al contexto [inicio] actual el nombre por [entrada] y justo antes de

ese contexto hemos de crear de nuevo el contexto [inicio] que es donde vamos a

añadir las instrucciones para redirigir las llamadas en función del día y hora.

Hemos de tener en cuenta que tenemos que grabar las locuciones para cada uno

de los escenarios en los que nos podemos encontrar.

Primer escenario, que José Manuel Campos no esté, para lo que vamos a grabar

la locución “Si desea contactar con José Manuel Campos, le rogamos llame de

seis a diez de la tarde”. Esa locución, por supuesto, saldrá solamente cuando se

llame fuera del horario indicado. Al archivo de audio el llamaremos joseno.

Ponemos un ejemplo de como hacerlo y habría que repetirlo en el resto de

escenarios.

mv /var/lib/asterisk/sounds/locucion.gsm /var/lib/asterisk/sounds/joseno.gsm

Segundo escenario, que Miguel Guzmán no esté, para lo que vamos a grabar la

locución “Si desea contactar con Miguel Guzmán, le rogamos llame de 10 de la

mañana a 3 de la tarde”. Al archivo de audio le llamaremos miguelno.

Tercer escenario, que no haya nadie en tutoría, para lo que vamos a grabar la

locución “Si desea contactar con tutoría, le rogamos llame lunes o martes a

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 76 -

Instalación y configuración de centralita VoIP basada en asterisk

partir de las seis y media de la tarde”. Al archivo de audio le llamaremos

tutoriano.

Cuarto escenario, que haya llamado a los operadores, que será enviada a la

siguiente locución “Lamentamos comunicarle que aun no tenemos presupuesto

para poder pagar operadores, intente contactar con otra extensión”. Al archivo

de audio le llamaremos operadoresno.

Quinto escenario, que haya llamado fuera del horario en el que alguien puede

atender la llamada para lo que vamos a grabar “Ha llamado fuera de nuestro

horario de atención de consultas, le rogamos llame de Lunes a Sábado de 10 a

15 horas o de 18 a 22 horas”. Al archivo de audio le llamaremos horano.

Sexto escenario, que haya llamado en domingo que le saldría la locución “Hasta

el creador descansó el séptimo día, con lo que hoy no podemos atenderle”. Al

archivo de audio le llamaremos domingono.

Grabamos los mensajes, recordamos cambiar el nombre de cada uno de ellos

con la extensión .gsm después de cada grabación (si no se sobreescriben) y

ahora hay que integrarlos en el dialplan, poniendo el nuevo contexto [inicio] al

principio del archivo extensions.conf y el contexto [horario] al final del mismo

[inicio]

include = entrada

include = horarios

exten => s,1,Answer()

exten => s,2,Wait(3)

exten => s,3,GotoifTime(22:01-09:59|mon-sat|*|*?horario,s,13)

exten => s,4,GotoifTime(15:01-17:59|mon-sat|*|*?horario,s,13)

exten => s,5,GotoifTime(00:00-23:59|sun|*|*?horario,s,16)

Con estas instrucciones en el nuevo contexto inicio, hacemos que si alguien

llama en domingo o en horarios que no haya nadie no le de ni la opción a

seleccionar una extensión, sino que automáticamente le indique al llamante que

no se le puede atender.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 77 -

Instalación y configuración de centralita VoIP basada en asterisk

Modificamos también el contexto [entrada], al que le quitamos la instrucción

s,1,Answer() (puesto que la llamada ya está contestada en el contexto [inicio]),

y nos aseguramos que como primera linea después del include está la

instrucción

exten => s,n,Background(loc_inicio)

El no ponerle prioridad es porque va a pasar dicha prioridad desde el contexto

[inicio] continuando por el orden que llevara en dicho contexto. Así podemos

hacer todos los añadidos que queramos de horarios en [inicio] sin tener que

modificar posteriormente las prioridades de todas la líneas del contexto

[entrada].

Ahora hemos de crear el contexto [horario], que es el que realmente va a

ejecutar la orden de reproducir las diferentes locuciones. Ponemos las siguientes

instrucciones

[horario]

exten => s,1,Answer() ; comienza joseno

exten => s,2,Playback(joseno)

exten => s,3,Hangup()

exten => s,4,Answer() ; comienza miguelno

exten => s,5,Playback(miguelno)

exten => s,6,Hangup()

exten => s,7,Answer() ; comienza tutoriano

exten => s,8,Playback(tutoriano)

exten => s,9,Hangup()

exten => s,10,Answer() ; comienza operadoresno

exten => s,11,Playback(operadoresno)

exten => s,12,Hangup()

exten => s,13,Answer() ; comienza horano

exten => s,14,Playback(horano)

exten => s,15,Hangup()

exten => s,16,Answer() ; comienza domingono

exten => s,17,Playback(domingono)

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 78 -

Instalación y configuración de centralita VoIP basada en asterisk

exten => s,18,Hangup()

y por ultimo para cada una de las extensiones [100], [200], [300] y [400] vamos

a incluir una orden GotoifTime personalizada, con lo que tenemos que

modificar en el contexto salida dichas extensiones y cambiar por lo que

ponemos a continuación

exten => 100,1,GotoifTime(22:01-17:59|mon-sat|*|*?horario,s,1)

exten => 100,n,Dial(Sip/100,30,tTr)

exten => 100,n,Hangup()

exten => 200,1,GotoifTime(15:01-09:59|mon-sat|*|*?horario,s,4)

exten => 200,n,Dial(Sip/200,30,tTr)

exten => 200,n,Hangup()

exten => 300,1,GotoifTime(00:01-18:29|wed-sun|*|*?horario,s,7)

exten => 300,n,Dial(Sip/300,30,tTr)

exten => 300,n,Hangup()

exten => 400,1,GotoifTime(00:00-23:59|mon-sun|*|*?horario,s,10)

exten => 400,n,Dial(Sip/400,30,tTr)

exten => 400,n,Hangup()

Ahora podemos guardar y salir del archivo, volver a cargar el dialplan en el CLI

y comprobar si nuestras modificaciones son efectivas. Recomendamos ir

haciendo pruebas, cambiando horas, y comprobando los diferentes efectos que

esos cambios tienen sobre el funcionamiento de la centralita. Como siempre,

veamos más detenidamente las mejores jugadas del partido

exten => s,3,GotoifTime(22:01-09:59|mon-sat|*|*?horario,s,13)

Esta instrucción que hemos puesto en el contexto [inicio] hace que si el horario

en el que el llamante esta intentando contactar con nuestra centralita está entre

las diez y un minuto de la noche y las nueve y cincuenta y nueve segundos de la

mañana, de lunes a sábados, salte al contexto horario, a la prioridad 13. Aquí

vemos el posible uso de las prioridades, que nos permiten ir a puntos concretos

dentro de un contexto o extensión. Los asteriscos sirven para indicar si

queremos que esa condición horaria se ejecute solamente ciertos días del mes o

solamente ciertos meses. Un asterisco indica que no procede comprobar esa

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 79 -

Instalación y configuración de centralita VoIP basada en asterisk

opción. Para decirle por ejemplo que esa condición es para los días uno al

quince de cada mes tendríamos que poner la siguiente instrucción

exten => s,3,GotoifTime(22:01-09:59|mon-sat|1-15|*?horario,s,13)

o si por el contrario queremos que solamente revise todos los meses del año

excepto Julio y Agosto tendríamos que poner

exten=> s,3,GotoifTime(22:01-09:59|mon-sat|*|Sep-Jun?horario,s,13)

Con esta información consideramos que el lector que haya seguido el proceso

de creación de la centralita, tiene datos suficientes para poder comprender el

resto de modificaciones que hemos incluido en el dialplan y para poder realizar

sus propias modificaciones para adaptar cada extensión al horario que le sea

conveniente.

10.3 CONFIGURANDO NUEVAS POSIBILIDADES DE MARCADO

Nos hemos cortado con una hoja de papel y decidimos llamar al 061; cual es

nuestra sorpresa al comprobar que en el CLI (¿¡¡¡ como que no lo tenias abierto

en pantalla !!!?) aparece un mensaje que dice así “'061' rejected because

extension not found“. Además para más inri, el teléfono comunica. Eso es

debido a que hemos generado reglas de marcado (extensiones) para llamar a

fijos 9XXXXXXXX y a móviles 6XXXXXXXX, pero no hemos dicho nada de

los números especiales, así que en nuestro dialplan, en el contexto [salida],

vamos a añadir lo siguiente

exten => _0ZZ,1,Dial(Zap/1/${EXTEN},,r)

exten => _0ZZ,n,Hangup()

que quiere decir que si marcamos cualquier número que comience por cero y

que los dos siguientes número sean cualquiera del uno al nueve, haga el

marcado. Ni que decir tiene que Z es el comodín para todos los números menos

el cero. Esta regla nos permite llamar a 061,091, etc.

exten => _1ZZ,1,Dial(Zap/1/${EXTEN},,r)

exten => _1ZZ,n,Hangup()

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 80 -

Instalación y configuración de centralita VoIP basada en asterisk

que nos permite llamar al teléfono 112 y similares.

exten => _[89]0[0-289]XXXXXX,1,Dial(Zap/1/${EXTEN},, r)

exten => _[89]0[0-289]XXXXXX,n,Hangup()

nos permite llamar a teléfonos especiales que no sean de pago (los de pago son

803, 806, 807, 904, 905 y 907). Le estamos diciendo que el número puede tener

en su primer dígito un 8 o un 9, en el segundo dígito un 0 y en el tercero

cualquier número del 0 al 2 o los números 2489. Con esto podríamos llamar a

teléfonos 900, 901, 902 y similares. Como podemos observar cabe la

posibilidad de realizar combinaciones que restrinjan genéricamente las llamadas

a teléfonos que no nos interesan.

exten => _00.,1,Dial(Zap/1/${EXTEN},, r)

exten => _00.,n,Hangup()

con esta extensión permitimos llamadas internacionales. Le estamos diciendo

que cuando marquemos dos veces el cero, acepte cualquier otra combinación de

números que añadamos después (el comodín “punto” significa “cualquier cosa

que marques, yo lo marco”). Si sabemos que las únicas llamadas internacionales

que vamos a realizar son a República Checa, podemos restringir más el patrón

de la extensión y poner algo como _00420.,1,Dial(Zap/1/${EXTEN},, r).

Por ultimo comentar que al igual que podemos permitir, podemos denegar

explícitamente extensiones. Si por ejemplo nuestra organización se dedica a

negocios “turbios” puede ser que deseemos poder llamar al 061, pero no nos

interesa que se realicen llamadas al 091. Para ello podríamos añadir un patrón

de este tipo 091,1,Hangup(), con lo que cada vez que se marque el 091,

automáticamente la centralita nos cuelgue. Por supuesto que no vamos a

integrar esta norma en nuestro dialplan ¿o sí?. Es necesario que esta norma esté

ANTES de la norma genérica que hemos creado para los teléfonos 0NN, pues

recordamos que el dialplan es un sistema de caminos que comienza en el primer

renglón del fichero extensions.conf y va pasando por todos los contextos

incluidos, instrucción por instrucción. Si encuentra primero la extensión 0NN

marcará el 091, pero si encuentra primero la línea que específicamente tiene el

091, colgará y no llegará a evaluar la extensión 0NN. Cada vez tenemos más

herramientas para controlar nuestra centralita.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 81 -

Instalación y configuración de centralita VoIP basada en asterisk

10.4 BUZONES DE VOZ (CONTESTADOR AUTOMÁTICO) Y MENSAJES

DE AUDIO AL CORREO.

Asterisk nos permite configurar buzones de voz que permitan al llamante, si la

persona que ha de atender la extensión no puede coger el teléfono, dejar un

mensaje indicando cual es el motivo de la llamada o cualquier información que

pueda ser de utilidad para el receptor. Para poder acceder a esos mensajes,

hemos de crear nuevas reglas en nuestro dialplan y se podrían escuchar

marcando la extensión del contestador y escuchando el mensaje, como se hace

en todos los teléfonos analógicos. Una vez escuchado el mensaje tenemos

opción de dejarlo almacenado, borrarlo, ver a que hora ha sido recibido, etc.

Pero con Asterisk podemos rizar el rizo y hacer que el mensaje grabado, nos sea

enviado por correo electrónico a nuestro cliente de correo habitual y podemos

escucharlo en el ordenador con ayuda de unos auriculares o unos altavoces y

nuestro reproductor de audio favorito (Amarok, Rhythmbox, Totem, Gstreamer,

o Windows Media si no hay más remedio). Además esto nos permite almacenar

fácil y ordenadamente todos los mensajes de voz que recibamos, pudiendo

acceder a ellos con rapidez en caso de tener dudas con respecto a lo que se nos

dijo en los mismos.

Para poder realizar todas estas operaciones, lo primero que hemos de hacer es

instalar un servidor de correo electrónico en nuestra máquina Asterisk para

permitir el envío de los mensajes de voz a través de dicho servidor. Uno de los

servidores de correo electrónico mas simples de instalar y configurar es exim4

así que lo instalamos con

aptitude install exim4 mailutils

Cuando termine de instalar con la siguiente instrucción nos aparece en pantalla

el asistente de configuración

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 82 -

Instalación y configuración de centralita VoIP basada en asterisk

dpkg-reconfigure exim4-config

Vamos a dejar las opciones que vienen por defecto sin modificar y solamente

vamos a ir comentando los puntos en los que tenemos que realizar alguna

variación o interacción con el asistente... con lo que llegamos a la pantalla en la

que se nos muestra por primera vez “Configuración del servidor de correo”

en la que tenemos que seleccionar la primera opción que pone “Internet site :

el correo se envía y recibe directamente usando smtp”. En la siguiente

pantalla, donde pide “Nombre del sistema de correo” ponemos

proyectoasterisk.net o el que corresponda en la configuración de red del lector.

En las siguientes pantallas seguimos pulsando sin miedo sobre las opciones por

defecto hasta que se nos pide el “Destinatario de correo de root y

postmaster”, donde hemos de poner un usuario valido, nosotros hemos querido

que se envíe el correo a un usuario operador que hemos creado en la máquina

Asterisk con

adduser operador

Podemos hacer una prueba de funcionamiento usando la siguiente instrucción

ls -l | mail <cuenta de correo electrónico>

Ejemplo : ls -l | mail [email protected]

lo que hará que llegue un correo electrónico a la cuenta especificada con el

contenido del directorio en el que estemos posicionados. Comprobamos en el

cliente de correo que usamos habitualmente si ha llegado esta información y si

es así, tenemos completamente configurado nuestro correo y podemos pasar a

configurar los buzones de voz.

Para configurar los buzones, hemos de modificar el archivo voicemail.conf, con

lo que primero le hacemos una copia de seguridad (al igual que hemos hecho de

todos los demás archivos de configuración) para tener salvaguardada la

información que nos puede suministrar sobre cada una de las instrucciones que

lo constituyen, y después lo editamos desde cero

mv /etc/asterisk/voicemail.conf /etc/asterisk/copiavoicemail.conf

vi /etc/asterisk/voicemail.conf

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 83 -

Instalación y configuración de centralita VoIP basada en asterisk

e incluimos en el fichero las siguientes instrucciones

[general]

format = wav ; formato de grabación del audio

attach = yes ; enviar mensajes de voz por correo electrónico

maxmessage = 180

mailcmd = /usr/sbin/exim4

serveremail = [email protected]

fromstring = "Centralita Asterisk de Proyecto Asterisk"

emailsubject = [PBX] Mensaje nº ${VM_MSGNUM} en buzón de voz.

emailbody = \n\n\n***** Este es un mensaje automático de la

centralita de VoIP de *****\n PROYECTOASTERISK *****\n\n\n\n\t Tiene

un mensaje nuevo en su buzón de voz: \n Con el numero ${VM_MSGNUM}. \

n Recibido desde el numero de teléfono ${VM_CALLERID}. \n El $

{VM_DATE} . \n Dicho mensaje se adjunta a este mail, pero no obstante debe

llamar a su buzón de voz y eliminarlo tras su escucha. Si no conoce como

acceder a su buzón de voz, por favor contacte con el departamento al

cargo.\n\n\t Gracias.\n\n\t

[default]

100 => 1234,jose,[email protected]

200 => 1234,miguel,[email protected]

300 => 1234,tutoria,[email protected]

400 => 1234,operador,[email protected]

Con esto hemos creado cuatro buzones de voz independientes para cada una de

las extensiones que salen en nuestra locución de entrada, y vamos a permitir que

cuando el usuario no pueda coger el teléfono, salte automáticamente el buzón de

voz dando al llamante la posibilidad de dejar un mensaje, que será enviado al

correo electrónico que hallamos indicado en la configuración.

Vamos a estudiar detenidamente las líneas de configuración que hemos

incluido; en primer lugar

100 => 1234,jose,[email protected]

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 84 -

Instalación y configuración de centralita VoIP basada en asterisk

El 100 es una extensión que ya tenemos creada, 1234 es la contraseña que

tendremos que poner para poder acceder al buzón de voz (puede ser la misma

para todos los usuarios o ponerla a discreción de los mismos). El parámetro jose

en este caso es el nombre que se le da al buzón y por último, se pone la cuenta

de correo electrónico a la que queremos que vayan los mensajes de voz de esa

extensión.

El resto de parametros que aparecen en la sección general (y algunos que no

aparecen) tienen los siguientes usos

attach: Indica si se adjunta un archivo .wav con el contenido de la grabación

del buzón de voz en las notificaciones de correo electrónico.

delete: Indica que el mensaje de voz será borrado del servidor si es enviado por

correo electrónico.

mailcmd: Sirve para fijar la ruta del servidor de correo electrónico.

maxsilence Indica los segundos de silencio que debe detectar el servidor para

cortar la llamada al buzón. Por defecto es 0 que equivale a un tiempo infinito y

no hace caso a los silencios, parando solamente cuando el llamante cuelgue.

envelope: Si lo activamos con "yes" indicará el día y la hora en que se recibió el

mensaje.

externnotify: Sirve para ejecutar un programa externo cuando alguien deja un

mensaje.

externpass: Sirve para ejecutar un programa externo cuando alguien cambia su

contraseña del buzón.

silencetreshold: Funciona solamente si la opción maxsilence="yes" y sirve para

fijar el umbral de silencio, para ajustar “que” consideramos silencio (cuando nos

llaman puede haber ruido de fondo, pero no estar hablando nadie).

serveremail: Indica el origen de los mensajes de notificación de e-mail.

maxmessage: Indica el tiempo máximo de grabación de un mensaje.

maxmsg: Indica el numero máximo de mensajes en un buzón.

minmessage: Sirve para eliminar los mensajes que tienen menos duración que

lo indicado por este comando.

format: Indica el formato en que se guardará los mensajes e voz. Hay las

siguientes posibilidades: "wav49", "gsm" y "wav".

maxgreet Fija el tiempo máximo del mensaje de bienvenida que pueden

configurar los usuarios.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 85 -

Instalación y configuración de centralita VoIP basada en asterisk

maxlogins: Numero máximo de intentos fallidos al buzón de voz (por si alguien

intenta escuchar nuestro buzón sin saber la contraseña).

cdinternalcontexts: Distingue si los contextos son internos o externos (si el

llamante es una extensión o sin embargo es un número de teléfono ajeno a la

centralita).

promiscredir: Permite soportar redirecciones 302. Por defecto "no".

review: Por defecto es "no". Si lo pusiéramos a "yes" el usuario que deja el

mensaje podría revisarlo antes de salvarlo y dejarlo en el buzón.

operator: Permite marcar una extensión cuando ha saltado el buzón de voz.

saycid: Si lo ponemos a "yes" nos informará del número que llamó antes de

repetir el mensaje.

fromstring: Establece el from (desde) del mensaje de aviso de correo.

emailsubject: Establece el asunto del mensaje de aviso de correo.

emailbody: Establece el cuerpo del mensaje de aviso de correo.

nextaftercmd: Reproduce el siguiente mensaje automáticamente cuando se

borra el anterior

y ya tenemos un poco más claro como podemos gestionar la configuración de

los buzones de voz. Mas... ¿como los integramos en nuestro dialplan? Muy

sencillo, hemos de editar

vi /etc/asterisk/extensions.conf

y añadir al final del archivo un nuevo contexto con las siguientes instrucciones

[buzondevoz]

exten => 12345,1,VoicemailMain(${CALLERIDNUM})

exten => 12345,2,Hangup()

Esto hace que cuando desde cualquiera de las extensiones marquemos el

número de teléfono 12345 Asterisk comprobará cual es la extensión que realiza

la petición (accediendo a la variable del sistema CALLERIDNUM) y le dará

acceso al sistema de buzón de voz para poder escuchar los mensajes grabados.

Nos va tocando hacer pruebas, pero antes será mejora que integremos con un

include el contexto [buzondevoz] en el contexto [salida], puesto que si no lo

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 86 -

Instalación y configuración de centralita VoIP basada en asterisk

hacemos, por mucho que se marque el 12345, “va a ser que no”.

Si hemos hecho todo lo anterior y recargamos el dialplan podemos hacer la

primera prueba. Dejamos el CLI en pantalla para observar como afectan

nuestras actuaciones a la centralita. En primer lugar marcamos el 12345 desde

cualquiera de las extensiones y sale una voz solicitando el número de extensión

del que deseamos acceder a su buzón de voz, indicamos en nuestro caso el 100

y posteriormente nos pide la contraseña (que tenemos definida como 1234).

Eso nos va metiendo en una serie de submenus telefónicos, mediante sucesivas

locuciones, que nos permiten gestionar el buzón. Es interesante el fijarse en los

nombres de los ficheros de audio que se van reproduciendo en el CLI, puesto

que podríamos sencillamente grabando un mensaje personalizado con nuestra

voz y sobreescribiendo el archivo que aparece en el CLI por el nuestro, el

conseguir un buzón de voz totalmente personalizado. Nosotros no lo hemos

hecho, porque en principio pensamos usar principalmente el método de correos

electrónicos, con los que no hace falta acceder para nada al sistema

automatizado de buzón de voz.

Ahora vamos a decidir cuando tiene que “saltar” el buzón de voz. Eso lo

hacemos volviendo a editar extensions.conf y modificar las extensiones [100]

[200][300] y [400] añadiendo en las mismas la siguiente instrucción

exten => 100,n,Voicemail,100

justo antes de la instrucción que contiene el colgado (Hangup). Así antes de

colgar, se pide al llamante si desea grabar un mensaje. En el caso de ser la

extensión [200] o sucesivas, creo evidente cual sería la instrucción a insertar.

Volvemos a recargar el dialplan y realizamos la prueba de llamar a las

extensiones. Como tenemos configurado que nuestras extensiones suenen

durante 30 segundo tendremos que esperar ese tiempo a que salte el contestador

que nos indicará que dejemos un mensaje después de oír la señal. Dejamos un

mensaje y, como las balas, abrimos nuestro cliente de correo electrónico para

ver si tenemos un flamante y maravilloso archivo .wav con el mensaje que

hemos dejado.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 87 -

Instalación y configuración de centralita VoIP basada en asterisk

10.5 GRABACIÓN DE CONVERSACIONES Y LEY DE PROTECCIÓN DE

DATOS.

Una de las cosas que hemos visto muy interesantes es la posibilidad de grabar

todas o parte de las conversaciones que gestiona Asterisk. Eso supone una

herramienta de control y gestión de personal extremadamente potente. Un

supervisor puede asegurarse que los componentes de su equipo están siguiendo

las directrices de atención telefónica que su organización a estipulado. Claro

que esto entra en claro conflicto que la ley de protección de datos, que

expresamente penaliza las grabaciones digitales sin el consentimiento de la

persona grabada. Es por lo que en el caso de que quisiéramos legalmente grabar

las conversaciones, en la locución de acceso tendríamos que añadir una locución

extra indicando “Su mensaje puede ser grabado para la gestión de calidad, en

caso de no desear ser grabado, indíquelo a la persona que le atienda”. Con esto

estaríamos cumpliendo la ley. En todo caso, cumpliendo o no la ley, es una

herramienta más de nuestra centralita y vamos a ver el modo de hacerlo. En

primer lugar podemos hacer grabaciones puntuales. Eso significa que la persona

que atiende la llamada puede decidir grabar la conversación en un momento

dado, para lo que primero tendremos que haber habilitado la función de

grabación en el extensions.conf para esa extensión y en segundo lugar el

operador de la extensión a de pulsar *1 con lo que hace que a partir de ese

momento la conversación se grabe en el directorio /var/spool/asterisk/monitor.

Para habilitar la grabación en la linea de la extensión en el extensions.conf

habría que añadir w en los parametros de la misma

exten => 100,n,Dial(Sip/100,30,tTrw)

Pero si lo que deseamos es grabar todo lo que pasa por una extensión, podemos

añadir estas instrucciones a la extensión o extensiones que deseemos grabar de

manera constante. Estas lineas tienen que ponerse al principio de la extensión,

para que antes incluso de que se descuelgue el teléfono, el sistema ya esté en

disposición de comenzar la grabación

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 88 -

Instalación y configuración de centralita VoIP basada en asterisk

exten => 100,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--

%H-%M-%S--)})

exten => 100,2,MixMonitor(ENTRADA-${horadellamada}-$

{CALLERID(num)}-${EXTEN}.wav)

y a continuación las líneas que normalmente hemos tenido operativas para usar

la extensión. Explicamos que hacen exactamente estas instrucciones

exten => 100,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--

%H-%M-%S--)})

indica que las llamadas entrantes en la extensión [100] almacenaran una

variable llamada horadellamada (eso es una variable de usuario creada por

nosotros, por si no se ha notado). Esa variable contendrá el día, mes, año, hora,

minuto y segundo de inicio de la llamada en formato texto para poder usarlo

junto con más parametros en la confección de un nombre de archivo en el que se

almacenará la grabación.

exten => 100,2,MixMonitor(ENTRADA-${horadellamada}-$

{CALLERID(num)}-${EXTEN}.wav)

indica que se almacenara en el directorio por defecto de grabaciones, que como

hemos indicado antes es /var/spool/asterisk/monitor, un archivo cuyo nombre

será ENTRADA seguido de un guión, seguido de la variable que hemos

almacenado anteriormente con el dia y hora de la llamada, seguido de otro

guión, seguido del número de la persona que ha llamado que está almacenado

en la variable de sistema CALLERID (el poner num entre paréntesis es para

indicar que solamente se aceptará para esa variable un parámetro

numérico),seguido de un guión, seguido del número de extensión que ha

recibido la llamada (almacenado en la variable de sistema EXTEN), seguido por

ultimo de la extensión .wav que nos deja finalmente un nombre de archivo que

permite identificar con facilidad las grabaciones, un ejemplo de nombre de

archivo generado es este : ENTRADA-08-06-08—

21-58-08---953121212-200.wav

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 89 -

Instalación y configuración de centralita VoIP basada en asterisk

10.6 INSTALACIÓN DE HYLAFAX, SERVIDOR DE GESTIÓN DE FAX.

Uno de los puntos de mayor complejidad a la hora de configurar la centralita es

la gestión de fax. Una vez configurada, nos permitirá enviar faxes desde los

terminales informáticos de la empresa, sencillamente indicando que el

documento que hemos de enviar lo queremos imprimir al fax, momento en que

se nos solicitará el número de teléfono al que deseamos remitir dicho fax y

Asterisk se encargará de todo. También estará Asterisk atento a todas las

llamadas entrantes para asegurarse de si se identifican o no como una llamada

de fax, para en el caso de que lo hagan, gestionarlas y remitirlas a una extensión

donde hayamos conectado un fax físico, o si lo deseamos, a una cuenta de

correo electrónico desde la que podremos revisar e imprimir si nos interesa el

contenido de dicho fax. Para la gestión de fax vamos a usar el servidor hylafax

y para instalarlo, tendremos que usar

aptitude install hylafax-server

Una vez instalado, ejecutamos la orden faxsetup que crea una configuración

inicial almacenando la configuración en dos directorios. Ambos directorios

contienen la misma información, aunque nosotros hemos de modificar archivos

únicamente en uno de ellos. Cuando el servidor hylafax se reinicia,

automáticamente copia los ficheros de configuración del directorio donde los

modificamos al directorio para su uso “personal”. Esos directorios son

/etc/hylafax, que es donde haremos las modificaciones y /var/spool/hylafax/etc

que es donde estará almacenado el duplicado que usa el servidor. En el

directorio /etc/hylafax podremos encontrar los ficheros que detallamos a

continuación

/etc/hylafax/hfaxd.conf

Este es el archivo de configuración del demonio del servidor hylafax y en el se

definen donde están los ficheros de configuración adicionales. Raramente hay

que modificar los parametros que contiene, pero lo indicamos por si en un caso

excepcional es necesario para alguna configuración compleja.

/etc/hylafax/hyla.conf

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 90 -

Instalación y configuración de centralita VoIP basada en asterisk

Parámetros de configuración del los clientes para que puedan enviar fax desde

el servidor mediante sendfax.

/etc/hylafax/config

Configuración general de hylafax para el sistema local. Se puede especificar en

este archivo como llamará el servidor de fax a los diferentes números de

teléfono (incluyendo como distinguir llamadas internacionales de locales). Se

puede también configurar la gestión de archivos log (archivos que contienen

información de todo lo que va haciendo el servidor de fax), el número máximo

de trabajos concurrentes, tamaño máximo de la página del fax, si se desea

página informativa añadida automáticamente al fax enviado con los datos de la

organización, y por ultimo, pero no menos importante, el número máximo de

intentos que realizará el servidor a un número de fax dado antes de indicarnos

que no puede enviar el fax.

/etc/hylafax/hosts.hfaxd

Este archivo especifica los equipos y usuarios a los que se les permite acceder a

los servicios de fax, por medio del proceso hfaxd. Podemos añadir y quitar

usuarios de fax sin necesidad de editar el fichero ejecutando en la línea de

comandos del sistema las instrucciones faxadduser y faxdeluser seguidas del

nombre del usuario.

/var/spool/hylafax/info

Directorio con información de las máquinas receptoras a las que ya se ha

enviado algún fax.

/var/spool/hylafax/docq

Directorio donde hylafax almacena todos los documentos enviados.

10.7 CONFIGURACIÓN DE HYLAFAX PARA UTILIZAR MODEM

VIRTUAL DE ASTERISK.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 91 -

Instalación y configuración de centralita VoIP basada en asterisk

En primer lugar hemos de crear una nueva extensión para la recepción de fax.

Vamos añadir para ello en el fichero

vi /etc/asterisk/iax.conf

las instrucciones necesarias para añadir la extensión [777] (nuestra flamante

nueva extensión para fax)

[777]

username = 777

type = friend

secret = 777

qualify = yes

notransfer = yes

host = dynamic

context = fax

callerid = “Fax” <777>

allow = all

modificamos el archivo

vi /etc/asterisk/zapata.conf

añadiendo la instrucción

faxdetect = both ; permite envío y recepción de fax

modificamos por fin nuestro dialplan agregando en el archivo extensions.conf,

al final del contexto [inicio]

exten => fax,1,Goto(fax,777,1)

y agregamos en el contesto inicio un include = fax.

Ahora creamos el contexto de fax. Esto lo podemos poner al final del

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 92 -

Instalación y configuración de centralita VoIP basada en asterisk

extensions.conf donde nos parezca conveniente, recordando que al final del

dialplan han de estar las extensiones a las que demos menos uso. La extensión

quedaría así

[fax]

exten => 777,1,Answer()

exten => 777,n,Dial(IAX2/777)

exten => 777,n,Hangup()

y para comprobar que todo esta correcto, en la línea de comandos del sistema

ejecutamos la instrucción

iaxmodem ttyIAX

que nos mostrará unas lineas de registro del servicio (con algunos errores, eso es

normal, no hay que asustarse), y que finalmente aparecerá un mensaje

“Registration completed successfully” a lo que seguidamente en el CLI

ejecutamos la instrucción iax2 show peers like 777 que nos responde con un

mensaje como el siguiente

Name Host Mask Port Status

777/777 127.0.0.1 (D) 255.255.255.255 45699 OK (2 ms)

lo que nos indica que todo está preparado para poder recibir fax correctamente.

Solo nos falta hacer que el proceso faxgetty esté constantemente a la escucha de

los posibles fax entrantes. Para ello hemos de añadir en el archivo

vi /etc/inittab

justo al principio del fichero tras las dos primeras lineas de descripción del

archivo, las dos instrucciones que indicamos a continuación

iax:2345:respawn:/usr/local/bin/iaxmodem ttyIAX &>

/var/log/asterisk/iaxmodem-ttyIAX

fax:2345:respawn:/usr/local/sbin/faxgetty ttyIAX

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 93 -

Instalación y configuración de centralita VoIP basada en asterisk

tras lo que grabamos, salimos y reiniciamos nuestra máquina Asterisk para que

cargue el proceso correspondiente.

Aquí viene la complicación, pues hemos de buscar a alguien que tenga

posibilidad de enviar fax para que haga unos intentos y veamos el resultado de

nuestros esfuerzos.

Podemos mandar un fax de prueba con la instrucción

sendfax -n -d <número de fax> /etc/hylafax/faxcover.ps

(o cualquier otro archivo .ps que tengamos)

Cuando nos envíen un fax, comprobamos si dicho fax aparece en

/var/spool/hylafax/recvq (estará en formato TIFF o PDF).

Si no entran los fax o no se envían correctamente, podemos intentar comprender

donde esta el problema echando un vistazo al archivo /var/log/messages. Para

ver el estado del sistema de fax usaremos faxstat y para ver la cola de fax

pendientes de envío usaremos faxstat -s.

10.8 RECEPCIÓN DE FAX EN EL CORREO ELECTRÓNICO.

Hemos de crear un fichero de configuración nuevo mediante la instrucción

vi /etc/hylafax/FaxDispatch

que contenga los siguientes comandos

FILETYPE=pdf;

[email protected];

Añadimos al final del fichero

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 94 -

Instalación y configuración de centralita VoIP basada en asterisk

vi /etc/aliases

FAXMASTER: [email protected]

Por ultimo solo nos queda editar el fichero

vi /etc/hylafax/FaxNotify

y añadir

NOTIFY_FAXMASTER=yes;

RETURNFILETYPE=pdf;

Con esto deberíamos de recibir en el correo electrónico que hemos indicado en

la configuración tanto los fax entrantes en ficheros adjuntos a una notificación

informativa de cual ha sido el número de teléfono que nos ha remitido dicho

fax, como una confirmación de que los fax que estamos enviando, funcionan

correctamente.

10.9 INTEGRAR CDR ASTERISK. GESTIÓN DE BASE DE DATOS.

Una de las funciones más llamativas de Asterisk, es la posibilidad de gestión

mediante bases de datos de toda la información obtenida de las llamadas que

pasan a través del servidor. Es una maravilla que hay que ver para creer, así que

aptitude install mysql-server apache2 php5 php5-mysql php5-pd

Una vez instalado el servidor web y el servidor de base de datos entramos en la

línea de comando del gestor de base de datos con la instrucción mysql y vamos

introduciendo los siguientes comandos

CREATE DATABASE asterisk;

GRANT INSERT ON asterisk.* TO asterisk@localhost IDENTIFIED BY

'password'

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 95 -

Instalación y configuración de centralita VoIP basada en asterisk

donde password lo sustituimos por la contraseña de root que tengamos en la

máquina Asterisk. Seguimos introduciendo instrucciones

USE asterisk;

CREATE TABLE cdr (calldate datetime NOT NULL default '0000-00-00

00:00:00',clid varchar(80) NOT NULL default '',src varchar(80) NOT NULL

default '',dst varchar(80) NOT NULL default '',dcontext varchar(80) NOT

NULL default '',channel varchar(80) NOT NULL default '',dstchannel

varchar(80) NOT NULL default '',lastapp varchar(80) NOT NULL default

'',lastdata varchar(80) NOT NULL default '',duration int(11) NOT NULL

default '0',billsec int(11) NOT NULL default '0',disposition varchar(45) NOT

NULL default '',amaflags int(11) NOT NULL default '0',accountcode

varchar(20) NOT NULL default '',userfield varchar(255) NOT NULL default

'');

ALTER TABLE cdr ADD INDEX (calldate);

ALTER TABLE cdr ADD INDEX (dst);

ALTER TABLE cdr ADD INDEX (accountcode);

Y modificamos los ficheros de asterisk para la base de datos

vi /etc/asterisk/cdr_mysql.conf

que nos aseguramos que contenga las instrucciones que indicamos a

continuación

[global]

hostname=localhost

dbname=asterisk

password=

user=root

editamos

vi /etc/asterisk/res_mysql.conf

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 96 -

Instalación y configuración de centralita VoIP basada en asterisk

asegurándonos que contenga

[general]

dbhost = 127.0.0.1

dbname = asterisk

dbtable= cdr

dbuser = root

dbpass =

dbport = 3306

dbsock = /tmp/mysql.sock

Descargamos asterisk-stat que contiene una página web en PHP que permite

visualizar los datos que asterisk almacena en la base de datos, para que funcione

nos vamos a

cd /var/www

descargamos y descomprimimos el siguiente archivo, con lo que se nos crea una

carpeta llamada asterisk-stat-v2

wget http://areski.net/asterisk-stat-v2/asterisk-stat-v2_0_1.tar.gz

tar -zxvf asterisk-stat-v2_0_1.tar.gz

modificamos el fichero

vi /var/www/asterisk-stat-v2/lib/defines.php

y comprobamos que en el principio del fichero las instrucciones que

presentamos a continuación existen y con los parámetros que indicamos

define ("WEBROOT", "http://localhost/asterisk-stat/");

define ("FSROOT", "/var/www/html/HTTP2/Asterisk/asterisk-stat-v2/");

define ("LIBDIR", FSROOT."lib/");

define ("HOST", "localhost");

define ("PORT", "3306");

define ("USER", "root");

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 97 -

Instalación y configuración de centralita VoIP basada en asterisk

define ("PASS", "");

define ("DBNAME", "asterisk");

define ("DB_TYPE", "mysql");

define ("DB_TABLENAME", "cdr");

y finalmente, aleluya, para poder ver las estadísticas de nuestra centralita desde

un cliente WEB, solamente tendríamos que escribir en la barra de direcciones

http://172.16.0.211/asterisk-stat-v2/cdr.php

La página de estadísticas tiene múltiples opciones que dejamos en manos del

lector el explorar. Además es totalmente modificable para alguien con

conocimientos de PHP (de echo la página que descargas está en ingles y

nosotros la hemos traducido al castellano). Se pueden añadir nuevas estadísticas

y funcionalidades que puedan ser útiles en nuestra organización.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 98 -

Instalación y configuración de centralita VoIP basada en asterisk

RESULTADOS

Durante la gestación del proyecto y su posterior desarrollo, hemos tenido que leer

cantidades ingentes de documentación. Esencialmente páginas web, foros y manuales en linea.

Esas lecturas han conseguido principalmente dos cosas; por un lado que hayamos obtenido el

resultado esperado, esto es, una centralita plenamente operativa con unas funciones que superan a

las centralitas de gama media-alta que venden o alquilan las operadoras de telefonía, y por un

precio extremadamente inferior. Pero por otro lado, una vez el proyecto estaba maduro, y pasada

la fase de pruebas iniciales, gracias a seguir extrayendo información de internet, nos dimos cuenta

que muchas cosas que habíamos hecho de manera manual durante los procesos de instalación se

podían automatizar, haciendo más sencilla la creación e instalación de nuevas máquinas virtuales.

Eso nos animó a pensar “¿por que no crear más máquinas virtuales que provean de más servicios

al servidor”? También, en nuestro afán porque nuestro servidor fuese lo más seguro y escalable

dentro de lo posible, vimos que existe un sistema de archivos llamado LVM extremadamente

flexible que provee ciertas funciones interesantes.

Planteamos en aras de las seguridad el añadirle un firewall al servidor (un corta fuegos –

herramienta software para intentar evitar intrusiones o ataques a ordenadores) para lo que

encontramos Shorewall y para que todo ello funcionara correctamente nos vimos en la necesidad

de usar un servidor DHCP (que asigna direcciones IP automáticamente), un servidor SAMBA

(que permite compartir archivos entre diferentes sistemas operativos) y hemos querido que tanto

esfuerzo, se salvaguarde cada poco tiempo, para lo que hemos generado un sistema de copias de

seguridad automatizado mediante CRON (un gestor de ejecución de tareas de Debian). El

resultado es que tenemos un pequeño proyecto secundario en el que explicamos las mejoras que

hemos encontrado y con esas mejoras hemos generado las instrucciones de creación de una nueva

máquina virtual que engloba todas las funciones que, por desconocimiento, en un principio no

teníamos previsto incluir en nuestro servidor de centralita Asterisk. He aquí el resultado :

1 CREACIÓN DE MAQUINA VIRTUAL CON SOPORTE LVM, SERVIDOR DE

FICHEROS, SERVIDOR DNS, FIREWALL Y COPIAS DE SEGURIDAD CON

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 99 -

Instalación y configuración de centralita VoIP basada en asterisk

CRON.

Una vez creada la primera máquina virtual nos planteamos crear otra que nos sirva de

cortafuegos, copias de seguridad servidor de nombres (DNS) y ficheros (vamos a

centralizar toda la información de la red en esta máquina que hará las veces de servidor

de enlace entre redes).

El primer problemas que se nos plantea es en el tema de la generación de datos, pues

como nuestro sistema esta en maquinas virtuales de tamaño fijo, llegará un momento en

que debido a los datos generados por el uso de la centralita (mensajes de voz archivados,

faxes, datos del CDR), nos quedaremos sin espacio en el disco duro. Para solucionar esto

utilizaremos volúmenes lógicos a la hora de crear las imágenes de las maquinas virtuales.

El segundo problema a resolver es el como configurar nuestro sistema para que todo el

trafico que pase desde internet a nuestra intranet pase por esta maquina y proteja tanto

nuestros datos como toda nuestra red de Internet. Para esto le instalaremos a nuestro

sistema una tarjeta de red extra que conectaremos directamente a Internet y

configuraremos nuestro sistema Xen para que la máquina virtual administre esta tarjeta

directamente, al igual que hicimos con la tarjeta de comunicaciones Asterisk, y así poder

ejercer las funciones de router en nuestra intranet.

1.1 DEFINICIÓN Y CARACTERISTICAS DE LVM:

LVM es una implementación de un administrador de volúmenes lógicos para el

kernel Linux.

LVM incluye muchas de las características que podemos esperar de un administrador

de volúmenes, incluyendo:

- Redimensionado de grupos lógicos

- Redimensionado de volúmenes lógicos

- Instantáneas de sólo lectura (LVM2 ofrece lectura y escritura)

- RAID0 de volúmenes lógicos (unir varios discos duros como uno)

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 100 -

Instalación y configuración de centralita VoIP basada en asterisk

LVM no implementa RAID1 o RAID5, por lo que se recomienda usar software

específico de RAID para estas operaciones, teniendo las LV por encima del RAID.

En la imagen de la derecha

podemos observar cómo

trabaja LVM. Los volúmenes

lógicos agrupan particiones

físicas de disco, y éstos a su

vez, aunque no está

representado en la figura, se

engloban en un grupo lógico.

De esta forma, /home se

compone de hda3, hda4 y

hdb3, y a su vez, /usr engloba

a hda1, hda2, hdb1 y hdb2.

1.1.1 Ventajas de usar LVM :

- La gestión de volúmenes lógicos proporciona una vista de alto nivel sobre el

almacenamiento en un ordenador, en vez de la tradicional vista de discos y

particiones.

- Los volúmenes de almacenamiento bajo el control de LVM pueden ser

redimensionados y movidos a voluntad, aunque esto quizá necesite actualizar las

herramientas del sistema.

- LVM también permite la administración en grupos definidos por el usuario,

permitiendo al administrador del sistema tratar con volúmenes llamados, por

ejemplo, "ventas" o "desarrollo", en vez de nombres de dispositivos físicos,

como "sda" o "sdb".

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 101 -

Instalación y configuración de centralita VoIP basada en asterisk

1.1.2 Anatomía de un LVM :

Un volumen LVM se descompone en tres partes:

1.1.2.1 Volúmenes físicos (PV): son los discos duros, particiones o cualquier

otra "cosa" que parezca un disco duro (como por ejemplo los RAID).

1.1.2.2 Volúmenes lógicos (LV): es el equivalente a una partición en un

sistema tradicional. El LV es visible como un dispositivo estándar de

bloques, por lo que puede contener un sistema de archivos (por ejemplo

/home).

1.1.2.3 Grupos de volúmenes (VG): es la parte superior de la LVM. Es la

"caja" en la que tenemos nuestros volúmenes lógicos (LV) y nuestros

volúmenes físicos (PV). Se puede ver como una unidad administrativa en la

que se engloban nuestros recursos. Hay que hacer notar que mientras un PV

no se añada al VG, no podemos comenzar a usarlo.

A su vez, un PV se divide en “chunks” de datos, que se conocen como PE

(acrónimo de physical extents – medidas físicas), que son del mismo tamaño

que los PE del VG. Además, un LV se divide también en LE (logical extents),

cuyo tamaño es el mismo para todos los LV del VG.

Por ejemplo, teniendo como referencia la imagen del comienzo del artículo,

supongamos que tenemos un VG llamado CASA, con 4MB de PE, al que

queremos añadir un LV para /tmp/. Añadimos dos particiones de disco,

/dev/sda4 y /dev/sdb3, que se llamarán PV1 y PV2 (se las puede renombrar a

discreción del usuario). Los PV pueden ser de distinto tamaño y por lo tanto,

tendrán un número distinto de PE, por lo que supongamos que tenemos para

PV1 99 PE y para PV2 248 PE. Ahora, podemos crear el LV que necesitamos,

que puede ser de cualquier tamaño entre 1 y 347 (99+248) PE. De esta forma se

crea una tabla que relaciona los PE y los LE y si, por ejemplo, escribimos 4 MB

en el LE número 1 del LV, se corresponderán con el PE 51 de la PV1.

1.1.3 Instantáneas (copias de seguridad) : Las instantáneas (snapshots) permiten al

administrador crear un nuevo dispositivo que será una copia exacta del LV,

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 102 -

Instalación y configuración de centralita VoIP basada en asterisk

congelada en algún punto del tiempo. Normalmente esto se realiza de forma

automática, para no alterar el funcionamiento normal del sistema. Cuando la

instantánea ha terminado, el administrador puede quitar el dispositivo sin mayor

complicación. Además, no es necesario que los datos en el LV se encuentren en

un estado consistente, ya que muchos sistemas de ficheros en el kernel 2.6 lo

realizan de forma automática. Una diferencia importante entre la versión 1 de

LVM (LVM1 a partir de ahora) y la versión 2 (LVM2) es que en la primera, los

snapshots eran de sólo lectura, mientras que en LVM2 son de lectura y escritura.

¿Cuál es la diferencia? En LVM1, se crea lo que se llama una tabla de

excepciones, que se usa para mantener una lista de qué bloques en disco han

cambiado. Si un bloque va a ser modificado en el origen, primero se copia en la

instantánea, se marca como copiado en la tabla de excepciones y luego los

nuevos datos se copian al volumen original. En LVM2, las instantáneas

funcionan como en LVM1, pero con la característica de que si los datos se

escriben en el snapshot (una vez montado), ese bloque se marca como usado en

la tabla de excepciones y no se copia al volumen original. Esta característica es

muy útil debido a que podemos crear nuestra instantánea, montarla y probar un

programa o un nuevo navegador de ficheros. Si ocurre algo desastroso, la

desmontamos, la borramos y volvemos a colocar el volumen original.

1.2 EMPEZAMOS LA INSTALACIÓN.

Preparamos nuestro sistema, necesitamos una partición vacía o bien un disco duro,

para esto vamos a utilizar un HD de 320 GB.

Primero tendremos que particionar el disco duro. Utilizaremos el comando fdisk

(fdisk /dev/hdb) creamos una partición nuevo con la opción “n” , le cambiamos el

tipo con la opción “t” y elegimos el tipo de partición Linux LVM. Para escribir los

datos en el disco duro y salir pulsamos “w”.

fdisk /dev//hdb

El número de cilindros para este disco está establecido en 38913

No hay nada malo en ello, pero es mayor que 1024, y en algunos casos

podría causar problemas con:

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 103 -

Instalación y configuración de centralita VoIP basada en asterisk

1) software que funciona en el inicio (ejemplo versiones antiguas de LILO)

2) software de arranque o particionamiento de otros sistemas operativos

(ejemplo FDISK de DOS, FDISK de OS/2)

Orden (m para obtener ayuda): p

Disco /dev//hdb: 320.0 GB, 320072933376 bytes

255 cabezas, 63 sectores/pista, 38913 cilindros

Unidades = cilindros de 16065 * 512 = 8225280 bytes

Dispositivo Inicio Comienzo Fin Bloques Id Sistema

/dev//hdb1 1 38913 312568641 8e Linux LVM

Inicializamos la partición y creamos el volumen físico (PV), es decir

pvcreate /dev/hdb1

Vemos el resultado con pvdisplay:

--- Physical volume ---

PV Name /dev/hdb1

VG Name vg

PV Size 298,09 GB / not usable 0

Allocatable yes

PE Size (Kbyte) 4096

Total PE 76310

Free PE 60424

Allocated PE 15886

PV UUID yeOwtx-Bt1Z-Q43X-cu3k-lM7z-Rwik-VcMH49

Ahora nos disponemos a crear un grupo de volumen (VG) llamado también vg

vgcreate vg /dev/sdb1

que comprobamos también con vgdisplay, obteniendo

--- Volume group ---

VG Name vg

System ID

Format lvm2

Metadata Areas 1

Metadata Sequence No 28

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 104 -

Instalación y configuración de centralita VoIP basada en asterisk

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 10

Open LV 3

Max PV 0

Cur PV 1

Act PV 1

VG Size 298,09 GB

PE Size 4,00 MB

Total PE 76310

Alloc PE / Size 15886 / 62,05 GB

Free PE / Size 60424 / 236,03 GB

VG UUID 9P10qW-d6GW-tZnC-RWGC-E1fZ-poEs-pFhCsx

Una vez hecho esto ya solo nos queda crear nuestra maquina virtual con soporte para

LVM. Para ello instalamos un paquete para creación de maquinas virtuales que

provee una forma más rápida que la descrita durante el proceso de instalación del

servidor Asterisk

aptitude install xen-tools

modificaremos el fichero

vi /etc/xen-tools/xen-tools.conf

para que quede con las siguientes instrucciones

#dir = /data/xenmachines/

lvm = vg # Nombre del volumen lvm

debootstrap = 1

size = 4Gb # Tamaño que tomara en un principio

memory = 128Mb # Memoria RAM reservada para esta maquina virtual

swap = 128Mb # Tamaño de la partición Swap # noswap = 1

fs = ext3 # El sistema de ficheros que vamos a usar es ext3

dist = etch # Distribución a instalar por defecto

image = sparse

gateway = 172.16.0.1

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 105 -

Instalación y configuración de centralita VoIP basada en asterisk

netmask = 255.255.255.0

kernel = /boot/vmlinuz-2.6.18-6-xen-amd64 # o la que estemos usando

initrd = /boot/initrd.img-2.6.18-6-xen-amd64 # o la que estemos usando

Una vez hecho esto ya podemos crear todas las imágenes que queramos con el

comando:

xen-create-image --hostname <nombre> --ip <ip de la maquina>

Ejemplo: xen-create-image --hostname intranet --ip 172.16.0.212

Con este comando creamos directamente la maquina y con una Debian instalada.

Este proceso tardara algo pues la instalación de la Debian en esta maquina virtual la

hace desde internet con debootstrap (utilizado en la creación de la maquina Asterisk).

Y arrancamos la maquina con:

xm create -c /etc/xen/intranet.cfg

Con esto ya tenemos creada nuestra maquina virtual con un tamaño fijo de 4 Gb y

nos disponemos a probar como funciona eso del LVM.

1.3 PRUEBAS CON LVM.

1.3.1 Eliminando un LV.

Supongamos que no deseamos, por el motivo que sea, seguir usando el LV

llamado intranet y deseamos eliminarlo para disponer de ese espacio para otros

usos. Lo hacemos con :

lvremove /dev/vg/intranet

1.3.2 Extendiendo un LV.

Supongamos que por el contrario en lugar de eliminar un LV queremos añadirle

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 106 -

Instalación y configuración de centralita VoIP basada en asterisk

5GB de capacidad, para ello tendríamos que usar las instrucciones

lvextend-L+5G /dev/vg/intranet ; extiende el LV en +X cantidad de espacio

e2fsck -f /dev/vg/intranet ; examina la partición antes de tocarla

resize2fs /dev/disk/intranet ; realiza el cambio definitivo de tamaño

1.3.3 Reduciendo un LV.

Veamos el caso contrario, pensemos que queremos reducir intranet, le

quitaremos 5GB, el proceso es parecido al anterior:

e2fschk -f /dev/vg/intranet

resize2fs /dev/vg/intranet 35G

lvreduce -L-5G /dev/vg/intranet

Esto consigue que

1- revisamos el sistema de archivos (FS) ext3

2- reducimos el tamaño del FS ext3 (aquí sí hay que saber a cuánto reducirlo)

3- reducimos el tamaño del LV intranet, si te fijas usamos -L-5G aunque

también podíamos haber usado -L35G para indicarle el valor al que lo

reducimos.

Con esto nos basta para reducir el tamaño en 5GB.

1.3.4 Removiendo un PV.

Supongamos que un PV nuestro lo queremos sacar. Puede ser porque hemos

agregado un nuevo PV anteriormente que es muy grande y ya este PV viejo nos

queda pequeño y nos molesta su pírrica presencia, queremos por tanto eliminar

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 107 -

Instalación y configuración de centralita VoIP basada en asterisk

el disco con

pvmove /dev/hdb1

Este proceso puede durar mucho tiempo, puesto que pvmove saca la

información que tenga guardada y la almacena en los otros PV, esto sin alterar el

esquema de los LV. Por supuesto que la suma de capacidad disponible en los

otros PV debe ser mayor o igual a la cantidad de información que se esté

moviendo. Al finalizar de mover el PV, lo podemos eliminar del VG con:

vgreduce vg /dev/hdb1

1.4 CONCLUSIÓN

Una vez hechas todas las comprobaciones podemos asegurar que por muchas

maquinas virtuales que creemos o por mucho información que vayamos a guardar en

nuestro servidor de ficheros y copias de seguridad, vamos a poder en todo momento

administrar la capacidad de disco duro pudiendo disminuir el tamaño de una maquina

virtual que en un principio la creamos demasiado grande y poder dárselo a otra

maquina virtual que realmente lo necesite.

Si por el contrario ya hemos llenado toda la capacidad del disco duro se puede añadir

otro mas (en cualquier momento) aumentando el tamaño del primero. Parecido a un

RAID 0. La diferencia con este radica en que el RAID0 hace una escritura en

paralelo con lo que es mucho mas rápido que el LVM pero no permite hacer las

maravillas (en el aspecto de posibilidades de gestión del LVM.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 108 -

Instalación y configuración de centralita VoIP basada en asterisk

2 DEFINICIÓN Y CARACTERÍSTICAS DEL FIREWALL (SHOREWALL +

IPTABLES).

Shorewall (Shoreline Firewall) es una robusta herramienta de alto nivel para la

configuración de cortafuegos. Shorewall solo necesita que se le proporcionen algunos

datos en algunos ficheros de texto simple y éste creará las reglas de cortafuegos

correspondientes a través de Iptables. Shorewall puede permitir utilizar un sistema como

cortafuegos dedicado, permitiendo múltiples funciones como puerta de enlace,

dispositivo de encaminamiento (router) y servidor de servicios de red.

Iptables es el nombre de la herramienta de espacio de usuario (User Space, es decir, área

de memoria donde todas las aplicaciones, en modo de usuario, pueden ser intercambiadas

hacia memoria virtual cuando sea necesario) a través de la cual los administradores de

sistemas crean reglas para cada filtrado de paquetes y módulos de NAT. Iptables es la

herramienta estándar de todas las distribuciones modernas de GNU/Linux.

2.1 INSTALACIÓN DEL FIREWALL.

Primero le instalamos a nuestro sistema una tarjeta de red secundaria conectada

directamente al dispositivo que nos suministra servicios de internet (router adsl ,

cable módem, etc) y configuramos (al igual que hicimos con tarjeta Asterisk) en el

grub de nuestra maquina principal el parámetro necesario para poder administrar esta

tarjeta directamente en la maquina virtual de cortafuegos, usando de nuevo la

instrucción lspci y tomando nota de la dirección para añadirla

INMEDIATAMENTE a continuación de la que teníamos añadida para la gestión de

la tarjeta de comunicaciones (tal y como está explicado en el capítulo 3 -

INSTALACIÓN Y CONFIGURACIÓN DE SERVIDOR XEN). La instrucción

debería quedar más o menos así

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 109 -

Instalación y configuración de centralita VoIP basada en asterisk

module /boot/vmlinux-2.6.18-6-xen-amd64 root=/dev/sda1 ro console=tty0

max_loop=8 pciback.hide=(01:06.0)(01:07.0)

Modificamos el fichero de configuración de la máquina virtual que nos han creado

las herramientas de creación de Xen, mediante la instrucción

vi /etc/xen/intranet.cfg

y nos aseguramos que la instrucción PCI contenga lo siguientes

pci=['01:07.0']

Copiamos en /etc/xen/auto/ el archivo de configuración una vez modificado para que

así se inicie automáticamente cada vez que encendamos el servidor y arrancamos la

máquina virtual con

xm create /etc/xen/auto/intranet.cfg -c

Una vez arrancada la maquina virtual tenemos que decirle al sistema que tenemos

una tarjeta de red extra y que nos conectaremos por dhcp a la red de Internet, para

ello editamos el fichero de configuración de las tarjetas de red que en Debian se

encuentra en /etc/network/interfaces

auto eth0

iface eth0 inet static

address 172.16.0.212

netmask 255.255.255.0

auto eth1

iface eth1 inet dhcp

Al reiniciar la red con /etc/init.d/networking restart comprobaremos que en esta

maquina virtual ya tenemos Internet. Podemos ver el resultado con la instrucción

ifconfig.

En este caso eth0 es la tarjeta (virtual en este caso) que se conecta a nuestra red y

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 110 -

Instalación y configuración de centralita VoIP basada en asterisk

eth1 es la tarjeta de red que conecta la máquina intranet directamente a internet para

poder, una vez filtrada la conexión, suministrar servicios al resto de máquina reales y

virtuales de la red. Pero para que comparta la conexión tenemos que instalar

Shorewall en intranet mediante la instrucción

aptitude install shorewall

Shorewall es fácil de configurar. Al instalarlo se crean unos ficheros de

configuración en /etc/shorewall que son los que tendremos que modificar para

configurarlo.

/etc/interfaces .- En este fichero configuramos las tarjetas de red que tenemos y

donde están conectadas

net eth1 detect dhcp,tcpflags,norfc1918,routefilter,nosmurfs,logmartians

loc eth0 detect tcpflags,detectnets,nosmurfs

/etc/masq .- Este fichero es el que nos sirve para configurar el enrutado de la

conexión de internet de una tarjeta de red a otra y así poder compartir la conexión a

internet

#INTERFACE SUBNET ADDRESS PROTO PORT(S)IPSEC

eth1 eth0

/etc/shorewall/policity .- Aquí indicamos la política que vamos a seguir. No es

necesario modificarlo, pues como viene por defecto es suficiente para que el sistema

funcione, aunque podríamos, dependiendo del grado de seguridad que queramos para

nuestra red, cambiar las políticas por defecto.

/etc/shorewall/rules .- En este fichero le vamos a decir al firewall que puertos

queremos dejar abiertos y a que puertos de las maquinas de nuestra red va a ir.

Ejemplo si queremos direccionar el puerto 110 (POP3) a la maquina 172.168.0.213

de nuestra red usaríamos la instrucción

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 111 -

Instalación y configuración de centralita VoIP basada en asterisk

NAT net loc:192.168.0.155:110 tcp 110

/etc/shorewall/zones .- Aquí configuramos las distintas zonas en que se va a

componer nuestro cortafuegos, en nuestro caso configuramos 3 zonas una para

nuestra red local otra para internet y otra para el cortafuegos.

#ZONE TYPE OPTIONS IN OUT OPTIONS OPTIONS

fw firewall

net ipv4

loc ipv4

Si todo esta bien configurado al hacer un /etc/init.d/shorewall restar ya estamos

compartiendo con nuestra red la conexión a internet. Eso si la configuración IP de las

máquinas de la red la tendremos que configurar a mano debido a que aun no hemos

instalado ningún servidor DHCP (este se encarga de asignar direcciones IP, puerta de

enlace y servidor de nombres automáticamente).

3 CONFIGURACIÓN SERVIDOR DHCP.

DHCP (sigla en inglés de Dynamic Host Configuration Protocol) es un protocolo de red

que permite a los nodos de una red IP obtener sus parámetros de configuración

automáticamente. Se trata de un protocolo de tipo cliente/servidor en el que generalmente

un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes

conforme éstas van estando libres, sabiendo en todo momento quién ha estado en

posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después.

Sin DHCP, cada dirección IP debe configurarse manualmente en cada computadora y, si

la computadora se mueve a otro lugar en otra parte de la red, se debe configurar otra

dirección IP diferente. El DHCP le permite al administrador supervisar y distribuir de

forma centralizada las direcciones IP necesarias y, automáticamente, asignar y enviar una

nueva IP si la computadora es conectado en un lugar diferente de la red.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 112 -

Instalación y configuración de centralita VoIP basada en asterisk

El protocolo DHCP incluye tres métodos de asignación de direcciones IP:

Asignación manual o estática: Asigna una dirección IP a una máquina determinada. Se

suele utilizar cuando se quiere controlar la asignación de dirección IP a cada cliente, y

evitar, también, que se conecten clientes no identificados.

Asignación automática: Asigna una dirección IP de forma permanente a una máquina

cliente la primera vez que hace la solicitud al servidor DHCP y hasta que el cliente la

libera. Se suele utilizar cuando el número de clientes no varía demasiado.

Asignación dinámica: el único método que permite la reutilización dinámica de las

direcciones IP. El administrador de la red determina un rango de direcciones IP y cada

computadora conectada a la red está configurada para solicitar su dirección IP al servidor

cuando la tarjeta de interfaz de red se inicializa. El procedimiento usa un concepto muy

simple en un intervalo de tiempo controlable. Esto facilita la instalación de nuevas

máquinas clientes a la red.

En nuestro caso vamos a preparar nuestro servidor para poder suministrar este último

método de asignación.

3.1 PROCEDIMIENTO PARA LA PUESTA EN MARCHA.

aptitude install dhcpd

y una vez terminada la instalación editamos el archivo

vi /etc/dhcpd.conf

que tiene que contener las siguientes instrucciones

subnet 192.168.0.0 netmask 255.255.255.0 {

range dynamic-bootp 172.16.0.220 172.16.0.240;

option broadcast-address 172.16.0.255;

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 113 -

Instalación y configuración de centralita VoIP basada en asterisk

option domain-name-servers 172.16.0.1;

option routers 192.168.0.212;

}

En la linea1, hace referencia a nuestra red local (al rango) y su mascara (en este caso,

al ser de clase C, es 255.255.255.0).

En la linea 2, configuramos el rango de IP que se van a dar a los clientes. En este

caso de la IP 172.16.0.220 a la 172.16.0.240, es decir que el servidor configurará

automáticamente hasta 20 clientes simultáneos.

En la linea 3 está la dirección de broadcast de la red, que siempre que no haya

subredes creadas terminara en .255 con la dirección de la red.

En la linea 4, se hace referencia a la IP del servidor DNS que utilizaran los clientes

de la red local. Como no hay ningún servidor DNS configurado aún en la red local,

configuramos la IP del servidor DNS del proveedor de Internet.

En la linea 5, finalmente, se referencia a la máquina que hace de gateway de la red,

que en este caso es la misma que tiene el servidor DHCP configurado.

Con esto solo ya solo nos resta reiniciar el servidor dhcp con un ‘/etc/init.d/dhcpd

restart’ y listo, ya tenemos el servidor configurado y funcionando.

4 REALIZACIÓN DE COPIAS DE SEGURIDAD CON SAMBA + CRON.

Hacer una copia de seguridad o copia de respaldo (backup en inglés, el uso de este

anglicismo está ampliamente extendido) se refiere a la copia de datos de tal forma que

estas copias adicionales puedan restaurar un sistema después de una pérdida de

información. La copia de seguridad es útil por varias razones:

- Para restaurar un ordenador a un estado operacional tras un desastre (copias de

seguridad del sistema.

- Para restaurar un pequeño número de ficheros después de que hayan sido borrados

o dañados accidentalmente (copias de seguridad de datos).

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 114 -

Instalación y configuración de centralita VoIP basada en asterisk

- En el mundo de la empresa, además es útil y obligatorio, para evitar ser sancionado

por los órganos de control en materia de protección de datos.

La primera la tenemos cubierta con nuestro sistema de maquinas virtuales con Xen y para

la segunda utilizamos esta maquina virtual para realizar la copia de los datos de todos los

equipos de nuestra red, tanto Windows como Linux. Para esto utilizaremos el programa

Samba para comunicarnos con las maquinas Windows y CRON para arrancar nuestro

sistema de copias de seguridad.

4.1 SAMBA

Samba es una implementación libre del protocolo de archivos compartidos de

Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a

CIFS) para sistemas de tipo UNIX. De esta forma, es posible que ordenadores con

Linux, Mac OS X o Unix en general se vean como servidores o actúen como clientes

en redes de Windows. Samba también permite validar usuarios haciendo de

Controlador Principal de Dominio (PDC), como miembro de dominio e incluso como

un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de

servir colas de impresión, directorios compartidos y autenticar con su propio archivo

de usuarios. Entre los sistemas tipo Unix en los que se puede ejecutar Samba, están

las distribuciones GNU/Linux, Solaris y las diferentes variantes BSD.

Samba configura directorios Unix/Linux como recursos para compartir a través de la

red. Para los usuarios de Microsoft Windows, estos recursos aparecen como carpetas

normales de red. Los usuarios de Linux pueden montar en sus sistemas de archivos

estas unidades de red como si fueran dispositivos locales, o utilizar la orden

smbclient para conectarse a ellas muy al estilo del cliente de la línea de órdenes ftp.

Cada directorio puede tener diferentes permisos de acceso sobrepuestos a las

protecciones del sistema de archivos que se esté usando en Linux. Por ejemplo, las

carpetas home pueden tener permisos de lectura y escritura para cada usuario,

permitiendo que cada uno acceda a sus propios archivos; sin embargo, deberemos

cambiar los permisos de los archivos localmente para dejar al resto ver nuestros

archivos, ya que con dar permisos de escritura en el recurso no será suficiente.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 115 -

Instalación y configuración de centralita VoIP basada en asterisk

La configuración de Samba se logra editando un solo archivo, accesible en

/etc/smb.conf o en /etc/samba/smb.conf.

Para las copias de seguridad de todas las máquinas Windows de nuestra red hemos

creado un script que copia todo lo que tenemos en un recurso compartido según el

día de la semana. El archivo que contiene el script lo guardamos en

/root/backupwindows y el script lo suministramos como anexo1 al documento,

tanto en papel como en formato electrónico. El script hace copias de seguridad cada

día de la semana de las carpetas que le indiquemos en la función function

CopiaDiaria().

Para la copia de seguridad de las maquinas Linux, hemos generado un segundo script

que al igual que el primero, guarda copia de seguridad de las carpetas que le

indiquemos. Este script también lo almacenamos en /root/backuplinux y lo

añadimos como anexo 2 a la documentación.

4.2 CRON.

CRON es es un administrador regular de procesos en segundo plano (demonio) que

ejecuta programas a intervalos regulares (por ejemplo, cada minuto, día, semana o

mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se

especifican en el archivo /etc/crontab.

CRON se podría definir como el "equivalente" a Tareas Programadas de Windows.

Los usuarios habilitados para crear su archivo crontab se especifican en el archivo

/etc/cron.allow. De manera análoga, los que no lo tienen permitido figuran en

/etc/cron.d/cron.deny o en /etc/cron.deny.

Formato del archivo crontab

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 116 -

Instalación y configuración de centralita VoIP basada en asterisk

01 * * * * root nice -n 19 run-parts /etc/cron.hourly

50 0 * * * root nice -n 19 run-parts /etc/cron.daily

22 4 * * 0 root nice -n 19 run-parts /etc/cron.weekly

42 4 1 * * root nice -n 19 run-parts /etc/cron.monthly

Para agregar, quitar o modificar tareas, hay que editar el crontab. Esto se hace con la

orden crontab -e, que abrirá el editor definido en la variable entorno EDITOR y

cargará el archivo crontab correspondiente al usuario que está autentificado en el

sistema.

4.2.1 Sintaxis de configuración de CRON.

El momento de ejecución de un script lo indicamos en el archivo crontab

teniendo en cuenta que tiene cinco posibles parámetros en este orden :

Minutos : (0-59)

Horas : (0-23)

Días : (1-31)

Mes : (1-12)

Día de la semana : (0-6), siendo 1=Lunes, 2=Martes, etc, 0=Domingo

Por tanto para indicar en el crontab que queremos ejecutar nuestro script de

copia de seguridad todos los Lunes a las diez de la noche tendríamos que indicar

* 22 * * 01 /root/backuplinux

o podríamos hacer que la copia fuese todos los días quince de cada mes a las

doce y cinco de la madrugada

05 00 15 * * /root/backupwindows

Ni que decir tiene que podemos ejecutar no solo nuestros scripts, sino también

cualquier orden de sistema o cualquier aplicación que nos interese.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 117 -

Instalación y configuración de centralita VoIP basada en asterisk

CONCLUSIONES

El software libre es la panacea universal para la informática. Es el único medio que hace

que el ser humano no tenga que reinventar la rueda una y mil veces. Es una perdida de recursos y

tiempo el que si alguien quiere suministrar un procesador de textos, tenga que reescribir el código

desde cero. Y eso por cada organización, empresa o particular que desee disponer de dicho

procesador de textos, creando además diferentes formatos incompatibles entre sí.

Nosotros, sin tener que reinventar la rueda hemos podido crear una centralita telefónica

de alto valor añadido, aprovechando el trabajo previo de personas que han cedido horas de su

tiempo para generar esta maravilla de la computación que es Asterisk. Es por lo que por nuestra

parte vamos a poner nuestro proyecto a disposición de la comunidad del software libre para que

gracias a nuestras experiencias, podamos facilitar que otras personas no tengan que usar la

barbaridad de horas de lectura y creación que hemos tenido que emplear nosotros para poner en

marcha un servidor Asterisk. Para que otras personas, no tengan que reinventar la rueda y puedan

dedicar su tiempo a sus aficiones, a su familia, a sus amigos o ¡¡¡ que diablos !!! a generar más

software libre que luego todos podamos disfrutar.

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 118 -

Instalación y configuración de centralita VoIP basada en asterisk

BIBLIOGRAFÍA

http://www.genbeta.com/2007/09/29-cual-es-el-tamano-optimo-para-la-swap-en-linux

http://www.laespiral.org/articulos/chroot/entorno-chroot.html

http://www.kriptopolis.org/instalar-xen-en-arch-linux

http://www.howtoforge.com/perfect_setup_xen3_debian

http://linuxupc.upc.es/~kampa/blog/gnulinux/instalar-xen-en-gnudebian-etch/

http://www.linuca.org/body.phtml?nIdNoticia=355&nIdPage=4

http://julioduque.wordpress.com/2007/11/27/virtualizar-puerto-paralelo-en-xen/feed/

http://es.wikipedia.org/wiki/E1

http://es.wikipedia.org/wiki/RDSI

http://www.escritura-uah.es/index.php?option=com_easyfaq&task=view&id=16

http://www.voip-info.org/wiki-Asterisk+CLI

http://www.ecualug.org/?q=2007/jul/29/forums/asterisk_cli

http://www.asteriskguru.com/tutorials/cli_cmd_14_page2.html

http://www.pixelado.org/?p=36

http://mdelgac.weblog.net/2007/10/12/escenario-de-configuracion-basica-de-asteriskpap2spa400/

http://forum.asterisk-online.com.ar/phpBB2/viewtopic.php?

p=560&sid=188d4322251373820ca88b291786b188

http://www.3cx.es/voip-sip/telefonos-sip.php

http://www.voipforo.com/asterisk/configuracion-extensions-conf.php

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 119 -

Instalación y configuración de centralita VoIP basada en asterisk

ANEXO I

SCRIPT DE COPIAS DE SEGURIDAD MEDIANTE RSYNC PARA SISTEMAS

WINDOWS

#!/bin/sh

#Copia un Recurso compartido SAMBA con montaje y desmontaje

#Parámetros: Recurso CarpetaOrigen CarpetaDestino

function CopiaCarpetas()

{

echo "*** Comienza copia diaria de carpeta $1/$2 a $3"

mount -t smbfs -o password= $1 /mnt

rsync -a --delete /mnt/$2/ /backup2/$3

umount /mnt

echo "*** Termina copia diaria de carpeta $1/$2 a $3"

}

function CopiaDiaria()

{

#Insertar una linea por cada recurso compartido a copiar

#PC MIGUEL

CopiaCarpetas //172.16.0.241/AEAT . $1/miguel/AEAT

CopiaCarpetas //172.16.0.241/mis_documentos . $1/miguel/mis_documentos

#PC PEDRO

CopiaCarpetas //172.16.0.242/Documents_and_settings . $1/pedro/Documents_and_settings

}

MiFecha=`date +%Y_%m_%d`

echo "********************** BACKUP DEL $MiFecha ********************************"

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 120 -

Instalación y configuración de centralita VoIP basada en asterisk

dia=`date +%A`

case "$dia" in

lunes)

CopiaDiaria lunes

;;

martes)

CopiaDiaria martes

;;

miércoles)

CopiaDiaria miércoles

;;

jueves)

CopiaDiaria jueves

;;

viernes)

CopiaDiaria viernes

;;

esac

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 121 -

Instalación y configuración de centralita VoIP basada en asterisk

ANEXO II

SCRIPT DE COPIAS DE SEGURIDAD EN ARCHIVOS COMPRIMIDOS .TAR PARA

SISTEMAS LINUX

#!/bin/bash

#Directorios que queremos copiar

ETC=/etc/

HOME=/home/almacen

#Guardamos la fecha

DIA=`date +%Y%m%d`

#Destino, donde se almacenaran las copias de seguridad

DEST=/backup2 /linux

echo “Creando copia completa”

tar -cvzf $DEST/etc.$DIA.copia.tar.gz $ETC

tar -cvzf $DEST/almacen.$DIA.copia.tar.gz $HOME

echo “Copia completa terminada”

echo COPIA DE SEGURIDAD DEL $DIA DE $ETC $HOME CREADA | mail [email protected]

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 122 -

Instalación y configuración de centralita VoIP basada en asterisk

ANEXO III

CONTENIDO DEL ARCHIVO ZAPATA.CONF

[channels]

language = es

usecallingpres = yes

usercallerid = yes

hidecallerid = no

callwaiting = yes

threewaycalling = yes

transfer = yes

immediate = yes

faxdetect = both

busydetect = yes

group=1

context = inicio

busycount = 7

immediate = yes

signalling = fxs_ks

echocancel = yes

echocancelwhenbridged=yes

answeronpolarityswitch=yes

hanguponpolarityswitch=yes

rxgain = 0.5

txgain = 1.0

channel =>1

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 123 -

Instalación y configuración de centralita VoIP basada en asterisk

ANEXO IV

CONTENIDO DEL ARCHIVO SIP.CONF

[general]

port = 5060

bindaddr = 0.0.0.0

context = inicio

disallow = all

allow = alaw

language = es

useragent = ASTERISK PBX PROYECTO

tos = 0x18

videosupport = yes

[100]

username = 100

type = friend

;secret =

;callerid =

context = inicio

;nat = yes ; permitir que la extension se use desde internet

host = dynamic ; permite que la extensión se use con todas ips

;canreinvite = no

;qualify = yes

;call-limit = 10

mailbox = 100

[200]

username = 200

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 124 -

Instalación y configuración de centralita VoIP basada en asterisk

type = friend

context = inicio

host = dynamic

mailbox = 200

[300]

username = 300

type = friend

context = inicio

host = dynamic

mailbox = 300

[400]

username = 400

type = friend

secret = 400

context = inicio

host = dynamic

mailbox = 400

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 125 -

Instalación y configuración de centralita VoIP basada en asterisk

ANEXO V

CONTENIDO DEL ARCHIVO IAX.CONF

[general]

bindport = 4569 ; puerto por defecto del protocolo IAX

bindaddr = 0.0.0.0 ; dirección IP para la conexión (cualquiera)

context = inicio ; contexto por defecto

languaje = es

delayreject = yes

bandwitch = low ; usar codec con bajo consumo de ancho de banda

allow = all ; codecs que se usarán (permitimos todos)

[700]

username = 700

type = friend

secret = 700

context = inicio

host = dynamic

nat = yes

[777]

username = 777

type = friend

qualify = yes

notransfer = yes

secret = 777

host = dynamic

context = fax

nat = no

callerid = “Fax” <777>

allow = all

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 126 -

Instalación y configuración de centralita VoIP basada en asterisk

ANEXO VI

CONTENIDO DEL ARCHIVO EXTENSIONS.CONF

[general]

static = yes

writeprotect = no

autofallthrough = yes

clearglobalvars = no

priorityjumping = no

language = es

[inicio]

include = entrada

include = horario

include = fax

exten => s,1,Answer() ; descuelga

exten => s,n,Wait(3) ; espera 3 segundos

exten => s,n,GotoifTime(22:01-09:59|mon-sat|*|*?horario,s,13) ;

exten => s,n,GotoifTime(15:01-19:59|mon-sat|*|*?horario,s,13) ;

exten => s,n,GotoifTime(00:00-23:59|sun|*|*?horario,s,16) ;

exten => fax,1,Goto(fax,777,1) ; si es un fax marca la extensión 777

[entrada]

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 127 -

Instalación y configuración de centralita VoIP basada en asterisk

include = salida

exten => s,n,Background(loc_inicio)

exten => s,n,WaitExten(5)

exten => s,n,Background(loc_inicio)

exten => s,n,WaitExten(5)

exten => s,n,Goto(100,1)

exten => s,n,Hangup()

exten => 1,1,Goto(100,1)

exten => 2,1,Goto(200,1)

exten => 3,1,Goto(300,1)

exten => 4,1,Goto(400,1)

[salida]

include = buzondevoz

; extensiones internas

exten => 100,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--

%H-%M-%S--)})

exten => 100,n,MixMonitor(ENTRADA-${horadellamada}-$

{CALLERID(num)}-${EXTEN}.wav)

exten => 100,n,GotoifTime(22:01-17:59|mon-sat|*|*?horario,s,1)

exten => 100,n,Dial(Sip/100,30,tTr)

exten => 100,n,Voicemail,100

exten => 100,n,Hangup()

exten => 200,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--

%H-%M-%S--)})

exten => 200,n,MixMonitor(ENTRADA-${horadellamada}-$

{CALLERID(num)}-${EXTEN}.wav)

exten => 200,n,GotoifTime(15:01-09:59|mon-sat|*|*?horario,s,4)

exten => 200,n,Dial(Sip/200,30,tTr)

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 128 -

Instalación y configuración de centralita VoIP basada en asterisk

exten => 200,n,Voicemail,200

exten => 200,n,Hangup()

exten => 300,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--

%H-%M-%S--)})

exten => 300,n,MixMonitor(ENTRADA-${horadellamada}-$

{CALLERID(num)}-${EXTEN}.wav)

exten => 300,n,GotoifTime(00:01-18:29|wed-sun|*|*?horario,s,7)

exten => 300,n,Dial(Sip/300,30,tTr)

exten => 300,n,Voicemail,300

exten => 300,n,Hangup()

exten => 400,1,Set(horadellamada=${STRFTIME(${EPOCH},,%d-%m-%y--

%H-%M-%S--)})

exten => 400,n,MixMonitor(ENTRADA-${horadellamada}-$

{CALLERID(num)}-${EXTEN}.wav)

exten => 400,n,GotoifTime(00:00-23:59|mon-sun|*|*?horario,s,10)

exten => 400,n,Dial(Sip/400,30,tTr)

exten => 400,n,Voicemail,400

exten => 400,n,Hangup()

; llamadas a fijos y móviles

exten => _9XXXXXXXX,1,Dial(Zap/1/${EXTEN},,tTr)

exten => _9XXXXXXXX,n,Hangup

exten => _6XXXXXXXX,1,Dial(Zap/1/${EXTEN},,tr)

exten => _6XXXXXXXX,n,Hangup

; llamadas a teléfonos de policía, bomberos, emergencias

exten => _0ZZ,1,Dial(Zap/1/${EXTEN},,r)

exten => _0ZZ,n,Hangup()

exten => _1ZZ,1,Dial(Zap/1/${EXTEN},,r)

exten => _1ZZ,n,Hangup()

; llamadas a teléfonos superiores al 9xx y 8xx (teléfonos de pago por servicios)

exten => _[89]0[0-289]XXXXXX,1,Dial(Zap/1/${EXTEN},, r)

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 129 -

Instalación y configuración de centralita VoIP basada en asterisk

exten => _[89]0[0-289]XXXXXX,n,Hangup()

; llamadas internacionales

exten => _00.,1,Dial(Zap/1/${EXTEN},, r)

exten => _00.,n,Hangup()

; llamadas del sistema para grabar y escuchar locuciones de voz

exten => 555,1,Answer()

exten => 555,n,Record(locucion:gsm)

exten => 555,n,Hangup()

exten => 556,1,Playback(locucion)

exten => 556,2,Hangup()

[horario]

exten => s,1,Answer() ; comienza joseno

exten => s,2,Playback(joseno)

exten => s,3,Hangup()

exten => s,4,Answer() ; comienza miguelno

exten => s,5,Playback(miguelno)

exten => s,6,Hangup()

exten => s,7,Answer() ; comienza tutoriano

exten => s,8,Playback(tutoriano)

exten => s,9,Hangup()

exten => s,10,Answer() ; comienza operadoresno

exten => s,11,Playback(operadoresno)

exten => s,12,Hangup()

exten => s,13,Answer() ; comienza horano

exten => s,14,Playback(horano)

exten => s,15,Hangup()

exten => s,16,Answer() ; comienza domingono

exten => s,17,Playback(domingono)

exten => s,18,Hangup()

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 130 -

Instalación y configuración de centralita VoIP basada en asterisk

[fax]

exten => 777,1,Answer()

exten => 777,n,Dial(IAX2/777)

exten => 777,n,Hangup()

[buzondevoz]

exten => 12345,1,VoicemailMain(${CALLERIDNUM})

exten => 12345,2,Hangup()

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 131 -

Instalación y configuración de centralita VoIP basada en asterisk

ANEXO VII

CONTENIDO DEL ARCHIVO CDR_MYSQL.CONF

[global]

hostname=localhost

dbname=asterisk

password=

user=root

;port=3306

;sock=/tmp/mysql.sock

;userfield=1

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 132 -

Instalación y configuración de centralita VoIP basada en asterisk

ANEXO VIII

CONTENIDO DEL ARCHIVO RES_MYSQL.CONF

[general]

dbhost = 127.0.0.1

dbname = asterisk

dbtable= cdr

dbuser = root

dbpass =

dbport = 3306

dbsock = /tmp/mysql.sock

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 133 -

Instalación y configuración de centralita VoIP basada en asterisk

ANEXO IX

CONTENIDO DEL ARCHIVO VOICEMAIL.CONF

[general]

format=wav ; formato de grabación del audio

attach=yes ; enviar mensajes de voz por correo electrónico

maxmessage=180

mailcmd=/usr/sbin/sendmail -t

serveremail=root@localhost

fromstring="Centralita Asterisk de Proyecto Asterisk"

emailsubject=[PBX] Mensaje número ${VM_MSGNUM} en buzón de voz.

emailbody=\n\n\n***** Este es un mensaje automático de la centralita de VoIP de *****\n

PROYECTOASTERISK *****\n\n\n\n\t Tiene un mensaje nuevo en su buzón de voz: \n Con el

numero ${VM_MSGNUM}. \n Recibido desde el numero de teléfono ${VM_CALLERID}. \n El

${VM_DATE} . \n Dicho mensaje se adjunta a este mail, pero no obstante debe llamar a su buzón

de voz y eliminarlo tras su escucha. Si no conoce como acceder a su buzón de voz, por favor

contacte con el departamento al cargo.\n\n\t Gracias.\n\n\t

[default]

100 => 1234,100,100,jose@localhost

200 => 1234,200,200,[email protected]

300 => 1234,300,300,[email protected]

400 => 1234,400,400,[email protected]

José Manuel campos moreno y Miguel José guzmán munuera

Pag. - 134 -

Instalación y configuración de centralita VoIP basada en asterisk

ANEXO X

MANUAL DE INSTRUCCIONES DE CENTRALITA ASTERISK.

Si suena el teléfono :

Descolgar y hablar.

Si queremos llamar :

Descolgar, marcar y hablar (si nos lo cogen).

Si deseamos transferir una llamada :

Pulsamos # y el número de extensión donde deseamos pasar la llamada.

Si deseamos grabar una llamada :

Pulsamos *1 en cualquier momento durante la conversación.

Si deseamos escuchar el buzón de voz :

Pulsamos 12345, esperamos respuesta y seguimos instrucciones.

Si deseamos grabar una locución para la centralita :

Pulsamos 555, esperamos tono y declamamos la locución.

Si deseamos escuchar la última locución grabada :

Pulsamos 556 y escuchamos nuestra dulce voz.

José Manuel campos moreno y Miguel José guzmán munuera