martes, diciembre 17, 2019

Analisis de Probe request

Para conectarse a las redes WIFI, los dispositivos deben descubrir o detectar las redes existentes, para esto utilizan los clientes los probe request en todos los canales de la banda en los que está habilitado para transmitir.



Estos paquetes se pueden capturar y así obtener la información de los dispositivos WIFI que están cercanos.


En Linux para conseguir esto debemos realizar los siguientes pasos:

1.- Configuración de Interface en modo Monitor


Para esto primero deshabilitamos el network-manager y deshabilitamos la interface con ifconfig:

sudo service network-manager stop
sudo ifconfig wlp1s0 down


Configuramos la interface en modo monitor y la volvemos a activar:

sudo iwconfig wlp1s0 mode monitor
sudo ifconfig wlp1s0 up


Verificamos que la interface este en modo monitor:

sudo iwconfig wlp1s0
wlp1s0    IEEE 802.11bgn  Mode:Monitor  Frequency:2.412 GHz  Tx-Power=15 dBm  
                Retry short limit:7   RTS thr:off   Fragment thr:off
                Power Management:off




en modo normal deberia verse asi:

sudo iwconfig wlp1s0
wlp1s0    IEEE 802.11bgn  ESSID:"XXXXX" 
          Mode:Managed  Frequency:2.412 GHz  Access Point: 9A:8A:20:XX:XX:XX  
          Bit Rate=72.2 Mb/s   Tx-Power=15 dBm  
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=62/70  Signal level=-48 dBm 
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:31   Missed beacon:0



Ya estamos listo para verificar los probe request a traves de tcpdump o Wireshark


2.- Capturar a traves de TCPDUMP


En tcpdump debemos filtrar los probe request en nuestra interface WIFI:

sudo tcpdump -i wlp1s0 -s 0 -nne '(type mgt and subtype probe-req)' 

Para mas información de como filtrar por favor revisen [1]

Con esto obtendrán algo así:


 sudo tcpdump -i wlp1s0 -s 0 -nne '(type mgt and subtype probe-req)'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp1s0, link-type IEEE802_11_RADIO (802.11 plus radiotap header), capture size 262144 bytes
