sábado, agosto 01, 2015

Migracion de APs Cisco de controlados a autonomos

Para migrar un AP desde una IOS controlada a una IOS autonoma requerimos
una imagen de tipo autonomo como ejemplo ap1g2-k9w7-tar.152-4.JB5.tar, un TFTP y un servidor DHCP, se recomienda TFTPd32

Nota: tipo de IOS

k9w7 – IOS autonoma
k9w8 – IOS lightweight completa(this is what is bundled in the WLC .aes image, and is factory
 installed on “mesh” APs)
rcvk9w8 – lightweight recovery image – this is factory installed on lightweight APs, unless 
a “mesh” image is specified; it lacks radio firmware

Activamos el servidor DHCP y el TFTP en el computador, entonces obtenemos que la ip de la computadora es la 10.42.0.1, via consola ingresamos al AP controlado y realizamos los siguiente pasos:

!Verificamos que tenga una IP del DHCP
show ip int brief
!probamos IP al computador
ping 10.42.0.1
!Ingresamos el comando para poder realizar configuraciones en el AP
debug capwap console cli
! y descargamos la IOS autonomo 
archive download-sw /force-reload /overwrite tftp://10.42.0.1/ap1g2-k9w7-tar.152-4.JB5.tar 
 
Luego de esto el AP reinicio y verificamos que ya este con la nueva IOS
 
ap#sh version 
Cisco IOS Software, C1600 Software (AP1G2-K9W7-M), Version 15.2(4)JB5, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2014 by Cisco Systems, Inc.
Compiled Thu 01-May-14 20:43 by prod_rel_team

L2TPV3 con Vyos/UBNT EdgeRouter/Vyatta



L2TPV3 es un estándar creado por la IETF que permite encapsular trafico de capa 2 y llevarlo sobre redes IP, la definición de Wikipedia es la siguiente:

"Layer 2 Tunneling Protocol Version 3 is an IETF standard related to L2TP that can be used as an alternative protocol to Multiprotocol Label Switching (MPLS) for encapsulation of multiprotocol Layer 2 communications traffic over IP networks. Like L2TP, L2TPv3 provides a pseudo-wire service, but scaled to fit carrier requirements."


Esta tecnologia se puede utilizar para compartir un segmento LAN entre dos sitios a traves de redes IP, Internet o una WAN privada.

Un ejemplo se ve en este diagrama:





 Aquí se uniran dos data center con virtualizacion, L2TPv3 permitirá migrar maquinas virtuales de un sitio a otro manteniendo la configuración de red de la misma.
  

La configuración es la siguiente:

Data Center Sitio 1

#Parámetros básicos de bridge 
set interfaces bridge br0 aging '300' 
set interfaces bridge br0 hello-time '2'
set interfaces bridge br0 max-age '20'
set interfaces bridge br0 priority '0'
set interfaces bridge br0 stp 'false'
# interface que conectara el Tunel 
set interfaces ethernet eth0 address 'x.x.x.x/24'
# Agregar interface de la LAN al bridge 
set interfaces ethernet eth1 bridge-group bridge 'br0'
# Configuración interface L2TPv3  
set interfaces l2tpv3 l2tpeth0 bridge-group bridge 'br0'
set interfaces l2tpv3 l2tpeth0 destination-port '10000'
set interfaces l2tpv3 l2tpeth0 encapsulation 'udp'
set interfaces l2tpv3 l2tpeth0 local-ip 'x.x.x.x'
set interfaces l2tpv3 l2tpeth0 peer-session-id '1'
set interfaces l2tpv3 l2tpeth0 peer-tunnel-id '1'
set interfaces l2tpv3 l2tpeth0 remote-ip 'y.y.y.y'
set interfaces l2tpv3 l2tpeth0 session-id '1'
set interfaces l2tpv3 l2tpeth0 source-port '10000'
set interfaces l2tpv3 l2tpeth0 tunnel-id '1' 
 
 
Data Center Sitio 2
 
