1. Trabajo de investigación
1. Protocolos VoIP y Teléfonos IP
1.1. Protocolos SIP, RTP, RTPCP
SIP
Session Initiation Protocol (SIP o Protocolo de Inicio de Sesiones) es
un protocolo desarrollado por el grupo de trabajo MMUSIC del IETF con la
intención de ser el estándar para la iniciación, modificación y finalización de
sesiones interactivas de usuario donde intervienen elementos multimedia como
el video, voz, mensajería instantánea, juegos en línea y realidad virtual.
La sintaxis de sus operaciones se asemeja a las de HTTP y SMTP, los
protocolos utilizados en los servicios de páginas Web y de distribución de e-
mails respectivamente. Esta similitud es natural ya que SIP fue diseñado para
que la telefonía se vuelva un servicio más en Internet.
En noviembre del año 2000, SIP fue aceptado como el protocolo de
señalización de 3GPP y elemento permanente de la arquitectura IMS (IP
Multimedia Subsystem). SIP es uno de los protocolos de señalización para voz
sobre IP, otros, por ejemplo, son H.323 e IAX2.
RTP
RTP son las siglas de Real-time Transport Protocol (Protocolo de Transporte
de Tiempo real). Es un protocolo de nivel de sesión utilizado para la
transmisión de información en tiempo real, como por ejemplo audio y vídeo en
una video-conferencia. Está desarrollado por el grupo de trabajo de transporte
de Audio y Video del IETF, publicado por primera vez como estándar
en 1996 como la RFC 1889, y actualizado posteriormente en 2003 en la RFC
3550, que constituye el estándar de Internet STD 64.
Inicialmente se publicó como protocolo multicast, aunque se ha usado en
varias aplicaciones unicast. Se usa frecuentemente en sistemas de streaming,
junto a RTSP, videoconferencia y sistemas push to talk (en conjunción con
H.323 o SIP). Representa también la base de la industria de VoIP.
RTCP
Se encarga de monitorizar la calidad del servicio y de proporcionar
información acerca de los participantes en una sesión de intercambio de
datos. El protocolo, definido en el RFC 3550, no está diseñado para
soportar todas las necesidades de comunicación de una aplicación, sólo las
más básicas. La principal función de RTCP es proporcionar una
retroalimentación útil para mantener una calidad de distribución adecuada
2. 1.2. Extensiones SIP
La configuración de las extensiones SIP tiene un procedimiento similar pero no
idéntico, respecto de la configuración de las extensiones IP específicas en la
centralita NCP500 de Panasonic. Las extensiones SIP pueden ser de tipo
propietario o bien extensiones SIP de cualquier otro fabricante, pero el proceso es
similar en ambos casos.
1.3. Teléfonos IP
La Telefonía IP es una tecnología que permite integrar en una misma red - basada
en protocolo IP - las comunicaciones de voz y datos. Muchas veces se utiliza el
término de redes convergentes o convergencia IP, aludiendo a un concepto un
poco más amplio de integración en la misma red de todas las comunicaciones
(voz, datos, video, etc.).
Esta tecnología hace ya muchos años que está en el mercado (desde finales de
los 90) pero no ha sido hasta hace poco que se ha generalizado gracias,
principalmente, a la mejora y estandarización de los sistemas de control de la
calidad de la voz (QoS) y a la universalización del servicio Internet.
Cuando hablamos de un sistema de telefonia IP estamos hablando de un conjunto
de elementos que debidamente integrados permiten suministrar un servicio de
telefonia (basado en VoIP) a la empresa. Los elementos básicos que forman este
sistema son: la centralita IP, el Gateway IP y los diferentes teléfonos IP.
Las principales ventajas de la telefonía IP son la simplificación de la
infraestructura de comunicaciones en la empresa, la integración de las diferentes
sedes y trabajadores móviles de la organización en un sistema unificado de
telefonía - con gestión centralizada, llamadas internas gratuitas, plan de
numeración integrado y optimización de las lineas de comunicación - la movilidad y
el acceso a funcionalidades avanzadas (buzones de voz, IVR, ACD, CTI, etc.)
2. AlternativasaElastix
2.1. Asterisk
2.1.1. Definición
Asterisk esunprogramade software libre (bajolicenciaGPL) que proporciona
funcionalidadesde unacentral telefónica(PBX).ComocualquierPBX,se puede
conectar unnúmerodeterminadode teléfonos parahacerllamadasentre sí
dentrode una mismaorganizacióne inclusoaccederacomunicacionesfuerade la
mismaa la PSTN o conectandoa un proveedorde VoIP obienauna RDSI tanto
básicoscomo primarios.
3. 2.1.2. Historia
El programa de software Asterisk fue desarrollado por Mark Spencer, por
entonces estudiante de ingeniería informática en la Universidad de Auburn,
Alabama. Mark había creado en 1999 la empresa "Linux Support Services" con
el objetivo de dar soporte a usuarios de GNU/Linux. Para ello necesitaba una
central telefónica, pero ante la imposibilidad de adquirirla dados sus elevados
precios, decidió construir una con un PC bajo Linux, utilizando lenguaje C.
Posteriormente "Linux Support Services" se convertiría en el año 2001 en
"Digium", redirigiendo sus objetivos al desarrollo y soporte de Asterisk.
2.1.3. Requisitos Mínimos
-Procesador a 500MHz (Pentium3)
-128 MB en RAM
-2GB en disco duro como mínimo.
2.1.4. Características
Contestarlallamadade otro teléfono
Música enespera(enmp3)
Programar alarmas,despertadores
Listasnegras
Detalles de lasllamadas,estadísticas
Ruteode llamadasegúndestinoy/oorigen
Monitorizaciónsilenciosade llamadas
2.1.5. Diferencias con Elastix
Elastix esunainterfazde tarificaciónde llamadasparaAsterisk(unaherramienta
para interpretarlosregistrosde llamadasque Asteriskgenera),perorápidamente
se convirtióenuna suite de comunicacionesque integravariosproductosenuno,
ya que enun soloISO es posible instalarenunsolopasono solamente Asterisk,
sinouna interfazwebde configuracióncomoFreePBX.
2.1.6. Protocolos
Asteriskreconoce muchosprotocolos VoIPcomopueden
serSIP,H.323, IAX y MGCP. Asteriskpuede interpretarcon terminalesIP actuando
como un registradory como Gateway entre ambos.
4. Uno de lospuntosfuertesdel software Asteriskesque permite launificaciónde
tecnologías:VoIP, GSMy PSTN.
2.1.7. Licenciamiento
Software libre
2.2. FreeSWITCH
2.2.1. Definición
FreeSWITCHesuna plataformade comunicacionesde software libre ycódigo
abiertopara lacreaciónde productosde voz,mensajería
instantáneayvideodisponible bajolaLicenciaPúblicade Mozilla.
La bibliotecaprincipal,denominada"libfreeswitch",puedeserincluídaen
programasexternosasícomo enaplicacionesindependientes.
2.2.2. Historia
El proyectoFreeSWITCHfue anunciadoporprimeravezenenerode 2006 enla
conferenciaETELde O'Reilly.Enjuniode 2007, FreeSWITCHfue seleccionadopor
la empresaTruphone parausode "carrier grade", y enagostode 2007, Gaboogie
anuncióque seleccionóaFreeSWITCHparasusserviciosde conferencias.
El primerlanzamientooficialde FreeSWITCH1.0.0(Fénix) se realizóel 26de mayo
de 2008. El 24 de juliode 2008, fue lanzadalaversión1.0.1 que esun "parche
menor". La versiónactual de FreeSWITCHesla1.2.15 que ha sidoliberadael 14 de
noviembre de 2013.
2.2.3. Requisitos Mínimos
- Equipo de cuatro núcleos
-4 GB de memoria
-procesador de 2,0 GHz
2.2.4. Características
FreeSWITCHincluye variosmódulosque proveenaplicacionespordefectocomo
conferencias, XML-RPCparacontrolarllamadasentiemporeal, Respuestade Voz
Interactiva(IVR), Conversortexto-voz/ReconocimientoAutomáticode
Voz(CTV/RAH), RedTelefónicaConmutada(RTC),lacapacidadde interconexión
con circuitosanalógicosydigitales,protocolos Vozsobre
IP comoSIP,SCCP, H.323, XMPP, Google Talk,entre otros.10
5. Las aplicacionesque utilizanlabibliotecade FreeSWITCHpuedenserescritas
enC/C++, Python, Perl,Lua,JavaScriptusandoel
motor SpiderMonkey de Mozilla,JavayMicrosoft.NET a travésdel Microsoft
CLR o a travésde Mono. Ademásde eso,FreeSWITCHexpone APIsyaplicaciones
para el control de llamadasyfuncionalidadIVRparael usodel programador.11
El manejode llamadaspuede realizarseatravésdel DialplanXMLo mediante la
interfazEventSocket,lacual esuna conexión socketal servidorFreeSWITCH.
Cualquierlenguaje de programaciónosoftware capazde comunicarse
vía socketpuede serusadoparacontrolarla actividaddel servidorFreeSWITCH.
FreeSWITCHtambiénviene conunabibliotecaparael EventSocket(ESL) o
"Envoltoriode ESL"para Erlang, JavaScript,Lua,Perl,PHP,Pythony Ruby.Esta
bibliotecase encargade abstraer losaspectostrivialesde laprogramacióncon
sockets.
2.2.5. Diferencias con Elastix
FreeSWITCHocupaun espacioentre losconmutadorespurosque simplemente
encaminanllamadas,como GnuGK y SER,y los que sonprincipalmente PBX oIVR,
como Asterisk ysusderivados.FreeSWITCHproporcionabloquesparael desarrollo
de aplicaciones –talescomouna central telefónica,unsistemade buzónde
voz, conferencias,otarjetastelefónicas –todoestopuede serdesarrollado
utilizandocualquierade loslenguajessoportados.
2.2.6. Protocolos
IAX2
H.323
SIP
GSM
UDPTL + T.38
RTP
2.2.7. Licenciamiento
Software libre
2.3. Trixbox
2.3.1. Definición
Trixbox esuna distribución delsistemaoperativo GNU/Linux,basadaen CentOS,
que tiene laparticularidadde serunacentral telefónica(PBX) porsoftware basada
enla PBX de códigoabierto Asterisk.Comocualquiercentral PBX,permite
interconectarteléfonosinternosde unacompañíay conectarlosa la red
6. telefónicaconvencional (RTB- Redtelefónicabásica).LaversiónTrixbox CEesla
continuaciónde AsteriskAtHome.
2.3.2. Historia
El proyectoTrixbox fue anunciadoporprimeravezen noviembre 2004 por Andrew
Gillissu primernombre "asterisk@home" al serun software de códigoabierto,
posee variosbeneficios,comoeslacreaciónde nuevasfuncionalidades.Algomuy
importante esque nosólosoportaconexiónala telefoníatradicional,sinoque
tambiénofrece servicios VoIP -vozsobre IP-,permitiendoasíahorrosmuy
significativosenel coste de lasllamadasinternacionales,dadoque éstasnoson
realizadasporlalíneatelefónicatradicional,sinoque utilizan Internet.Los
protocolosconloscualestrabaja puedenser SIP,H.323, IAX,IAX2y MGCP.
2.3.3. Requisitos Mínimos
- Equipo de cuatro núcleos
-4 GB de memoria
-procesador de 2,0 GHz
2.3.4. Características
trixbox dashboard
Asterisk(tm) OpenSource PBX
FreePBXherramientawebde administración
SugarCRM
Munin(enpaquete administrador)
HUDLite server/admin(enpaqueteadministrador)
IVRGraph(enpaquete administrador)
phpMyAdmin(enpaqueteadministrador)
Webmin(enpaquete administrador)
2.3.5. Diferencias con Elastix
Trixbox se ejecutasobre el sistemaoperativo CentOSyestádiseñadopara
empresasde 2 a 50 empleados.
2.3.6. Protocolos
IAX™ (Inter-AsteriskExchange)
7. IAX2™ (Inter-AsteriskExchange V2)
H.323
SIP(SessionInitiationProtocol)
MGCP (MediaGatewayControl Protocol)
SCCP(Cisco® Skinny®)
Traditional TelephonyInteroperability
FXS
FXO
DTMF support
PRI Protocols
2.3.7. Licenciamiento
Software libre
3. Redes Privadas Virtuales –OpenVPN
3.1. Definición
Una red privada virtual (RPV),en inglés:Virtual PrivateNetwork(VPN),esuna
tecnologíade redde computadoras que permite unaextensiónsegurade la redde área
local (LAN) sobre unared públicaono controladacomo Internet.Permite que la
computadoraenla redenvíe y recibadatossobre redescompartidaso públicascomosi
fuerauna redprivadacon toda lafuncionalidad, seguridadypolíticasde gestiónde una
redprivada.1
Esto se realizaestableciendounaconexiónvirtual puntoapuntomediante
el usode conexionesdedicadas,cifradoola combinaciónde ambosmétodos.
3.2. Requisitos mínimos de instalación
Un dispositivo (PC, portátil, tablet o smartphone)con conexión aInternet. Están
soportados equipos de sobremesa/portátiles con Windows (XP / Vista / 7 / 8), Apple
Mac OS o Linux así como plataformas móviles (tabletas y smartphones) con Apple
iOS y Android.
DisponerdeunacuentaTIC. Su nombre de usuario y contraseña de la cuenta TIC
serán los que le permitan la conexión remota VPN-SSL.
Un navegadorweb estándar. Actualmente, los navegadores soportados son Internet
Explorer, Mozilla Firefox y Safari.
En sistemas Microsoft Windows.
8. 3.3. Parámetros de Configuraciónde Servidor
Existen ficheros de configuración standard que deberían funcionar out of the box y que
podemos aprovechar para realizar nuestra configuración. Los ficheros de ejemplo que
podemos usar para ver la totalidad de opciones que tenemos disponibles se hallan
comprimidos en la siguiente ubicación ubicación:
/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
Para consultarlos teclear el siguiente comando para acceder a la ubicación de este archivo:
cd /usr/share/doc/openvpn/examples/sample-config-files
Seguidamente copiamos el archivo comprimido que dispone de los archivos de muestra de
configuración en la ubicación /etc/openvpn. Para ello tecleamos el siguiente comando:
cp -a /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
/etc/openvpn/
Seguidamente accedemos a la ubicación donde hemos copiado el archivo comprimido que
contiene los archivos de configuración:
cd /etc/openvpn
Para descomprimir el archivo que contiene los archivos de configuración tecleamos:
gunzipserver.conf.gz
Una vezdescomprimidoel archivoya podemosconsultar losejemplosde configuracióntanto
del cliente como del servidor. Para ver y modificar la configuraciónestándar para adaptarla a
nuestras necesidades tienen que teclear el siguiente comando en la terminal:
nano server.conf
Se abrirá el editor de texto en el que podrán ver de forma detallada las opciones de
configuración de ejemplo del servidor. Ahora tendréis que comprobar que la totalidad de
parámetros que se muestran en la tabla de este apartado estén dentro del fichero de
configuración de ejemploque es el que vamos a usar. En el caso de que los parámetros estén
comentados habrá que descomentarlos, en el caso que no existen se deberán añadir y/o
modificar.
9. Parámetro Descripción
dev tun Dispositivo virtual enel cual se creara el túnel.
proto udp Protocolode laconexiónVPN.Tambiénpodríamosusarel tcp.
port1194
Puertode escuchadel servicio.El puertode escuchase puede
modificar.
ca ca.crt Certificadode laautoridadcertificadoraque creamos.
cert whezzyVPN.crt Certificadodel servidorque hemoscreado.
key whezzyVPN.key Clave privadadel servidorque hemoscreado.
dh dh2048.pem Carga de losparámetrode Diffie Hellman.
Server 10.8.0.0
255.255.255.0
Indicamosque a losclientesdel VPNse lesasignaráIPdel
tipo10.8.0.0/24
ifconfig-pool-persistipp.txt
Se crea un fichero ipp.txtenel que se registranlasIPde los
clientesque se conectanal servidorVPN.
push “route192.168.1.0
255.255.255.0”
Con estalíneahacemosque los paquetesque tengancomodestino
la red192.168.1.0 viajenporla interfazdel túnel (tun0).De esta
formael cliente VPN se podrácomunicarcon cualquiermáquina
de la red 192.168.1.0.
keepalive10 120
El servidorVPN enviaráunpingcada10 segundosy como máximo
esperará120 segundosparaque el cliente de unacontestación.
tls-autta.key 0 Activaciónde laautentificaciónTLSenel servidor.
comp-lzo ActivarcompresiónLZOpara la transmisiónde datos.
max-clients10
Númeromáximode clientesque se puedenconectarde forma
simultanea.El valorse puede modificarsegúnlasnecesidades.
user nobody
Para limitarlosprivilegiosdel demoniode VPN hacemosque
funcione conel usuario nobody.
group nogroup
Para limitarlosprivilegiosdel demoniode VPN hacemosque
funcione conel grupo nogroup.
push “redirect-gateway
def1”
Para que la totalidadde tráficovayaa travésde nuestroVPN
push “dhcp-option DNS
10.8.0.1”
Estamosdefiniendoque laspeticionesDNSde los clientesse hagan
a travésdel servidorVPN ubicadoen 10.8.0.1
cipher AES-256-CBC
Por defectoel algoritmode cifradode OpenVPN esBlowfish con
un tamañode clave de 128 bits.Quiencreaque no essuficiente
puede añadirestalíneapara cambiarel algoritmode cifradoa AES
con un clave de cifradode 256 bits.Para vertodoslosalgoritmos
10. de cifradodisponiblesteclearopenvpn–show-ciphersenla
terminal.
persist-key
En caso que el servidorOpenVPNse caigalasclavesnotendrán
que ser analizadasde nuevo.
persist-tun
El dispositivo tun0notendráque ser reabiertoni cerradoenel
caso que tengamosque reiniciarel servidor.
status openvpn-status-log Log donde se guardará informaciónrespectoal túnel creado.
plugin
/usr/lib/openvpn/openvpn-
auth-
pam.so/etc/pam.d/login
Activacióndel scriptencargadode realizarlaautenticacióndel
usuarioy del cliente.(Verel apartado“Autentificacióndelcliente
mediante usuarioypassword”)
verb 3 Grado de detalle del estado del túnel en los logs.
Una veztenemoslistoel fichero de configuracióntan solotenemosque guardar los cambiosy
cerrarlo.
3.4. Parámetros de Configuraciónde Cliente
Una vezconfiguradoel servidorahorapasaremosa configurarel cliente.Paraellodentrode la
ubicación /etc/openvpn tecleamos el siguiente comando:
nano client.conf
Se abrirá el ficherode configuraciónenel que podránverun ejemplode configuraciónparaun
cliente estándar. Aseguramos que el fichero de configuración estándar tenga los parámetros
que se muestran en la tabla de este apartado. En caso de no tenerlos habrá que añadirlos
manualmente,enel casode que losparámetrosesténcomentadoshabráque descomentarlos
y en el caso que no existan se deberán añadir y/o modificar.
Parámetro Descripción
dev tun Dispositivovirtual enel cual se creara el túnel.
proto udp
Protocolode transmisiónde paquetesdel servidorVPN.Se puede usar
TCP.
remote
geekland.sytes.net
1194
DirecciónIPpública/HostDNSdinámicoypuertode escuchadel servidor
VPN.El puerto 1194 se puede cambiar.Si lo cambiamosdeberemos
adaptar el restode configuracionesal nuevopuerto
resolv-retry infinite
El cliente intentaráde formaindefinidaresolverladirecciónonombre de
hostindicadoporla directivaremote (geeekland.sytes.net).
11. nobind
A losclientesse lesasignarápuertosdinámicos(noprivilegiados)cuando
haya retornode paquetesdel servidoral cliente.
user nobody
Para limitarlosprivilegiosde losclientesque se conectanal VPN les
asignamosel usuario nobody.(nonecesarioparawindows)
group nogroup
Para limitarlosprivilegiosde losclientesque se conectanal VPN les
asignamosel grupo nogroup.(nonecesarioparawindows)
persist-key
En caso que el servidorOpenVPNseareiniciadonose tendránque volver
a leerlasclaves.
persist-tun
El dispositivo tun0notendráque ser reabiertoni cerradoenel caso que
tengamosque reiniciarel cliente Vpn.
ca ca.crt Certificadode laautoridadcertificadoraque creamos
cert usuariovpn.crt Certificadodel cliente
key usuariovpn.key Clave privadadel cliente
ns-cert-typeserver
Para prevenirataquesmaninthe middle.Conestafrase hacemosque los
clientessolopuedanaceptaruncertificadode servidordel tiposervidor
“nsCertType=server”.Eneste campopodríamosaplicarotras alternativas
similarescomoporejemplo“remote-cert-tlsserver“.
tls-authta.key 1 Activaciónde laautentificaciónTLSenel cliente.
cipher AES-256-CBC
Por defectoel algoritmode cifradode OpenVPN esBlowfish conun
tamañode clave de 128 bits.Quiencreaque noes suficientepuede
añadiresta líneapara cambiarel algoritmode cifradoa AES con un clave
de cifradode 256 bits.Para vertodos losalgoritmosde cifradodisponibles
teclearopenvpn–show-ciphersenlaterminal.
auth-user-pass
Para indicarque el cliente tieneque introducirunnombre de usuarioyun
password.
auth-nocache
Para evitarque lospasswordquedenalmacenadosenlamemoriacache
de losclientes.
comp-lzo ActivarcompresiónLZOpara la transmisiónde datos.
verb 3 Grado de detalle del estado del túnel