10:26:06.146207 249112607us tsft 1.0 Mb/s 2412 MHz 11b -31dBm signal -31dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:70:bb:e9:aa:b1:9f Probe Request () [1.0 2.0 5.5 11.0 Mbit]
10:26:06.151624 249117920us tsft 1.0 Mb/s 2412 MHz 11b -27dBm signal -27dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:70:bb:e9:aa:b1:9f Probe Request (prueba-wireshark) [1.0 2.0 5.5 11.0 Mbit]
10:26:06.166410 249132835us tsft 1.0 Mb/s 2412 MHz 11b 4dBm signal 4dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:70:bb:e9:aa:b1:9f Probe Request () [1.0 2.0 5.5 11.0 Mbit]
10:26:06.169342 249135654us tsft 1.0 Mb/s 2412 MHz 11b 7dBm signal 7dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:70:bb:e9:aa:b1:9f Probe Request (prueba-wireshark) [1.0 2.0 5.5 11.0 Mbit]
10:26:06.249639 249216271us tsft 1.0 Mb/s 2412 MHz 11b -28dBm signal -28dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:70:bb:e9:aa:b1:9f Probe Request () [1.0 2.0 5.5 11.0 Mbit]
10:26:06.252041 249218017us tsft 1.0 Mb/s 2412 MHz 11b -10dBm signal -10dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:70:bb:e9:aa:b1:9f Probe Request (prueba-wireshark) [1.0 2.0 5.5 11.0 Mbit]
10:26:06.269873 249236306us tsft 1.0 Mb/s 2412 MHz 11b -22dBm signal -22dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:70:bb:e9:aa:b1:9f Probe Request () [1.0 2.0 5.5 11.0 Mbit]
10:26:06.271229 249237709us tsft 1.0 Mb/s 2412 MHz 11b -21dBm signal -21dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:70:bb:e9:aa:b1:9f Probe Request (prueba-wireshark) [1.0 2.0 5.5 11.0 Mbit]
10:26:06.372397 249338889us tsft 1.0 Mb/s 2412 MHz 11b -10dBm signal -10dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:70:bb:e9:aa:b1:9f Probe Request () [1.0 2.0 5.5 11.0 Mbit]
10:26:07.263172 250230286us tsft 1.0 Mb/s 2412 MHz 11b -67dBm signal -67dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:34:e1:2d:12:df:a4 Probe Request () [1.0 2.0 5.5 11.0 6.0 9.0 12.0 18.0 Mbit]
10:26:07.395149 250362383us tsft 1.0 Mb/s 2412 MHz 11b -60dBm signal -60dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:34:e1:2d:12:df:a4 Probe Request () [1.0 2.0 5.5 11.0 6.0 9.0 12.0 18.0 Mbit]
10:26:07.803719 250771377us tsft 1.0 Mb/s 2412 MHz 11b -42dBm signal -42dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:34:e1:2d:14:b2:bb Probe Request () [1.0 2.0 5.5 11.0 6.0 9.0 12.0 18.0 Mbit]
10:26:07.966819 250934075us tsft 1.0 Mb/s 2412 MHz 11b -90dBm signal -90dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:10:98:c3:01:f5:37 Probe Request () [1.0 2.0 5.5 11.0 Mbit]
10:26:07.980292 250947789us tsft 1.0 Mb/s 2412 MHz 11b -54dBm signal -54dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:34:e1:2d:14:b2:bb Probe Request () [1.0 2.0 5.5 11.0 6.0 9.0 12.0 18.0 Mbit]
10:26:08.003021 250970953us tsft 1.0 Mb/s 2412 MHz 11b -58dBm signal -58dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:34:e1:2d:14:b2:bb Probe Request () [1.0 2.0 5.5 11.0 6.0 9.0 12.0 18.0 Mbit]
10:26:08.333273 251300852us tsft 1.0 Mb/s 2412 MHz 11b -87dBm signal -87dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:30:07:4d:c0:d2:b7 Probe Request (RAYTEL) [1.0 2.0 5.5 11.0 Mbit]
10:26:08.807109 251775003us tsft 1.0 Mb/s 2412 MHz 11b -48dBm signal -48dBm signal antenna 0 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:70:bb:e9:aa:b1:9f Probe Request () [1.0 2.0 5.5 11.0 Mbit]



Aqui como puntos importantes son, utilizando la ultima linea:

SA:70:bb:e9:aa:b1:9f: MAC desde dispositivo que genera el Probe Request

-48dBm: Es el nivel de señal con que se capturo ek paquete, esto puede darte una idea de que tan lejos o cerca este el dispositivo

[1.0 2.0 5.5 11.0 Mbit]: codificaciones que soporte el dispositivo

3.- Capturar a traves de Wireshark


en Wireshark debemos capturar en la interface WIFI y utilizar el siguiente filtro:

lan.fc.type_subtype == 0x0004

para mas detalles ver [2]





[1]: http://infosec.vishalmishra.in/2013/09/capture-wireless-traffic.html

 [2]: https://notasinalambricas.wordpress.com/2016/11/17/descubriendo-redes-inalambricas-parte-2/

[3]: https://www.cisco.com/c/en/us/support/docs/wireless-mobility/80211/200527-Fundamentals-of-802-11-Wireless-Sniffing.html











jueves, diciembre 20, 2018

Se instalara MySQL en un Ubuntu 18.04:

Se instalara MySQL en un Ubuntu 18.04:

 sudo apt install mysql-server

Para poder acceder de cualquier lugar se debe editar el archivo de configuración y permitir las conexiones remotas:

 sudo nano  /etc/mysql/mysql.conf.d/mysqld.cnf

 # cambiar de 127.0.0.1 a 0.0.0.0
 bind-address = 0.0.0.0

y se debe reiniciar el servicio:

 sudo service mysql restart

Ya el servidor permite conexiones remotas crearemos un usuario con acceso remoto y a todas las bases de datos:

 sudo mysql

 CREATE USER 'nombre_usuario'@'%' IDENTIFIED BY 'tu_contrasena';
 GRANT ALL PRIVILEGES ON * . * TO 'nombre_usuario'@'%';
 FLUSH PRIVILEGES;