#Parámetros básicos de bridge 
set interfaces bridge br0 aging '300'
set interfaces bridge br0 hello-time '2'
set interfaces bridge br0 max-age '20'
set interfaces bridge br0 priority '0'
set interfaces bridge br0 stp 'false'
# interface que conectara el Tunel 
set interfaces ethernet eth0 address 'y.y.y.y/24'
# Agregar interface de la LAN al bridge 
set interfaces ethernet eth1 bridge-group bridge 'br0' 
# Configuración interface L2TPv3  
set interfaces l2tpv3 l2tpeth0 bridge-group bridge 'br0'
set interfaces l2tpv3 l2tpeth0 destination-port '10000'
set interfaces l2tpv3 l2tpeth0 encapsulation 'udp'
set interfaces l2tpv3 l2tpeth0 local-ip 'y.y.y.y'
set interfaces l2tpv3 l2tpeth0 peer-session-id '1'
set interfaces l2tpv3 l2tpeth0 peer-tunnel-id '1'
set interfaces l2tpv3 l2tpeth0 remote-ip 'x.x.x.x'
set interfaces l2tpv3 l2tpeth0 session-id '1'
set interfaces l2tpv3 l2tpeth0 source-port '10000'
set interfaces l2tpv3 l2tpeth0 tunnel-id '1'

Sincronización con Unison

 

Vamos a hacer uso de la herramienta Unison para sincronizar datos entre dos computadores, como por ejemplo dos servidores de FreeSWITCH:
Instalamos unison en ambas computadoras (debe ser exactamente el mismo número de versión en ambas máquinas):

apt-get install unison
 
 
Luego en el directorio home del usuario que vamos a usar para sincronizar creamos el directorio .unison:

mkdir /root/.unison

Ahora creamos un archivo con extensión /root/.unison/default.prf que indica las carpetas que deseamos sincronizar y las carpetas o archivos que deseemos ignorar, debe ser algo similar a:
 
# computadora A
root = /home
  
# computadora B
root = ssh://ip_computadora_B//home 
# sincronizar 
path = miusuario/Documentos
# ignorar 
ignore = Path miusuario/Instaladores
ignore = Name .*

Y llevamos a cabo la sincronización con el comando:
 
unison default

(debe ejecutarse a nombre del usuario miusuario y desde la carpeta /root).

Ejemplo de sincronizacion de carpeta de directory entre dos FreeSWITCH
 
auto = true
# disminuir el debug
batch = true
# archivos locales y remota
root = ssh://192.168.80.2//usr/local/freeswitch/conf/directory/default
root = /usr/local/freeswitch/conf/directory/default
perms = 0
#Ante un conflicto le da preferencia este directorio
prefer = /usr/local/freeswitch/conf/directory/default
ignore = Path */Olds
ignore = Name {olds,*~,tmp,temp,.*}

 

domingo, enero 25, 2015

Codec g729 en FreeSWITCH

G729 es el codec bajo consumo de ancho de banda mas utilizado en los teléfonos IP físicos, para poder utilizarlo en FreeSWITCH se puedo utilizar en modo passthrough, utilizando el modulo mod_com_g729, de manera gratuita, pero si necesitamos transcoding o buzon de voz con g729 necesitaremos utilizar el modulo mod_g729 por el cual hay que pagar 10 dolares por canal, esto debido a que el codec g729 esta patentado y hay que pagar royalty por uso. 
Pero ahora existe otro modulo que no esta en los repositorios oficiales de FreeSWITCH, que utiliza g729 con la implementacion open source de Belledonne Communications, los creadores de nuestro querido Linphone, el cual nos permite utilizar g729 para transcoding y otras aplicaciones sin pagar. 


Instalación


 cd /u sr/src/freeswitch/src/mod/codecs/ 
git clone https://github.com/xadhoom/mod_bcg729.git 
cd mod_bcg729 

Modificamos el archivo Makefile

FS_INCLUDES=/usr/local/freeswitch/include

FS_MODULES=/usr/local/freeswitch/mod

