Fotos del nuevo equipo de storage que realizara funciones de replicación con la primera caja.
![]() |
La parte trasera de los módulos de conexión.
![]() |
Los switch con soporte para iSCSI.
![]() |
Pocas cosas que se.
Instalaremos Asterisk, DAHDI, OpenR2 y WANPIPE para configurar un enlace telefónico E1 de TELMEX en México, sera la tercera guía rápida que hago cada una con distintas tarjetas, Digium y OpenVox.
El sistema operativo que utilizaremos sera Linux Red Hat Enterprise Linux 5.6 para arquitectura de 64 bits, el equipo donde desarrollaremos las pruebas es un HP Proliant ML150, una tarjeta Sangoma A101 1-port T1/E1/J1 y conectores para los coaxiales para la conversión a RJ45. Instalaremos el sistema y utilizaremos únicamente paquetes que vienen junto con los discos de instalación, no usaremos yum para instalar ni actualizar paquetes principalmente para verificar los paquetes que son necesarios para compilar asterisk, dahdi y wanpipe (puedes utilizar CentOS por aquello de la licencia de RedHat).
No cubriremos la instalación de Red Hat hay demasiada información en la red para consultar solo hacemos mención que se instala sin entorno gráfico y demás aplicaciones no necesarias para un servidor de las características mencionadas. Los paquetes los tomaremos y los instalaremos usando la imagen ISO de RHEL montándolo en un directorio para instalarlos mediante RPM, ya que tenemos instalado todo el sistema operativo y conectado adecuadamente a una red con acceso a Internet procederemos a lo siguiente:
Crearemos un directorio denominado IPBX dentro de /usr/src que sera nuestro directorio de instalación, dentro de el crearemos otro directorio denominado Disco donde montaremos la ISO de instalación de Red Hat, para acceder a los paquetes.
[root@asterisksangoma ~]# mkdir /usr/src/IPBX [root@asterisksangoma ~]# cd /usr/src/IPBX/ [root@asterisksangoma IPBX]# mkdir Disco [root@asterisksangoma IPBX]# mount -t iso9660 -o loop rhel-server-5.6-x86_64-dvd.iso Disco/ [root@asterisksangoma IPBX]# cd Disco/Server/
Estos son los paquetes que tuve que instalar para la compilación de wanpipe, dahdi, asterisk y openr2, hay dependencias entre ellos por lo tanto es necesario instalarlos todos, con yum o createrepo es mas automático sin embargo no son muchos paquetes y de esta manera uno se da cuenta de los necesarios.
[root@asterisksangoma Server]# rpm -ivh kernel-devel-2.6.18-238.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh ncurses-devel-5.5-24.20060715.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh ncurses-5.5-24.20060715.x86_64.rpm * [root@asterisksangoma Server]# rpm -ivh kernel-headers-2.6.18-238.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh glibc-headers-2.5-58.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh glibc-devel-2.5-58.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh gcc-4.1.2-50.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh flex-2.5.4a-41.fc6.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh patch-2.5.4-31.el5.x86_64.rpm * [root@asterisksangoma Server]# rpm -ivh libtermcap-devel-2.0.8-46.1.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh bison-2.3-2.1.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh imake-1.0.2-3.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh autoconf-2.59-12.noarch.rpm [root@asterisksangoma Server]# rpm -ivh automake-1.9.6-2.3.el5.noarch.rpm [root@asterisksangoma Server]# rpm -ivh libtool-1.5.22-7.el5_4.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh libstdc++-devel-4.1.2-50.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh gcc-c++-4.1.2-50.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh slang-devel-2.0.6-4.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh newt-devel-0.52.2-15.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh zlib-devel-1.2.3-3.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh libxml2-devel-2.6.26-2.1.2.8.el5_5.1.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh e2fsprogs-devel-1.39-23.el5_5.1.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh keyutils-libs-devel-1.2-1.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh libsepol-devel-1.15.2-3.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh libselinux-devel-1.33.4-5.7.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh krb5-devel-1.6.1-55.el5.x86_64.rpm [root@asterisksangoma Server]# rpm -ivh openssl-devel-0.9.8e-12.el5_5.7.x86_64.rpm
En el directorio de IPBX descargaremos las ultimas versiones de cada una de las aplicaciones que vamos a utilizar, para este caso usaremos Wanpipe 3.5.20, Asterisk 1.8.4, DAHDI linux 2.4.1.2, DAHDI tools 2.4.1 y OpenR2 1.3.1.
[root@asterisksangoma IPBX]# wget ftp://ftp.sangoma.com/linux/current_wanpipe/wanpipe-3.5.20.tgz [root@asterisksangoma IPBX]# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-2.4.1.2.tar.gz [root@asterisksangoma IPBX]# wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-tools-2.4.1.tar.gz [root@asterisksangoma IPBX]# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8.4.tar.gz [root@asterisksangoma IPBX]# wget http://openr2.googlecode.com/files/openr2-1.3.1.tar.gz
Antes que nada debemos conectar al equipo la tarjeta y verificar que se reconocida por Linux, mediante lspci verificamos que adecuadamente el sistema operativo la reconoció y nos muestra donde esta conectada físicamente.
La tarjeta en cuestión:
Puerto PCI del equipo.
[root@asterisksangoma ~]# lspci | grep Net 07:00.0 Network controller: Sangoma Technologies Corp. A200/Remora FXO/FXS Analog AFT card 07:01.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5703X Gigabit Ethernet (rev 02)
Procedemos con la instalación de los módulos de DAHDI y posteriormente la instalación de Wanpipe ya que vamos a utilizar DAHDI especificamos al script de instalación el parámetro dahdi.
[root@asterisksangoma IPBX]# tar xfz dahdi-linux-2.4.1.2.tar.gz [root@asterisksangoma IPBX]# cd dahdi-linux-2.4.1.2 [root@asterisksangoma dahdi-linux-2.4.1.2]# make [root@asterisksangoma dahdi-linux-2.4.1.2]# make install [root@asterisksangoma dahdi-linux-2.4.1.2]# cd .. [root@asterisksangoma IPBX]# tar xfz wanpipe-3.5.20.tgz [root@asterisksangoma IPBX]# cd wanpipe-3.5.20
El script de instalación verificara los componentes necesarios como son paquetes, librerías del kernel utilizado y el directorio de DAHDI a utilizar.
[root@asterisksangoma wanpipe-3.5.20]# ./Setup dahdi ---------------------------------------------------------- WANPIPE v3.5.20 Installation Script Copyright (c) 1995-2010, Sangoma Technologies Inc. ---------------------------------------------------------- WANPIPE INSTALLATION FOR DAHDI You are about to install WANPIPE TDM Voice drivers for Asterisk/Dahdi framework. You will be prompted for path to DAHDI source. Wanpipe drivers will compile into dahdi WITHOUT any dahdi patching or need to recompile dahdi modules. You must have Linux Kernel Headers along with full development tools (i.e. GNU C compiler and utilities) installed in order to be able to install this product. If you have previoulsy installed WANPIPE, this release will overrite/upgrade full release without the need to uninstall first! IMPORTANT: It is always recommended to say YES to all options prompted during the install! Please visit: http://wiki.sangoma.com for more info. Would you like to install WANPIPE now? [y] (y/n) y ---------------------------------------------------------- WANPIPE v3.5.20 Installation Script Copyright (c) 1995-2010, Sangoma Technologies Inc. ---------------------------------------------------------- Fixing file permissions... Verifying files and fixing permissions ...Done Checking for C developement tools ...(gcc) OK Checking for C++ developement tools ...OK Checking for Make utility ...OK Checking for ncurses library ... OK Checking for Perl developement tools ...OK Checking for AWK ...OK Checking for FLEX ...OK Checking for Patch ...OK Checking for libtermcap-devel...OK Checking for bison...OK Checking for libtool...OK ---------------------------------------------------------- WANPIPE v3.5.20 Installation Script Copyright (c) 1995-2010, Sangoma Technologies Inc. ---------------------------------------------------------- Installing WANPIPE Device Drivers: Linux KERNEL To integrate WANPIPE Multi-Protocol Voice & WAN Router modules into the Linux kernel, the kernel has to be updated with latest wanpipe sources. Install will only modify existing wanpipe source that is already in the Kernel. IMPORTANT: It is always recommended to say YES to all options prompted during the install! ---------------------------------------------------------- WANPIPE v3.5.20 Installation Script Copyright (c) 1995-2010, Sangoma Technologies Inc. ---------------------------------------------------------- Please specify absolute path name of your linux headers/source directory Press Enter for Default: /lib/modules/2.6.18-238.el5/build #>Setting linux directory to /lib/modules/2.6.18-238.el5/build Upgrading WANPIPE kernel documentation ...Done. Installing WANPIPE include headers ...Done. WANPIPE device drivers upgraded successfully! ---------------------------------------------------------- WANPIPE v3.5.20 Installation Script Copyright (c) 1995-2010, Sangoma Technologies Inc. ---------------------------------------------------------- WANPIPE KERNEL DRIVER COMPILATION The next step in WANPIPE installation involves compiling WANPIPE kernel modules. This script will compile and install WANPIPE modules into the currently running linux kernel. For greater customization you will be prompted to select which Protocol/Drivers you would like to build into the WANPIPE kernel modules. Wanpipe for Asterisk/Dahdi/Zaptel Default for Asterisk/Dahdi/Zaptel Wanpipe for Wan Routing/API Default for Wan/IP Routing and Data API Wanpipe for Asterisk SMG/SS7 Default for Asterisk SS7 Wanpipe for TDM API Default for FreeSwitch and Voice API Custom Compilation: ------------------ Customise WANPIPE driver compilation to add only the protocols that you need. This way one can reduce the size of the WANPIPE kernel drivers. Refer to http://wiki.sangoma.com for more info ---------------------------------------------------------- WANPIPE v3.5.20 Installation Script Copyright (c) 1995-2010, Sangoma Technologies Inc. ---------------------------------------------------------- Please Select Compilation Mode 1. WAN Protocols Support Protocols: Frame Relay, CHDLC, PPP, ATM, X25, ADSL, TDM API Default for: Wan Routing, Data & Voice API devel. 2. TDM Voice (Dahdi/Zaptel) Support Protocols: TDMV (Dahid/Zaptel), TDM API on AFT adatpers. Default for: Asterisk & CallWeaver 3. TDM Voice (Dahid/Zaptel) + WAN Protocol Support 4. SMG (SS7) (Default for Asterisk SMG/SS7 install) 5. SMG (SS7) + TDM Voice (Dahdi/Zaptel) Default for: Asterisk SS7 + PRI 6. SMG (BRI) (Default for Asterisk SMG/BRI install) 7. SMG (BRI) + TDM Voice (Dahdi/Zaptel) Default for: Asterisk BRI + PRI + Analog 8. SMG (PRI) (Default for Asterisk SMG/PRI install) 9. SMG (PRI) + TDM Voice (Dahdi/Zaptel) Default for: Asterisk SMG/PRI + Analog 10. TDM API Protocols: TDM API on AFT adapters: Default for: FreeSwitch, Yate, Sunrise Custom voice development 11. Custom Compilation Mode Specify protocols to be added into the WANPIPE kernel drivers. Please select (1-11) [Default: 1]: ---------------------------------------------------------- WANPIPE v3.5.20 Installation Script Copyright (c) 1995-2010, Sangoma Technologies Inc. ---------------------------------------------------------- Looking for zaptel/dahdi directory in /usr/src ... ------------------------------------------- 1 : /usr/src/IPBX/dahdi-linux-2.4.1.2 ------------------------------------------ ------------------------------------------ m : Enter zaptel path manually (ctrl-c to Exit) Please select working zaptel directory [1-1][m]: 1 Enabling the TDM Voice Asterisk Support Dahdi HW HDLC Support Detected: Enabling DCHAN Feature Native Dahdi HW HDLC Support Detected - No patch required Dahdi source unmodified Checking for UDEV Zaptel compatibility... Dahdi installed, no need to add UDEV rules Enabling the AFT TE1 Support Checking for SMP support ...Enabled. Checking current processor type ...x86_64 Wan Update Flags: -DAF_WANPIPE_2612_FORCE_UPDATE -DWANPIPE_MOD_266_FORCE_UPDATE -------------------------------------------------- CFLAGS: gcc -Wp,-MD,.wanpipe.o.d -nostdinc -iwithprefix include -D__LINUX__ -Dlinux -D__KERNEL__ -I/usr/include/wanpipe -I/lib/modules/2.6.18-238.el5/build/include -DMODULE -DAF_WANPIPE_2612_FORCE_UPDATE -DWANPIPE_MOD_266_FORCE_UPDATE -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Wstrict-prototypes -Wundef -Werror-implicit-function-declaration -fno-delete-null-pointer-checks -fwrapv -Os -mtune=generic -m64 -mno-red-zone -mcmodel=kernel -pipe -fno-reorder-blocks -Wno-sign-compare -fno-asynchronous-unwind-tables -funit-at-a-time -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fomit-frame-pointer -g -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -------------------------------------------------- Checking for REGPARM kernel option ...Disabled. Compiling General WANPIPE Driver for 2.6.X Kernel .....Done. WAN HWEC module enabled and compiled! Linking Wanpipe Driver and protocols ...Done. Updating Kernel Modules ...Done. Compilation Successful. ---------------------------------------------------------- WANPIPE v3.5.20 Installation Script Copyright (c) 1995-2010, Sangoma Technologies Inc. ---------------------------------------------------------- WANPIPE META CONFIGURATION There are two configuration files associated with WANPIPE. 1) /usr/src/IPBX/wanpipe-3.5.20/wanrouter.rc: - defines locations of important files such as lock and configuration files as well as start/stop order of multiple WANPIPE devices. 2) /usr/src/IPBX/wanpipe-3.5.20/wanpipe1.conf: - main configuration file for each WANPIPE device. - defines interfaces, hardware and protocol information. - this file can be created using the 'wancfg' GUI utility or manually based on sample files located in /etc/wanpipe/samples. Please read the WanpipeInstallation.(pdf/txt) manual for further information. ---------------------------------------------------------- WANPIPE v3.5.20 Installation Script Copyright (c) 1995-2010, Sangoma Technologies Inc. ---------------------------------------------------------- WANPIPE UTILITIES SETUP WANPIPE utilities are used to: 1) create configuration files: for Zaptel and Asterisk /usr/sbin/wancfg_zaptel #Zaptel and Asterisk /usr/sbin/wancfg_dahdi #Dahdi and Asterisk /usr/sbin/wancfg_smg #BRI/SS7, Zaptel and Asterisk /usr/sbin/wancfg_tdmapi #TDM API 2) create WANPIPE WAN/IP configuration files. (/usr/sbin/wancfg) 3) start,stop,restart individual/all devices and interfaces. (/usr/sbin/wanrouter) 4) debug line, protocol and driver problems. (/usr/sbin/wanpipemon) 5) aid in WANPIPE API development (/etc/wanpipe/api) Refer to the WanpipeInstallation.(pdf/txt) for more information. Compiling WANPIPE Utilities ...Done. Compiling WANPIPE WanCfg Utility ...Done. Compiling WANPIPE LibSangoma API library ...Done. Compiling WANPIPE LibStelephony API library ...Done. Compiling WANPIPE API Development Utilities ...Done. Compiling WANPIPE HWEC Utilities ...Done. WANPIPE Environment Setup Complete !!! Installing WANPIPE Files ... ! Installing WANPIPE Utilities in /usr/sbin Installing wanrouter.rc in /etc/wanpipe Installing wanpipe libraries in /etc/wanpipe Installing firmware in /etc/wanpipe/firmware Installing documentation in /usr/share/doc/wanpipe Installing sample api code in /etc/wanpipe/api Installing AFT Firmware update utility in /etc/wanpipe/util Installing driver headers in /etc/wanpipe/api/include/linux Installing Hardware Echo Cancel Utilites ---------------------------------------------------------- WANPIPE v3.5.20 Installation Script Copyright (c) 1995-2010, Sangoma Technologies Inc. ---------------------------------------------------------- WANPIPE INSTALLATON: COMPLETE WANPIPE installation is now complete. WANPIPE kernel drivers and configuration/debug utilities have been compiled and installed. 1) Proceed to configure the WANPIPE drivers: Asterisk/Zaptel : /usr/sbin/wancfg_zaptel Asterisk/Dahdi : /usr/sbin/wancfg_dahdi TDM API : /usr/sbin/wancfg_tdmapi SMG SS7/BRI/PRI : /usr/sbin/wancfg_smg WAN Routing/API : /usr/sbin/wancfg 2) Use the /usr/sbin/wanrouter startup script to start and stop the router. (eg: wanrouter start) 3) To uninstall WANPIPE package run ./Setup remove Please read http://wiki.sangoma.com for further instructions. Wanpipe / Zaptel Configuration ============================== wancfg_zaptel configurator can create all wanpipe config files for ZAPTEL including /etc/zaptel.conf file. Optionally: the configurator can also create Asterisk zapata.conf ----------------------------------------------------- Would you like to configure wanpipe devices for DAHDI? (y/n) n Wanpipe Installation Complete ----------------------------- Please proceed to configure wanpipe user /usr/sbin/wancfg_dahdi
Hasta aquí termina la instalación le dimos la opción de que no configurara de momento los dispositivos esto lo haremos después con otro script del programa instalado aparte de que al final editaremos manualmente nuestro archivo de configuración.
Con el comando wanrouter recién instalado verificamos que nuestra tarjeta sea reconocida efectivamente por wanpipe.
[root@asterisksangoma wanpipe-3.5.20]# wanrouter hwprobe ------------------------------- | Wanpipe Hardware Probe Info | ------------------------------- 1 . AFT-A101-SH : SLOT=0 : BUS=7 : IRQ=7 : CPU=A : PORT=1 : HWEC=32 : V=37 Card Cnt: A101-2=1
Vemos que satisfactoriamente esta reconocida por la aplicación, aquí en este punto especial introduzco el siguiente error que se presento en diversos intentos de instalación con otros kernel o sin la tarjeta E1 en el puerto PCI del equipo en cuestión.
FATAL: Error inserting wanpipe (/lib/modules/2.6.18-238.el5/kernel/drivers/net/wan/wanpipe.ko): Unknown symbol in module, or unknown parameter (see dmesg) Would you like to generate /etc/asterisk/zapata.conf
Iniciamos el script de configuración tomando los pasos de un white paper denominado “Running MFC/R2 with Sangoma Wanpipe® using OpenR2 (libopenr2)“, para generar el archivo de configuración de wanpipe.
[root@asterisksangoma wanpipe-3.5.20]# wancfg_dahdi ######################################################################## # Sangoma Wanpipe # # Dahdi/Zaptel/SMG/TDMAPI/BOOT Configuration Script # # v2.39 # # Sangoma Technologies Inc. # # Copyright(c) 2009. # ######################################################################## Would you like to generate /etc/asterisk/chan_dahdi.conf 1. YES 2. NO [1-2]:1 --------------------------------------------- Configuring T1/E1 cards [A101/A102/A104/A108] --------------------------------------------- A101 detected on slot:0 bus:7 ----------------------------------------------------------- Configuring port 1 on A101 slot:0 bus:7. ----------------------------------------------------------- Select media type for AFT-A101 on port 1 [slot:0 bus:7 span:1] 1. T1 2. E1 3. Unused 4. Exit [1-4]:2 Configuring port 1 on 101 as E1, line coding:HDB3, framing:CRC4 1. YES - Keep these settings 2. NO - Configure line coding and framing [1-2, ENTER='YES']:1 Select clock for AFT-A101 on port 1 [slot:0 bus:7 span:1] 1. NORMAL 2. MASTER [1-2]:1 Select signalling type for AFT-A101 on port 1 [slot:0 bus:7 span:1] 1. Zaptel/Dahdi - PRI CPE 2. Zaptel/Dahdi - PRI NET 3. Zaptel/Dahdi - E & M 4. Zaptel/Dahdi - E & M Wink 5. Zaptel/Dahdi - FXS - Loop Start 6. Zaptel/Dahdi - FXS - Ground Start 7. Zaptel/Dahdi - FXS - Kewl Start 8. Zaptel/Dahdi - FX0 - Loop Start 9. Zaptel/Dahdi - FX0 - Ground Start 10. Zaptel/Dahdi - FX0 - Kewl Start 11. Sangoma SMG/sangoma_prid- PRI CPE 12. Sangoma SMG/sangoma_prid- PRI NET [1-12]:5 Would you like to enable hardware DTMF detection? 1. YES 2. NO [1-2, ENTER='YES']:1 Would you like to enable hardware fax detection? 1. YES 2. NO [1-2, ENTER='NO']:1 Configuring port 1 on AFT-A101 as a full E1 1. YES - Use all channels 2. NO - Configure for fractional [1-2, ENTER='YES']:1 Select dialplan context for AFT-A101 on port 1 1. from-pstn 2. from-internal 3. Custom [1-3]:1 Port 1 on AFT-A101 configuration complete... Press any key to continue: T1/E1 card configuration complete. Press any key to continue: ------------------------------------ Configuring analog cards [A200/A400/B600/B700/B800] ------------------------------------ ------------------------------------ Configuring USB devices [U100] ------------------------------------ ################################################################### # SUMMARY # ################################################################### 1 T1/E1 port(s) detected, 1 configured 0 ISDN BRI port(s) detected, 0 configured 0 analog card(s) detected, 0 configured 0 usb device(s) detected, 0 configured Configurator will create the following files: 1. Wanpipe config files in /etc/wanpipe 2. Dahdi config file /etc/dahdi/system.conf 3. Chan-Dahdi config file /etc/asterisk/chan_dahdi.conf Your original configuration files will be saved to: 1. /etc/dahdi/system.conf.bak 2. /etc/asterisk/chan_dahdi.conf.bak Your configuration has been saved in /etc/wanpipe/debug-2011-05-15.tgz. When requesting support, email this file to techdesk@sangoma.com ################################################################### Configuration Complete! Please select following: 1. YES - Continue 2. NO - Exit [1-2]: Dahdi and Wanpipe configuration complete: choose action 1. Save cfg: Restart Asterisk & Wanpipe now 2. Save cfg: Restart Asterisk & Wanpipe when convenient 3. Save cfg: Stop Asterisk & Wanpipe now 4. Save cfg: Stop Asterisk & Wanpipe when convenient 5. Save cfg: Save cfg only (Not Recommanded!!!) 6. Do not save cfg: Exit [1-6]:5 Removing old configuration files... Copying new Wanpipe configuration files... Copying new Dahdi configuration file (/etc/dahdi/system.conf)... cp: cannot create regular file `/etc/dahdi/system.conf': No such file or directory Error executing command: cp -f /etc/wanpipe/wancfg_zaptel/tmp_cfg/zaptel.conf /etc/dahdi/system.conf Would you like to continue? 1. No - exit 2. YES [1-2, ENTER='No']:2 Copying new Chan-Dahdi configuration files (/etc/asterisk/chan_dahdi.conf)... cp: cannot create regular file `/etc/asterisk/chan_dahdi.conf': No such file or directory Error executing command: cp -f /etc/wanpipe/wancfg_zaptel/tmp_cfg/zapata.conf /etc/asterisk/chan_dahdi.conf Would you like to continue? 1. No - exit 2. YES [1-2, ENTER='No']:2 Saving files only Current boot level is 3 Wanrouter boot scripts configuration... Removing existing wanrouter boot scripts...OK Would you like wanrouter to start on system boot? 1. YES 2. NO [1-2]:1 Verifying Dahdi boot scripts... Verifying Dahdi boot scripts...Not installed Verifying Dahdi shutdown scripts...Not installed Enabling wanrouter boot scripts ...(level:8) Enabling wanrouter shutdown scripts ...(level:91) Remvoing old smg_ctrl boot.....OK Remvoing old smg_ctrl_safe boot.....OK
Posteriormente realizaremos unos cambios en el archivo de configuración, vamos a verificar que wanrouter nos muestre el dispositivo.
[root@asterisksangoma wanpipe-3.5.20]# wanrouter start Starting up device: wanpipe1 --> Loading ec image OCT6116-64S.ima... Configuring interfaces: w1g1 done. [root@asterisksangoma wanpipe-3.5.20]# wanrouter list Devices currently active: wanpipe1 [root@asterisksangoma wanpipe-3.5.20]# wanrouter status Devices currently active: wanpipe1 Wanpipe Config: Device name | Protocol Map | Adapter | IRQ | Slot/IO | If's | CLK | Baud rate | wanpipe1 | N/A | A101/1D/A102/2D/4/4D/8| 169 | 0 | 1 | N/A | 0 | Wanrouter Status: Device name | Protocol | Station | Status | wanpipe1 | AFT TE1 | N/A | Disconnected |
Instalamos las herramientas de DAHDI para usar dahdi_tool.
[root@asterisksangoma wanpipe-3.5.20]# cd .. [root@asterisksangoma IPBX]# tar xfz dahdi-tools-2.4.1.tar.gz [root@asterisksangoma IPBX]# cd dahdi-tools-2.4.1 [root@asterisksangoma dahdi-tools-2.4.1]# ./configure [root@asterisksangoma dahdi-tools-2.4.1]# make [root@asterisksangoma dahdi-tools-2.4.1]# make install [root@asterisksangoma dahdi-tools-2.4.1]# make config [root@asterisksangoma dahdi-tools-2.4.1]# cd ..
Compilamos e instalamos OpenR2 según las indicaciones del manual colocado en la pagina del autor.
[root@asterisksangoma IPBX]# tar xvfz openr2-1.3.1.tar.gz [root@asterisksangoma IPBX]# cd openr2-1.3.1 [root@asterisksangoma openr2-1.3.1]# ./configure --prefix=/usr [root@asterisksangoma openr2-1.3.1]# make [root@asterisksangoma openr2-1.3.1]# make install
Por ultimo compilamos e instalamos Asterisk.
[root@asterisksangoma IPBX]# tar xfz asterisk-1.8.4.tar.gz [root@asterisksangoma IPBX]# cd asterisk-1.8.4 [root@asterisksangoma IPBX]# ./configure [root@asterisksangoma IPBX]# make [root@asterisksangoma IPBX]# make install [root@asterisksangoma IPBX]# make samples
Verificamos que el soporte de OpenR2 este correctamente instalado en Asterisk.
[root@asterisksangoma asterisk-1.8.4]# ldd channels/chan_dahdi.so | grep openr2 libopenr2.so.3 => /usr/lib64/libopenr2.so.3 (0x00002ab1f4dbe000)
Configuraremos DAHDI con los siguientes parámetros específicos para el E1 de TELMEX, son treinta canales posibles de comunicación con el canal 16 para señalización.
[root@asterisksangoma IPBX]# vi /etc/dahdi/system.conf span=1,1,0,cas,hdb3 cas=1-15:1101 dchan=16 cas=17-31:1101 loadzone=us defaultzone=us
Cargamos la configuración.
[root@asterisksangoma IPBX]# dahdi_cfg -vv DAHDI Tools Version - 2.4.1 DAHDI Version: 2.4.1.2 Echo Canceller(s): Configuration ====================== SPAN 1: CAS/HDB3 Build-out: 0 db (CSU)/0-133 feet (DSX-1) Channel map: Channel 01: CAS / User (Default) (Echo Canceler: none) (Slaves: 01) Channel 02: CAS / User (Default) (Echo Canceler: none) (Slaves: 02) Channel 03: CAS / User (Default) (Echo Canceler: none) (Slaves: 03) Channel 04: CAS / User (Default) (Echo Canceler: none) (Slaves: 04) Channel 05: CAS / User (Default) (Echo Canceler: none) (Slaves: 05) Channel 06: CAS / User (Default) (Echo Canceler: none) (Slaves: 06) Channel 07: CAS / User (Default) (Echo Canceler: none) (Slaves: 07) Channel 08: CAS / User (Default) (Echo Canceler: none) (Slaves: 08) Channel 09: CAS / User (Default) (Echo Canceler: none) (Slaves: 09) Channel 10: CAS / User (Default) (Echo Canceler: none) (Slaves: 10) Channel 11: CAS / User (Default) (Echo Canceler: none) (Slaves: 11) Channel 12: CAS / User (Default) (Echo Canceler: none) (Slaves: 12) Channel 13: CAS / User (Default) (Echo Canceler: none) (Slaves: 13) Channel 14: CAS / User (Default) (Echo Canceler: none) (Slaves: 14) Channel 15: CAS / User (Default) (Echo Canceler: none) (Slaves: 15) Channel 16: D-channel (Default) (Echo Canceler: none) (Slaves: 16) Channel 17: CAS / User (Default) (Echo Canceler: none) (Slaves: 17) Channel 18: CAS / User (Default) (Echo Canceler: none) (Slaves: 18) Channel 19: CAS / User (Default) (Echo Canceler: none) (Slaves: 19) Channel 20: CAS / User (Default) (Echo Canceler: none) (Slaves: 20) Channel 21: CAS / User (Default) (Echo Canceler: none) (Slaves: 21) Channel 22: CAS / User (Default) (Echo Canceler: none) (Slaves: 22) Channel 23: CAS / User (Default) (Echo Canceler: none) (Slaves: 23) Channel 24: CAS / User (Default) (Echo Canceler: none) (Slaves: 24) Channel 25: CAS / User (Default) (Echo Canceler: none) (Slaves: 25) Channel 26: CAS / User (Default) (Echo Canceler: none) (Slaves: 26) Channel 27: CAS / User (Default) (Echo Canceler: none) (Slaves: 27) Channel 28: CAS / User (Default) (Echo Canceler: none) (Slaves: 28) Channel 29: CAS / User (Default) (Echo Canceler: none) (Slaves: 29) Channel 30: CAS / User (Default) (Echo Canceler: none) (Slaves: 30) Channel 31: CAS / User (Default) (Echo Canceler: none) (Slaves: 31) 31 channels to configure. Setting echocan for channel 1 to none Setting echocan for channel 2 to none Setting echocan for channel 3 to none Setting echocan for channel 4 to none Setting echocan for channel 5 to none Setting echocan for channel 6 to none Setting echocan for channel 7 to none Setting echocan for channel 8 to none Setting echocan for channel 9 to none Setting echocan for channel 10 to none Setting echocan for channel 11 to none Setting echocan for channel 12 to none Setting echocan for channel 13 to none Setting echocan for channel 14 to none Setting echocan for channel 15 to none Setting echocan for channel 16 to none Setting echocan for channel 17 to none Setting echocan for channel 18 to none Setting echocan for channel 19 to none Setting echocan for channel 20 to none Setting echocan for channel 21 to none Setting echocan for channel 22 to none Setting echocan for channel 23 to none Setting echocan for channel 24 to none Setting echocan for channel 25 to none Setting echocan for channel 26 to none Setting echocan for channel 27 to none Setting echocan for channel 28 to none Setting echocan for channel 29 to none Setting echocan for channel 30 to none Setting echocan for channel 31 to none
Configuramos los parámetros con respecto a MFCR2, los DNIS, el contexto y los canales a utilizar, en este caso de los canales uno al veintiuno (el 16 se usa señalización) debido a que mi E1 tiene veinte lineas disponibles.
[root@asterisksangoma ~]# cat /etc/asterisk/chan_dahdi.conf [channels] signalling=mfcr2 mfcr2_variant=mx mfcr2_get_ani_first=no mfcr2_max_ani=10 mfcr2_max_dnis=4 mfcr2_category=national_subscriber mfcr2_mfback_timeout=-1 mfcr2_metering_pulse_timeout=-1 ; this is for debugging purposes mfcr2_logdir=log mfcr2_logging=all ; end debugging configuration context=from-pstn group=1 restrictcid=yes hidecallerid=yes channel => 1-15 channel => 17-21
Con esto ya tenemos configurada la parte de Asterisk y DAHDI para solo recibir la señal del E1, vamos a terminar de configurar Wanpipe. Conectar el E1 no basta para que nuestra tarjeta inmediatamente empiece a trabajar, en dado caso wanpipemon nos ayudara a identificar las posibles alarmas existente para lograr poner en verde el led indicador del estado de nuestra tarjeta.
Aquí cito una pagina de la wiki de sangoma donde nos muestran la descripción de cada una de estas alarmas. Aquí wanpipemon muestra las alarmas cuando no tenemos conexión alguna en la tarjeta, nota la alarma de open circuit, loss of framing y loss of frame signal.
[root@asterisksangoma IPBX]# wanpipemon -i w1g1 -c Ta ***** w1g1: E1 Rx Alarms (Framer) ***** ALOS: OFF | LOS: ON RED: ON | AIS: OFF LOF: ON | RAI: OFF ***** w1g1: E1 Rx Alarms (LIU) ***** Short Circuit: OFF Open Circuit: ON Loss of Signal: ON ***** w1g1: E1 Tx Alarms ***** AIS: OFF | YEL: ON ***** w1g1: E1 Performance Monitoring Counters ***** Line Code Violation : 0 Far End Block Errors : 0 CRC4 Errors : 0 FAS Errors : 0 Rx Level : < -44db
Aquí un ejemplo de la tarjeta conectada con un loop en los coaxiales, esto con el fin de comparar ciertas alarmas que van desde una mala señal enviada por el otro lado de nuestro enlace así como cables invertidos en la conexión, la alarma es la de loss of framing.
[root@asterisksangoma IPBX]# wanpipemon -i w1g1 -c Ta ***** w1g1: E1 Rx Alarms (Framer) ***** ALOS: OFF | LOS: OFF RED: ON | AIS: OFF LOF: ON | RAI: OFF ***** w1g1: E1 Rx Alarms (LIU) ***** Short Circuit: OFF Open Circuit: OFF Loss of Signal: OFF ***** w1g1: E1 Tx Alarms ***** AIS: OFF | YEL: ON ***** w1g1: E1 Performance Monitoring Counters ***** Line Code Violation : 725 Far End Block Errors : 0 CRC4 Errors : 0 FAS Errors : 0 Rx Level : > -2.5db
En los logs del sistema se pueden presentar mensajes similares a los siguientes haciendo referencia al reloj, en mi caso fue por que el Rx y Tx de los coaxiales estaban invertidos en el balun, sin embargo en la FAQ de Sangoma hay mas causas posibles, también nota que aparecen otras alarmas diferentes en especial la de short circuit que nos indica que los cables están cruzados, y la de remote alarm indication.
[root@asterisksangoma ~]# wanpipemon -i w1g1 -c Ta ***** w1g1: E1 Rx Alarms (Framer) ***** ALOS: OFF | LOS: OFF RED: ON | AIS: OFF LOF: ON | RAI: ON ***** w1g1: E1 Rx Alarms (LIU) ***** Short Circuit: ON Open Circuit: OFF Loss of Signal: OFF ***** w1g1: E1 Tx Alarms ***** AIS: OFF | YEL: ON ***** w1g1: E1 Performance Monitoring Counters ***** Line Code Violation : 826634 Far End Block Errors : 0 CRC4 Errors : 0 FAS Errors : 2166 Rx Level : -40db to -44db
[root@asterisksangoma ~]# tail -f /var/log/messages May 19 20:48:53 asterisksangoma kernel: wanec1: The H100 slave has lost its framing on the bus! May 19 20:48:53 asterisksangoma kernel: wanec1: The CT_C8_A clock behavior does not conform to the H.100 spec! May 19 20:48:53 asterisksangoma kernel: wanec1: The H100 slave has lost its framing on the bus! May 19 20:48:53 asterisksangoma kernel: wanec1: The CT_C8_A clock behavior does not conform to the H.100 spec! May 19 20:48:53 asterisksangoma kernel: wanec1: The H100 slave has lost its framing on the bus! May 19 20:48:53 asterisksangoma kernel: wanec1: The CT_C8_A clock behavior does not conform to the H.100 spec! May 19 20:48:53 asterisksangoma kernel: wanec1: The H100 slave has lost its framing on the bus! May 19 20:48:53 asterisksangoma kernel: wanec1: The CT_C8_A clock behavior does not conform to the H.100 spec! May 19 20:48:53 asterisksangoma kernel: wanec1: The H100 slave has lost its framing on the bus! May 19 20:48:53 asterisksangoma kernel: wanec1: The CT_C8_A clock behavior does not conform to the H.100 spec! May 19 20:48:53 asterisksangoma kernel: wanec1: The H100 slave has lost its framing on the bus! May 19 20:48:53 asterisksangoma kernel: wanec1: The CT_C8_A clock behavior does not conform to the H.100 spec! May 19 20:48:53 asterisksangoma kernel: wanec1: The H100 slave has lost its framing on the bus! May 19 20:48:54 asterisksangoma kernel: wanec1: The CT_C8_A clock behavior does not conform to the H.100 spec! May 19 20:48:54 asterisksangoma kernel: wanec1: The H100 slave has lost its framing on the bus! May 19 20:48:54 asterisksangoma kernel: wanec1: The CT_C8_A clock behavior does not conform to the H.100 spec! May 19 20:48:54 asterisksangoma kernel: wanec1: The H100 slave has lost its framing on the bus!
En los casos anteriores el comando dahdi_tool nos mostrara la alarma en la tarjeta y mientras exista Asterisk no podra usarla.
La alarma RED se quitara hasta que logremos configurar adecuadamente la tarjeta y nos deje de mostrar las demás alarmas, anteriormente configuramos con el script, necesitamos cambiar en el archivo wanpipe1.conf dentro del directorio /etc/wanpipe, el tipo de framing a NCRC4 en vez de CRC4 y confirmar la configuración del reloj se encuentre en modo normal.
FE_FRAME = NCRC4 TE_CLOCK = NORMAL
Conectamos el E1 a la tarjeta y comprobamos las alarmas en ella.
[root@asterisksangoma ~]# wanpipemon -i w1g1 -c Ta ***** w1g1: E1 Rx Alarms (Framer) ***** ALOS: OFF | LOS: OFF RED: OFF | AIS: OFF LOF: OFF | RAI: OFF ***** w1g1: E1 Rx Alarms (LIU) ***** Short Circuit: OFF Open Circuit: OFF Loss of Signal: OFF ***** w1g1: E1 Tx Alarms ***** AIS: OFF | YEL: OFF ***** w1g1: E1 Performance Monitoring Counters ***** Line Code Violation : 2620 Far End Block Errors : 0 CRC4 Errors : 0 FAS Errors : 1507 Rx Level : > -2.5db
Satisfactoriamente no hay ninguna alarma, nuestra tarjeta se pone en verde y esta lista para recibir llamadas, confirmamos con dahdi_tool.
Entramos a la consola de Asterisk y verificamos que los canales estén listos.
asterisksangoma*CLI> mfcr2 show channels Chan Variant Max ANI Max DNIS ANI First Immediate Accept Tx CAS Rx CAS 1 MX 10 4 No No IDLE IDLE 2 MX 10 4 No No IDLE IDLE 3 MX 10 4 No No IDLE IDLE 4 MX 10 4 No No IDLE IDLE 5 MX 10 4 No No IDLE IDLE 6 MX 10 4 No No IDLE IDLE 7 MX 10 4 No No IDLE IDLE 8 MX 10 4 No No IDLE IDLE 9 MX 10 4 No No IDLE IDLE 10 MX 10 4 No No IDLE IDLE 11 MX 10 4 No No IDLE IDLE 12 MX 10 4 No No IDLE IDLE 13 MX 10 4 No No IDLE IDLE 14 MX 10 4 No No IDLE IDLE 15 MX 10 4 No No IDLE IDLE 17 MX 10 4 No No IDLE IDLE 18 MX 10 4 No No IDLE IDLE 19 MX 10 4 No No IDLE IDLE 20 MX 10 4 No No IDLE IDLE 21 MX 10 4 No No IDLE IDLE asterisksangoma*CLI>
DAHDI también se muestra configurado adecuadamente.
asterisksangoma*CLI> dahdi show channels Chan Extension Context Language MOH Interpret Blocked State pseudo default default In Service 1 from-pstn default In Service 2 from-pstn default In Service 3 from-pstn default In Service 4 from-pstn default In Service 5 from-pstn default In Service 6 from-pstn default In Service 7 from-pstn default In Service 8 from-pstn default In Service 9 from-pstn default In Service 10 from-pstn default In Service 11 from-pstn default In Service 12 from-pstn default In Service 13 from-pstn default In Service 14 from-pstn default In Service 15 from-pstn default In Service 17 from-pstn default In Service 18 from-pstn default In Service 19 from-pstn default In Service 20 from-pstn default In Service 21 from-pstn default In Service asterisksangoma*CLI>
Si tenemos la tarjeta con alarma los canales se nos mostraran de la siguiente manera:
asterisksangoma*CLI> dahdi show channels Chan Extension Context Language MOH Interpret Blocked State pseudo default default In Service 1 from-pstn default R In Service 2 from-pstn default R In Service 3 from-pstn default R In Service 4 from-pstn default R In Service 5 from-pstn default R In Service 6 from-pstn default R In Service 7 from-pstn default R In Service 8 from-pstn default R In Service 9 from-pstn default R In Service 10 from-pstn default R In Service 11 from-pstn default R In Service 12 from-pstn default R In Service 13 from-pstn default R In Service 14 from-pstn default R In Service 15 from-pstn default R In Service 17 from-pstn default R In Service 18 from-pstn default R In Service 19 from-pstn default R In Service 20 from-pstn default R In Service 21 from-pstn default R In Service asterisksangoma*CLI> mfcr2 show channels Chan Variant Max ANI Max DNIS ANI First Immediate Accept Tx CAS Rx CAS 1 MX 10 4 No No IDLE BLOCK 2 MX 10 4 No No IDLE BLOCK 3 MX 10 4 No No IDLE BLOCK 4 MX 10 4 No No IDLE BLOCK 5 MX 10 4 No No IDLE BLOCK 6 MX 10 4 No No IDLE BLOCK 7 MX 10 4 No No IDLE BLOCK 8 MX 10 4 No No IDLE BLOCK 9 MX 10 4 No No IDLE BLOCK 10 MX 10 4 No No IDLE BLOCK 11 MX 10 4 No No IDLE BLOCK 12 MX 10 4 No No IDLE BLOCK 13 MX 10 4 No No IDLE BLOCK 14 MX 10 4 No No IDLE BLOCK 15 MX 10 4 No No IDLE BLOCK 17 MX 10 4 No No IDLE BLOCK 18 MX 10 4 No No IDLE BLOCK 19 MX 10 4 No No IDLE BLOCK 20 MX 10 4 No No IDLE BLOCK 21 MX 10 4 No No IDLE BLOCK asterisksangoma*CLI>
Configuramos rápidamente un extensión SIP 1000 con el contexto from-pstn para que pueda recibir las llamadas, marcamos y vemos como la llamada entra con el primer DNI y se dirige a la extensión 1000.
asterisksangoma*CLI> New MFC/R2 call detected on chan 11. MFC/R2 call offered on chan 11. ANI = , DNIS = 5900, Category = National Priority Subscriber MFC/R2 call has been accepted on backward channel 11 -- Executing [5900@from-pstn:1] Dial("DAHDI/11-1", "SIP/1000") in new stack == Using SIP RTP CoS mark 5 -- Called 1000 -- SIP/1000-00000001 is ringing -- SIP/1000-00000001 answered DAHDI/11-1 == Spawn extension (from-pstn, 5900, 1) exited non-zero on 'DAHDI/11-1' -- Hungup 'DAHDI/11-1' MFC/R2 call end on channel 11
Sobre esa misma extensión realizamos una llamada de salida.
asterisksangoma*CLI> == Using SIP RTP CoS mark 5 -- Executing [46028079@pruebas:1] Dial("SIP/1000-00000007", "DAHDI/g1/46028079") in new stack -- Called g1/46028079 MFC/R2 call has been accepted on forward channel 1 -- DAHDI/1-1 is ringing -- DAHDI/1-1 is making progress passing it to SIP/1000-00000007 MFC/R2 call has been answered on channel 1 -- DAHDI/1-1 answered SIP/1000-00000007 Chan 1 - Far end disconnected. Reason: Normal Clearing MFC/R2 call disconnected on channel 1 -- Hungup 'DAHDI/1-1' == Spawn extension (pruebas, 46028079, 1) exited non-zero on 'SIP/1000-00000007'
El teléfono es un MITEL 5312, diseñados específicamente para el protocolo MINET sin embargo tiene soporte para SIP, solo es cuestión de que inicie con el protocolo, y lo podremos registrar con cualquier proxy SIP mediante su pagina web de configuración.
Utilizamos dos tipos de conectores de coaxial a RJ45 que se muestran a continuación:
Este conector lo utiliza el conmutador MITEL de donde tome el E1.
Y aquí el conector de la marca AC and E, 408809069 K162.
De momento es todo configuraciones mas especificas quedan fuera de esta guía, quedan puntos pendientes como instalar una tarjeta Digium junto con la Sangoma, la instalación de Wanpipe en Debian que esperamos abordar en otro momento. Saludos dejo las paginas de donde se tomo la información.
Referencias:
http://code.google.com/p/openr2/downloads/list
http://wiki.sangoma.com/wanpipemon-T1-E1-line-alarms-0
http://www.fonality.com/trixbox/forums/vendor-forums-certified/sangoma/sangoma-a101d-alarm-redon-lofon
http://wiki.sangoma.com/konrads-cheat-sheet
http://wiki.sangoma.com/mfcr2
http://wiki.sangoma.com/wanpipe-linux-asterisk-debugging#pri_span_debugging
http://wiki.sangoma.com/wanpipe-linux-asterisk-appendix
http://libopenr2.org
http://code.google.com/p/openr2/downloads/list
http://edocs.mitel.com/UG/EN/5312-5324_SIP7.2_UG_GA.pdf
http://sangoma.com/assets/docs/misc/MFCR2_and_Sangoma_English.pdf
Me llego una pagina de servicios en la nube, el famoso cloud computing, probando las posibilidades que ofrece instale un par de servidores linux para verificar unas ideas que traigo, y en eso se me ocurrió verificar el ancho de banda que ofrecen estos servicios y hacer una observación gráfica de diferentes codecs de audio existentes en Asterisk y en un teléfono IP Aastra que cayo en mis manos.
Después de la instalación de Debian GNU/Linux y Asterisk, creamos un sencillo dialplan con el fin de crear un contador usando los dígitos existentes en el paquete de sonidos.
[default] exten => 200,1,Goto(test,s,1) [test] exten => s,1,Answer() exten => s,n,Set(COUNT=${DB(test/count)}) exten => s,n,GotoIf($[${ISNULL(${COUNT})}]?:continue) exten => s,n,Set(DB(test/count)=1) exten => s,n,Goto(1) exten => s,n(continue),NoOp() exten => s,n,SayNumber(${COUNT}) exten => s,n,Set(COUNT=$[${COUNT} + 1]) exten => s,n,Set(DB(test/count)=${COUNT}) exten => s,n,Goto(1)
Aquí vemos la ejecución donde apreciamos que el contador ya se encuentra en el número 1760, para este caso la ejecución es en GSM sin embargo cada llamada fue realizada con el codec correspondiente y para evitar conversión de un codec a otro (transcoding) se instalaron los paquetes de sonidos de cada uno de ellos.
agua*CLI> == Using SIP RTP CoS mark 5 -- Executing [200@default:1] Goto("SIP/1000-00000013", "test,s,1") in new stack -- Goto (test,s,1) -- Executing [s@test:1] Answer("SIP/1000-00000013", "") in new stack -- Executing [s@test:2] Set("SIP/1000-00000013", "COUNT=1759") in new stack -- Executing [s@test:3] GotoIf("SIP/1000-00000013", "0?:continue") in new stack -- Goto (test,s,6) -- Executing [s@test:6] NoOp("SIP/1000-00000013", "") in new stack -- Executing [s@test:7] SayNumber("SIP/1000-00000013", "1759") in new stack -- Playing 'digits/1.gsm' (language 'en') -- Playing 'digits/thousand.gsm' (language 'en') -- Playing 'digits/7.gsm' (language 'en') -- Playing 'digits/hundred.gsm' (language 'en') -- Playing 'digits/50.gsm' (language 'en') -- Playing 'digits/9.gsm' (language 'en') -- Executing [s@test:8] Set("SIP/1000-00000013", "COUNT=1760") in new stack -- Executing [s@test:9] Set("SIP/1000-00000013", "DB(test/count)=1760") in new stack -- Executing [s@test:10] Goto("SIP/1000-00000013", "1") in new stack -- Goto (test,s,1) -- Executing [s@test:1] Answer("SIP/1000-00000013", "") in new stack -- Executing [s@test:2] Set("SIP/1000-00000013", "COUNT=1760") in new stack -- Executing [s@test:3] GotoIf("SIP/1000-00000013", "0?:continue") in new stack -- Goto (test,s,6) -- Executing [s@test:6] NoOp("SIP/1000-00000013", "") in new stack -- Executing [s@test:7] SayNumber("SIP/1000-00000013", "1760") in new stack -- Playing 'digits/1.gsm' (language 'en') -- Playing 'digits/thousand.gsm' (language 'en') -- Playing 'digits/7.gsm' (language 'en') -- Playing 'digits/hundred.gsm' (language 'en') -- Playing 'digits/60.gsm' (language 'en')
Cada imagen se obtuvo mediante el programa iftop (aptitude install iftop), para darnos una idea general del uso de ancho de banda de cada codec en un flujo constante de datos, las imágenes muestran una conexión mediante IAX2 y el ejemplo del dialplan esta en SIP sin embargo es igual para ambos caso de un modo general.
El ejemplo del contador fue tomado del libro Asterisk: The Future of Telephony.
Vamos a crear una máquina virtual con Red Hat, instalaremos como prueba una versión de AsteriskNow, subiremos la imagen ISO a nuestro servidor NFS para que sea visible desde nuestros Hypervisors, posteriormente desde nuestro manager realizaremos el procedimiento de asignación de recursos como son cuanta memoria RAM le asignaremos, cantidad de CPU, interfaces de red, espacio en disco y en que Hypervisor iniciara de manera predeterminada.
Hay dos formas de subir la imagen ISO a nuestro almacén NFS, una es mediante la herramienta ISO Uploader y la otra es colocar directamente la imagen en el servidor y posteriormente otorgarle los permisos necesarios para su ejecución.
Una vez que tenemos la imagen, ingresamos a la consola del manager para crear la máquina virtual.
Escogemos el protocolo Spice para manipular la máquina virtual, posteriormente se le activara como en todos los Linux el acceso por SSH para tener una conexión de manera remota.
Después de introducir los datos principales nos solicitara configurar interfaces de red y discos duros virtuales.
Especificamos el nombre de la interfaz, la red a la que se asignara y el tipo de controlador a usar en el dispositivo.
Especificamos el tamaño del disco duro, el storage en donde residirá este disco, el tipo de disco (sistema o datos), que tipo de disco duro sera así como el formato por ultimo especificamos si el sistema operativo iniciara desde este disco.
Realizado esto nos pregunta si requerimos agregar algún componente adicional.
El orden de arranque se coloca aquí, normalmente el primer dispositivo tiene que ser el disco duro, seguido de una unidad de CD con disco (imagen ISO) para poder iniciar la instalación de la imagen previamente colocada en nuestro almacén NFS.
Damos inicio a la carga de nuestra máquina virtual.
Cargando los componentes.
La instalación es igual a que si estuviéramos realizando la instalación en un equipo físico, el sistema operativo reconocera el disco duro asignado así como la interfaz de red.
Realizando las particiones del disco duro, en este caso dejamos las opciones por defecto.
Ajuste del huso horario.
Instalación del sistema con todos sus paquetes.
Finalización de la instalación y el obligatorio reinicio del sistema, en esta parte debemos extraer el CD de la máquina virtual mediante el menú contextual.
Sistema en linea.
Pagina de administración de AsteriskNow visible en la red local.
Hace pocos meses llego una SAN EqualLogic PS6000XV con 16 discos de 300 GB cada uno, el cual tiene como función principal interactuar con sistemas de virtualización como Red Hat Enterprise Virtualization y Citrix XenServer.
Estos equipos son increíbles dejando un lado el echo de que son muy complejos la interfaz para administrarlos es muy sencilla una vez que entiendes los conceptos de volúmenes, arreglos y la tecnología de iSCSI de manera general.
Aquí se muestra la SAN montada en el rack debajo de un servidor PowerEdge R610.
En su parte posterior se observan las controladoras del equipo con un total de ocho tarjetas de red, aunque realmente solo una es la controladora activa y la otra espera en caso de cualquier percance con la primera, cada controladora tiene conectados un par de sus cables de red (cat6) a un switch diferente considerando el factor de disponibilidad, también se aprecian las fuentes de poder conectadas cada una de ellas en circuitos independientes en caso de falla de corriente eléctrica en alguno de ellos.
La parte de la conectividad se compone de una par de switch PowerConnect 5424 que están dedicados al trafico iSCSI, como mencionamos anteriormente en la imagen anterior la mitad de las conexiones de la SAN se encuentran en un switch y la otra mitad en el otro, hacemos lo mismo para los servidores que accederán a los volúmenes creados posteriormente en la SAN mediante un bond de tarjetas de red, una interfaz se conecta a un switch y la otra de igual manera de esta manera aunque falle uno de los switch tendremos acceso a los recursos de la SAN.
Los cables azules conectan ambos switch (imaginemos el cascadeo tradicional entre estos dispositivos) en cada equipo se reservan cuatro puertos para realizar esta conexión. A cada puerto elegido se le modifican ciertos parámetros que los hacen diferentes a los otros principalmente la opción de Jumbo Frame y de que su función es solamente comunicarse con los puertos del otro switch.
Una visión general de la SAN en conjunto de los servidores que tienen la función de hypervisor con Xen y KVM.
La pantalla de administración de la SAN muestra una gráfica con la capacidad del grupo que se compone de: espacio libre, utilizado y el reservado para snapshots, así como una relación de los volúmenes existentes.
Trataremos de seguir escribiendo algo acerca de este equipo y otras experiencias con la virtualización.
Como sabemos el soporte de Adobe para flash en Linux 64 bits esta mas que muerto: http://labs.adobe.com/technologies/flashplayer10/64bit.html
Hoy en día una pagina que no requiera el plugin de flash para desplegar su contenido es algo difícil de ver cotidianamente.
Gnash es un muy buen proyecto que si bien logra reproducir mucho del contenido flash de cualquier pagina web, la pagina mas famosa que requiere este plugin estaba negada para el.
Sin embargo parece ser que los chicos de Arch Linux, se han puesto las pilas y nos han regalado una actualización con la cual ya es posible visualizar desde youtube cualquier vídeo, para muestra la siguiente imagen.
http://www.gnu.org/software/gnash/
http://www.archlinux.org/
Aprovechando que seguimos en pruebas con RHEV, pasaremos a checar un punto especifico de esta solución que son los escritorios virtuales, segun nos quieren vender la idea de que con solo una PC ligerita en cuanto a recursos y un navegador web podemos tener acceso a ‘n’ escritorios remotos usando el protocolo Spice que a simple vista tiene cosas bastante interesentas en cuanto a desempeño, facilidad de uso al interactuar con el escritorio virtual y poco costo con respecto al uso de ancho de banda.
Si bien esta aplicación no tiene ningún problema para instalarse en IE mediante un ActiveX, la cosa cambia con respecto a Firefox en Linux.
Aquí existen dos caminos si contamos con una suscripción de RedHat obviamente tenemos acceso a actualizar nuestro sistema y todo el contenido que sigue a continuación en teoria (no cuento con una suscripción) se reduciría al siguiente comando: yum install spice-xpi
En CentOS existe el paquete sin embargo los paquetes de los cuales depende no, al menos no los encuentras en los repositorios predeterminados, pero con un tiempo de busqueda enrpm.pbone.net es facil hallarlos a todos.
El paquete en cuestión se llama spice-xpi, el cual depende de qspice-client y este a su vez depende de unos paquetes mas, como podemos ver en las dependencias faltantes que se muestran a continuación al tratar de instalar estos paquetes.
[root@localhost gabriel]# rpm -ivh spice-xpi-2.2-1.el5_5.i386.rpm warning: spice-xpi-2.2-1.el5_5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 error: Failed dependencies: liblog4cpp.so.4 is needed by spice-xpi-2.2-1.el5_5.i386 log4cpp is needed by spice-xpi-2.2-1.el5_5.i386 qspice-client is needed by spice-xpi-2.2-1.el5_5.i386
[root@localhost gabriel]# rpm -ivh qspice-client-0.3.0-2.el5_5.i386.rpm warning: qspice-client-0.3.0-2.el5_5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 error: Failed dependencies: libboost_program_options.so.2 is needed by qspice-client-0.3.0-2.el5_5.i386 libboost_thread.so.2 is needed by qspice-client-0.3.0-2.el5_5.i386 libcelt051.so.0 is needed by qspice-client-0.3.0-2.el5_5.i386 liblog4cpp.so.4 is needed by qspice-client-0.3.0-2.el5_5.i386 libqavcodec.so.51 is needed by qspice-client-0.3.0-2.el5_5.i386 libqavutil.so.49 is needed by qspice-client-0.3.0-2.el5_5.i386 libqcairo.so.2 is needed by qspice-client-0.3.0-2.el5_5.i386
Por lo tanto los paquetes necesarios son los siguientes:
boost-1.33.1-10.el5.i386.rpm celt051-0.5.1.3-0.el5.i386.rpm log4cpp-1.0-9.el5.i386.rpm qcairo-1.8.7.1-3.el5.i386.rpm qpixman-0.13.3-4.el5.i386.rpm qspice-client-0.3.0-2.el5_5.i386.rpm spice-xpi-2.2-1.el5_5.i386.rpm
Después de instalarlos volvemos a ejecutar nuestro paquete para agregar el plugin a Firefox.
[root@localhost gabriel]# rpm -ivh spice-xpi-2.2-1.el5_5.i386.rpm warning: spice-xpi-2.2-1.el5_5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:spice-xpi ########################################### [100%]
Verificamos que el plugin se haya instalado correctamente en Firefox.
Debemos desactivar SELinux o ponerlo en modo permisivo de lo contrario no dejara ejecutar Spice, obteniendo en mensaje como este:
Jul 19 16:47:40 localhost setroubleshoot: SELinux is preventing spicec from loading /usr/lib/libqavcodec.so.51.71.0 which requires text relocation. For complete SELinux messages. run sealert -l 1b920bdf-119e-46fb-b812-894ca58fc943
Volvemos a ejecutar nuestra aplicación para acceder con nuestro respectivo usuario.
De esta manera ya podremos visualizar y trabajar con nuestro escritorio virtual que en este caso es un Windows XP.
Esto funciona para distribuciones Linux basadas en RPMS (Red Hat 5.5, Fedora 12, CentOS 5.4), es asignatura pendiente instalar este plugin de Firefox para Debian o Arch, que son las distribuciones que actualmente uso de manera predeterminada.
Mas información:
http://www.redhat.com/about/news/prarchive/2009/spice-os.html
http://www.spice-space.org/
http://www.redhat.com/virtualization/rhev/desktop/
Los virus, gusanos y demás son un problema nefasto una vez que caemos en las garras de uno, es común encontrar tantas fallas como soluciones existentes para estos enemigos informáticos enfocados hacia el sistema operativo mas popular del mundo: Windows.
A pesar de que Windows es un sistema con muchas fallas y virtudes, debemos reconocer que la gran mayoría de las veces el que un equipo se vea afectado por problemas de virus es por falta de actualizaciones del propio sistema, antivirus desactualizado o ausencia del mismo y la mas posible de las causas; descuido del usuario.
Si un virus o gusano se mete en tu computadora personal puede ser una tragedia, ahora si un virus logra afectar a la red de una empresa esto se traduce muchas veces en una sola cosa: perdida de dinero.
Formas de prevención hay muchas pero si por alguna razón el problema ya lo tienes encima ya sea por que tus sistemas no estaban actualizados con los parches de Microsoft para evitar esta vulnerabilidad (MS08-067, MS08-068, MS09-001) o por algún descuido en el manejo de tu antivirus, lo único que queda es actuar rápido y con algo de paciencia.
En este caso que presento a continuación despues de verificar varios equipos en la red que se encontraban infectados, y para saber en concreto que maquinas estaban propagando el virus y para dar un ejemplo util de utilización de Wireshark nos pusimos a capturar todos los paquetes en un determinado equipo y a esperar que el antivirus reportara una posible infección para verificar desde que equipo se habia originado la misma, obviamente que al ser un gusano este se encuentra por toda la red y la infección pude venir de cualquier dirección IP, sin embargo esta puede ser una manera rápida de identificar ciertos equipos y neutralizarlos rápidamente.
La alimaña en concreto es un gusano llamado Net-Worm.Win32.Kido.ih que utiliza las direcciones IP de los equipos registrados en “Mis sitios de red” para seguir propagandose, en la imagen adjunta vemos exactamente como es infectado el equipo en cuestion pero afortunadamente nuestro antivirus detecta y elimina a tiempo el gusano. Un bocado interesante para este gusano puede ser por ejemplo un servidor Windows con Active Directory, ya que toda maquina en dominio o al ingresar a este automáticamente sera infectada.
Capturando los paquetes.
Obviamente no es buena forma estar esperando equipo por equipo a que se presente algún registro que nos permita actuar, si cuentas con un sistema de administración centralizada de un antivirus lo mejor es atacar desde ahi para lanzar actualizaciones y metodos de desinfección para todos tus equipos registrados, Kaspersky cuenta con una herramienta para tal situación llamada KK (Kido Killer) que es exactamente lo que necesitas para eliminar este gusano.
Información del gusano en cuestión desde Viruslist. Link.
Metodos para la desinfección de tus equipos ya sea de manera local o mediante la consola de administración desde el sitio de Kaspersky. Link.
A pesar de todo es fascinante la manera en que estos programas se replican por toda la red aunque nosotros al menos ya estamos controlando la invasión.
Pues siguiendo con la virtualización aquí mostramos una pantalla del manager de Red Hat para su hypervisor, de su producto Red Hat Enterprise Virtualization.
El manager para el control de las maquinas virtuales.
Un maquina virtual con Windows 7.
Server 2003 en una maquina virtual.
Tiene algunos detalles pero sin duda es una buena alternativa (en la parte económica) contra otros productos como VMware o Citrix.
KVM es una solución para implementar virtualización completa con Linux sobre hardware x86.
Así que aprovechando los recursos con los que cuenta el área de sistemas haremos uso de un servidor ocioso.
El equipo donde realizaremos las pruebas necesarias es un PowerEdge T110 con la distribución Debian Lenny instalada a partir de su versión net-install, por lo cual contaremos con un sistema básico pero mas que suficiente para nuestro cometido. A medida que necesitemos paquetes los instalaremos según se requiera, cabe resaltar que el modulo KVM ya se encuentra incluido en nuestro kernel instalado con nuestra distribución.
Antes que nada debemos verificar que el procesador del equipo soporte la virtualización.
$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo
http://www.linux-kvm.org/page/FAQ#How_can_I_tell_if_I_have_Intel_VT_or_AMD-V.3F
Si el comando anterior nos arroja algún resultado nuestro procesador es idóneo para la virtualización en caso contrario no podremos hacer uso de KVM.
instalamos los paquetes necesarios.
# aptitude install kvm kvm-source
En la medida que se configuran los paquetes de manera automática en debian, si recibimos las siguientes lineas es por que no habilitamos en el BIOS de nuestro equipo la opción de virtualización.
Setting up kvm (72+dfsg-5~lenny5) ... FATAL: Error inserting kvm_intel (/lib/modules/2.6.26-2-686/kernel/arch/x86/kvm/kvm-intel.ko) : Operation not supported Module kvm_intel failed to load failed! invoke-rc.d: initscript kvm, action "start" failed.
http://www.linux-kvm.org/page/FAQ#.22KVM:_disabled_by_BIOS.22_error
kvm disabled by bios
En el equipo con el que estoy realizando esto entramos a la configuración del BIOS, en el menú de “Processor Settings” encontraremos la opción llamada “Virtualization Technology” la cual deberemos habilitar para poder trabajar con la virtualización por hardware.
Instalamos qemu para crear nuestros discos virtuales (y muchas cosas mas).
# aptitude install qemu
Si pretendemos que nuestras maquinas virtuales sean a nivel de red como un dispositivo físico mas debemos instalar el siguiente paquete y configurar ciertos parámetros en nuestro sistema anfitrión para poner su red en modo “bridge”.
# aptitude install bridge-utils
Debemos realizar unos cambios en nuestro archivo de configuración de red para modificar las interfaces, el contenido de mi archivo “interfaces” (/etc/network/interfaces) es el siguiente:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 192.168.1.161 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.254 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off
Reiniciamos los servicios de red.
# /etc/init.d/networking restart
Hecho esto al asignarle una dirección IP a nuestra maquina virtual esta sera como cualquier otro dispositivo en la red.
Realizaremos una instalación para ver que tal luce la nueva beta de Red Hat en su versión 6, la cual podemos descargar desde el siguiente enlace: ftp://ftp.redhat.com/pub/redhat/rhel/beta/6/i386/iso/RHEL6.0-20100414.0-AP-i386-DVD1.iso
Creamos un disco duro de unos 30 GB.
$ qemu-img create disk.RHEL -f qcow2 30G Formatting 'disk.RHEL', fmt=qcow2, size=31457280 kB
Iniciamos la maquina virtual indicando que inicie desde cdrom a partir de una imagen ISO para instalar el sistema, asignamos 1256 MB de memoria RAM, le indicamos modelo y parámetros de tarjeta de red, teclado en español e iniciar un servicio VNC para visualizar la maquina virtual.
# kvm -hda disk.RHEL -cdrom ../RHEL6.0-20100414.0-AP-i386-DVD1.iso -boot d -m 1256 -k es -net nic,vlan=0,model=rtl8139 -net tap,vlan=0 -vnc :0
Terminada la instalación ahora iniciamos desde la imagen del disco duro.
# kvm -hda disk.RHEL -m 1256 -k es -net nic,vlan=0,model=rtl8139 -net tap,vlan=0 -vnc :0