miércoles, diciembre 16, 2015

Utilizar modulos SFP de terceros en swtiches Cisco

 
 
 
 
Aunque SFP no es un estándar, si se construye en base a un multi-source agreement (MSA) el cual permite que los módulos SFP sean compatibles entre múltiples fabricantes. 



Esto permite que uno pueda instalar módulos de distintas marcas en equipamiento Huawei, Cisco SMB, Juniper, etc. Pero en los switches Cisco de la linea Catalyst esto no es posible por que al instalar un modulo el switch arroga el siguiente error:


%GBIC_SECURITY_CRYPT-4-VN_DATA_CRC_ERROR: GBIC in port 65586 has bad crc
%PM-4-ERR_DISABLE: gbic-invalid error detected on Gi1/0/50, putting Gi1/0/50 in err-disable state

Lo cual bloquea la puerta y no la permite utilizar. Pero esto tiene solucion con los siguientes comandos:

service unsupported-transceiver
no errdisable detect cause gbic-invalid

El primer comando permite agregar módulos SFP de terceros o no soportados, y el segundo deshabilita el error por modulo invalido. Despues esto es necesario es reiniciar la puerta del switch que quedo con error para que esta funcione.


sábado, septiembre 19, 2015

Proxy SIP Repro

Repro es un proxy SIP simple de implementar y de configurar. Este proxy esta incluido en los repositorios de Debian 8.

Instalación


La instalacion es simple, solo debemos instalar como cualquier paquete con aptitude:

sudo aptitude install repro

Y lo iniciamos:

sudo /etc/init.d/repro start

la administracion es el siguiente:

http://127.0.0.1:5080/index.html

Los datos para ingresar son Usuario: admin y pass: admin


Configurar dominio


 Ingresamos a la pagina DOMAINS y agregamos la IP de computador con repro:


En este caso agregamos la IP 192.168.0.111 y el puerto 5060

Al agregar un nuevo dominio es necesario reiniciar Repro:

sudo /etc/init.d/repro restart

Configurar usuarios (extensiones)



Ahora de agregamos los usuarios para esto ingresamos a ADD USER



Agregamos los usuarios en el dominio 192.168.0.111 con los siguientes datos:

Usuario1
User Name: 100
Password: 100

Usuario2
User Name: 101
Password: 101




Configurar clientes


Primero configuraremos Linphone en nuestro escritorio Linux:

Opciones -> Preferencias ->  Gestionar Cuentas SIP -> Añadir




Ahora configuraremos linphone es nuestro android


Ahora podemos realizar llamadas entre el teléfono y el computador

domingo, septiembre 13, 2015

Calculo de enlaces inalambricos

El calculo de enlace se base en los siguientes datos y formulas, aquí se simplifico los cálculos dando por supuesto que hay linea vista, la zona de fresnel esta despegada y no se calcula la interferencia. El margen de potencia de requiere que al menos sea de 15db para que el enlace sea realizable
Nota: En enlace de menos de 7GHz de frecuencias, factores como lluvia, nieve, neblina no afectan significativamente los cálculos de los enlaces.


d = Distancia en Km

f = Frecuencia en Mhz

P_tx_tx = Potencia de transmisión del transmisor

At_cab_tx =Atenuación del cable de transmisor

Ga_An_tx = Ganancia antena de transmisor

At_cab_rx = Atenuación del cable de receptor

Ga_An_rx = Ganancia antena de receptor

Sen_rx  = Sensibilidad de receptor en data rate definido
 
 

Formulas

Atenuación_espacio_libre = 32,45 + 20log(d)+20log(f)  
Potencia = Pot_trans_tx – Aten_cab_tx – Aten_cab_rx + Gan_ant_tx + Gan_ant_tx  
Potencia_recepción = Potencia – Atenuación_espacio_libre

Margen de potencia de recepción

Margen = Potencia_recepción – Sensibilidad_del_receptor

Ejemplo de Calculo

El enlace sera de 1,9 Km de distancia, Para la implementación se utilizaran los equipos Ubiquiti PBE-M5-300 en la frecuencia de 5.8GHz, de estos equipos se obtienen los siguientes datos:


d = 1,9 Km
f = 5800 MHz
P_tx_tx = 21 db                  nota: obtenido en datasheet de equipo
At_cab_tx =0 db                  nota: No se utilizan cables la antena esta integrada
Ga_An_tx = 22 db                 nota: obtenido en datasheet de equipo 
At_cab_rx = 0db                  nota: No se utilizan cables la antena esta integrada
Ga_An_tx = 22db                  nota: obtenido en datasheet de equipo
Sen_rx = -73db                   nota: sensibilidad obtenida para data rate MCS15


Atenuación_espacio_libre = 32,45 + 20log(1,9)+20log(5800) = 32,45 + 5,58  +  75,3 = 113,3

Potencia = Pot_trans_tx – Aten_cab_tx – Aten_cab_rx + Gan_ant_tx + Gan_ant_tx = 21 - 0 -0 + 22 + 22 = 65

Potencia_recepción = Potencia – Atenuación_espacio_libre' = 65 - 113,3 = -49 db

Margen de potencia de recepción


Margen = Potencia_recepción – Sensibilidad_del_receptor = -49 - (-73) =  24 
 
El resultado nos da un margen mayor al margen requerido de 15, asi que el enlace es factible.
 
 

VRRP en Vyos/UBNT EdgeRouter

VRRP (Virtual Router Redundancy Protocol) es un protocolo de redundancia a nivel IP definido en el RFC3768. Fue diseña para permitir alta disponibilidad en la puerta de enlace por defecto en una subred, aunque se puede utilizar tambien para permitir alta disponibilidad de servicios (servidores web, Telefonía, etc). 
En este ejemplo revisaremos la funcionalidad original, alta disponibilidad de la puerta de enlace. Se presupone que ambos Vyos ya tienen acceso a internet, tienen configuradas interfaces, rutas, regla de NAT y de filtrado. El diagrama es el siguiente:


Los datos relevantes son:

Subred: 10.0.0./24
IP virtual: 10.0.0.10
IP router1: 10.0.0.11
IP router2: 10.0.0.12

El router1 sera el principal, tendrá mayor prioridad, y ademas tendra configurado el comando preempt que le permitira recuperar la IP virtual luego de una caida o reinicio.

Router1

set interfaces ethernet eth0 vrrp vrrp‐group 10
set interfaces ethernet eth0 vrrp vrrp‐group 10 virtual‐address 10.0.0.10/24
set interfaces ethernet eth0 vrrp vrrp‐group 10 preempt true
set interfaces ethernet eth0 vrrp vrrp‐group 10 priority 150
commit
save
#
show interfaces ethernet eth0 vrrp 
vrrp‐group 10 {
  preempt true
  priority 150
  virtual‐address 10.0.0.10/24
}
 

Router2


set interfaces ethernet eth0 vrrp vrrp‐group 10
set interfaces ethernet eth0 vrrp vrrp‐group 10 virtual‐address 10.0.0.10/24
set interfaces ethernet eth0 vrrp vrrp‐group 10 priority 100
commit
save
#
show interfaces ethernet eth0 vrrp 
vrrp‐group 10 {
  priority 100
  virtual‐address 10.0.0.10/24
}


Con esta configuración ya tendremos corriendo VRRP entre nuestro routers. Router1 en modo normal recibirá el trafico desde la subred, ante una caida de este Router2 obtendrá la IP virtual y permitira que el flujo de trafico a internet no se interrumpa.

Las opciones del comando VRRP en Vyos son las siguientes:

interfaces ethernet eth0 vrrp 
   vrrp-group <1-255> #VRRP group number
      advertise-interval <1-255> #Advertise interval (default 1)
      authentication
      description  #Description
      disable  #VRRP group disabled
      hello-source-address  #Source address for vrrp hello packets (optional)
      preempt  #Preempt mode
      preempt-delay <0-1000> #Preempt Delay in seconds
      priority <1-255> #Priority
      rfc3768-compatibility
      run-transition-scripts  #Scripts for VRRP state-transitions
      sync-group  #Add this vrrp group to a sync group
      virtual-address  #Virtual IP address (up to 20 per group)


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