Despues compilamos e instalamos

make & make install

Entramos a FreeSWITCH y cargamos el nuevo modulo

unload mod_g729

load mod_bcg729

Ahora ya tenemos corriendo g729 en FreeSWITCH


===============ACTUALIZACIÓN====================

Para FreeSWITCH 1.6 se debe modificar las variables de Makefile asi:

FS_INCLUDES=/usr/local/freeswitch/include/freeswitch

FS_MODULES=/usr/local/freeswitch/mod


domingo, junio 29, 2014

Cloud Storage (Almacenamiento en la nube) con Seafile

Web Hosting with cPanel - only $1 / month from GoDaddy
Cloud Storage son lo servicios que te permiten almacenar tus archivos en un servidor en la nube y sincronizarlo y recuperarlos tanto en el PC como en los dispositivos móviles, permitiendo verdadera movilidad al tener los documentos en cualquier dispositivo en cualquier momento. 


Muchas personas están utilizando los beneficios de la nube, por razones personales, pero la mayoría de las empresas todavía tienen que dar el salto. la revisión de los siguientes beneficios destacarán las ventajas del almacenamiento en la nube para las empresas de todos los tamaños y todos los sectores. 

Todo en un solo lugar: Toda la documentación relevante la puedes tener en un solo lugar no dependiendo de dispositivos como memoria USB o discos duros externos que se pueden dañar o extraviar.
Respaldo automático: el servicio de Cloud Storage respaldara de manera automática los documentos, permitiendole que aunque falle tu computador o lo extravíes mantener los documentos importantes.
Colaboración: compartir archivos entre los empleados, permitiendo ser mas eficientes, ademas de enviar y recibir documentos de los clientes utilizando el servicio de Cloud Storage, permitirá tener respaldo, control y organización de la información en todo momento.
Movilidad y disponibilidad: como el servicio Cloud Storage se integra tanto con las PC como con los dispositivos móviles, los empleados tendrán acceso en todo momento y en todo lugar a la información que requieran y sin tener que cargar con dispositivos adicionales.

Estas ventajas permitirán a tu empresa ser agil y mas eficiente y tus trabajadores mas productivos al tener la información necesaria siempre presente.

Que es Seafile

Seafile es una herramienta de sincronización open source, similar a Dropbox,OwnCloud o Sparkleshare que uno puede instalar en su propio servidor. Esta  aplicación tiene los siguientes componentes:  - Interface Web de administración- Servidor de sincronizacion- Clientes (Linux, Windows, Android, Mac)   Instalación Seafile
Lo primero es descargar las dependencia para Seafile en Debian son los siguientes:
apt-get install python2.7 python-setuptools python-simplejson python-imaging sqlite3


Y despues descargamos Seafile

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_{version}_i386.tar.gz
 
 
Nosotros realizaremos la instalacion mas simple de Seafile, la basada en la base de datos SQLite y usando el servidor Web incluido.
Crearemos una instancia llamada haiwen


mkdir haiwen  
mv seafile-server_* haiwen
cd haiwen
# despues moveremos a este directorio todo seafile-server_*
tar -xzf seafile-server_*
mkdir installed
mv seafile-server_* installed


Deberia quedar el siguiente arbol de directorio

# tree . -L 2
.
├── installed
│   └── seafile-server_{version}.tar.gz
└── seafile-server-{version}
    ├── reset-admin.sh
    ├── runtime
    ├── seafile
    ├── seafile.sh
    ├── seahub
    ├── seahub.sh
    ├── setup-seafile.sh
    └── upgrade

Ademas debemos crear una carpeta, de preferencia en una partición exclusiva para esto, que contendrá todos los archivos  sincronizados.
Ahora debemos correr la instalacion.


cd seafile-server-*
./setup-seafile.sh  #correrá la instalación  y nos realizara las consultas para instalación 

La tabla siguiente muestra las opciones y sus descripciones


Opciones de configuración de Seafile
Opcion Descripción Nota
server name Nombre del servidor 3 a 15 caracteres, están permitidos los caracteres en ingles, números y _
server ip or domain   DirecciónIP o nombre del dominio de tu servidor Seafile. Aquí se conectaran los clientes, de preferencia utiliza nombre de dominio
ccnet server port El puerto TCP de ccnet, es el servicio de red de Seafile. Default is 10001. If it's been used by other service, you can set it to another port.
seafile data dir Directorio donde se guardaran los archivos sincronizados, elige el directorio anteriormente creado The size of this directory will increase as you put more and more data into Seafile. Please select a disk partition with enough free space.
seafile server port Puerto TCP para la transferencia de datos de Seafile. Default is 12001. If it's been used by other service, you can set it to another port.
httpsever port Puerto TCP usado por el servidor HTTP de Seafile. Default is 8082. If it's been used by other service, you can set it to another port.


Corriendo Seafile


Ya esta instalado Seafile, ahora debemos correr los servicios para que queda habilitado.

./seafile.sh start # Arranca el servicio seafile
./seahub.sh start  # Arranca el servicio web en el puerto 8000 de administracion
 
 
Ahora ya puedes entrar a la web de Seafile con la siguiente direccion:

http://ip_o_dominio:/8000

El primer usuario y su clave se deben haber configurado al instalar Seafile.


Felicitaciones ya tienes tu Cloud Storage privada lista!


En el próximo post configuraremos los clientes de escritorio y móviles.



Conectarse a la red IP versión 6 (IPv6)




Las noticias sobre el agotamiento de las IP versión 4 (IPv4) debido a la alta penetración de Internet han copado los titulares últimamente[1], ademas de la irrupción del concepto de Internet de las Cosas (IoE) esta llevando a priorizar la implementación de redes IPv6. Actualmente los proveedores de servicio (ISP) no están entregando por defecto direccionamiento IPv6, por tal motivo es necesario encontrar un proveedor de conectividad IPv6 y levantar un túnel IPv6 sobre IPv4 con ellos, también llamado túnel SIT, el cual nos permitirá transportar nuestro trafico IPv6 desde nuestra red a la red global IPv6. El diagrama siguiente muestra como quedara la conexión.




Obteniendo el servicio de tunel

Hay varios proveedores de conectividad a IPv6 y uno de ellos, gratuito, es TunnelBroker de Hurracane Electric. Este ISP estadounidense esta muy comprometido con la adopción de IPv6 y hasta a creado una certificación en IPv6 para especialistas, la cual ya realice [2]. Hurracane posee múltiples puntos de acceso, permitiéndonos escoger el que nos genere la menor latencia, permite hasta 5 túneles, y nos da para cada extremo de túnel una mascara 64 o incluso una mascara 48. Nosotros utilizamos los de mascara 64 la cual nos dio un total de 18,4 trillones de IPs validas y publicas, suponemos que alcanza.
El proceso de obtencion del tunel es el siguiente

Registro de cuenta en https://tunnelbroker.net/
 




Obtener datos del tunel







Configurar nuestro router

Esta configuración la realizamos con un Router Ubiquiti EgdeMAX/VyOS/Vyatta, donde debemos crear la interface tunel

#Creamos la interface tunel
set interfaces tunnel tun0 encapsulation sit
set interfaces tunnel tun0 description 'HE.NET IPv6 Tunnel'
# Definimos la IPv4 local la cual esta registrada en Hurricane
set interfaces tunnel tun0 local-ip 186.67.39.146
#Definimos la IPv4 remoto donde va a terminar el tunel
set interfaces tunnel tun0 remote-ip 66.220.18.42
# Configuramos la IPv6 del router de Raytel
set interfaces tunnel tun0 address '2001:470:c:10e4::2/64'
#Configuramos el TTL del tunel
set interfaces tunnel tun0 ttl 255



Ya creada la interface podemos verificar si ya esta activa

show interfaces tunnel
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
tun0 2001:470:c:10e4::2/64 u/u HE.NET IPv6 Tunnel


Y realizamos una prueba de conectividad a la IPv6 de Google

ping6 2800:3f0:4003:800::1002
PING 2800:3f0:4003:800::1002(2800:3f0:4003:800::1002) 56 data bytes
64 bytes from 2800:3f0:4003:800::1002: icmp_seq=1 ttl=58 time=339 ms
64 bytes from 2800:3f0:4003:800::1002: icmp_seq=2 ttl=58 time=328 ms
64 bytes from 2800:3f0:4003:800::1002: icmp_seq=3 ttl=58 time=328 ms
64 bytes from 2800:3f0:4003:800::1002: icmp_seq=4 ttl=58 time=327 ms
64 bytes from 2800:3f0:4003:800::1002: icmp_seq=5 ttl=58 time=328 ms

--- 2800:3f0:4003:800::1002 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 327.976/330.443/339.311/4.499 ms

Con esto nuestro Router ya esta conectado a la red IPv6. En una proxima entrega configuraremos la red interna con IPv6




domingo, junio 01, 2014

Objetivo


En este manual se detalla paso a paso configurar 3 teléfonos IP para realizar llamadas entre ellos, el principal un SPA504G podrá realizar llamadas a los dos teléfonos SPA502G. Los SPA502G estarán configurados como hotline (al levantar el auricular este llamara automáticamente) al SPA504G.





Telefonía IP SIP autónoma


El protocolo de telefonía SIP, fue diseñado para que los endpoint, en este caso teléfonos, fueran inteligentes permitiendoles tener configuración propio como planes de discado, a diferencia de la telefonía tradicional donde los teléfonos eran totalmente dependientes de las centrales. Aprovechando esta característica implementaremos un sistema de telefonía IP SIP, sin central, lo cual permitirá disminuir los puntos de fallas del sistema. Esto lo podemos ver en el siguiente diagrama.



 


En el diagrama podemos ver que al utilizar una implementación de telefonos IP autonomos, no registrados a una central, se eliminan los puntos de fallos de los enlaces a la red LAN o WAN y la central IP. La implementacion de telefonos IP puede ser muy util en sistema de comunicaciones de emergencia









Pasos para configurar teléfono remoto.

Nos vamos al explorador para hacer las configuración vía web. Introducimos la IP 10.42.0.101 que es la de un teléfono.



En esta parte nos vamos a admin login que es donde vamos a trabajar.

Una vez en admin nos dirigimos a advanced que es donde esta la configuración más importante.
Aquí nos vamos a la opción EXT 1 que nos da este teléfono por que solo tiene una.

 
Proxy and registration: Aquí en la parte proxy no debe haber nada ya que no tenemos central y no nos tenemos que registrar y en make call without Reg: tiene que ser yes, en ans call without Reg: lo dejamos yes.

Subscriber infornation: Display name (EJ: 101) que es de la extensión del teléfono al igual que el User ID.

Dial plan : Aquí nos vamos a dial plan dial plan(plan de marcado) e introducimos el siguiente conjunto de números que son al cual nuestro llamado se dirigirá como es hotline al levantar el teléfono automáticamente llamara a la extensión 100 dial plan:    (<:100>S0  y al final aplicamos submit para que los cambios se guarden.



Pasos para configurar teléfono principal.

Todos los demás pasos son lo mismo pero como este es el teléfono principal el Dial plan cambia ya que como va a estar en speed dial al marcar un solo botón marca a un anexo en específico. El dial plan es:    (<101:101>|<102:102>)




Aquí nos vamos a phone y configuramos las líneas en esta imagen se muestran la línea 1 que es la del mismo teléfono por lo tanto queda (extensión 1, prívate, $user por defecto). La línea 2 se la damos a la extensión 101(extensión disable, prívate, short name 101, extended function:  fnc=sd;ext=101@10.0.42.101


Aquí es lo mismo pero en la línea 3( extensión disable, prívate, short name 102, extended function: fnc=sd;ext=102@10.0.42.102