ZxChat with a TURN server/Annex: Installing a TURN server on Centos 7/es

From ZeXtras Suite Wiki

Jump to: navigation, search
Idioma: English  • español • português

EXCENCIÓN DE RESPONSABILIDAD

  • Esta guía trata sobre productos no desarrollados ni soportados por Zextras, por lo que se entiende que es un ejemplo práctico de implementación. Por favor úsela solo como referencia y procure información en línea sobre su sistema operativo y sobre servidores TURN cuando implemente una infraestructura en ambiente de producción.
  • Un servidor TURN requiere un ancho de banda considerable dependiendo del número de videollamadas mantenidas al mismo tiempo.


TURN en CentOS 7 con reTurn

reTurn es un servidor y libreria cliente STUN/TURN open source altamente eficiente desarrollado en C++. Es una implementación de los últimos RFCs: RFC5389 (STUN), y RFC5766 (TURN). Es la plataforma que elegimos para pruebas internas durante el desarrollo de ZeXtras Chat y para nuestro ambiente de producción.

Esta guía se concentrará unicamente en el componente TURN, pues STUN es implementado nativamente en ZeXtras Suite.

Información del paquete y dependencias

reTurn no se encuentra en el repositorio oficial de CentOS. Sin embargo el paquete resiprocate-turn-server se puede encontrar en el paquete EPEL de Fedora (sin embargo esto no está disponible para usar en CentOS)

[root@localhost ~]# yum info resiprocate-turn-server

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.fastbull.org
 * epel: mirrors.n-ix.net
 * extras: centos.fastbull.org
 * updates: centos.fastbull.org
Available Packages
Name        : resiprocate-turn-server
Arch        : x86_64
Version     : 1.10.0
Release     : 21.el7
Size        : 195 k
Repo        : epel/x86_64
Summary     : ICE/STUN/TURN server
URL         : http://www.resiprocate.org
License     : VSL
Description : reTurn is the TURN server developed as part of the reSIProcate project.
            : TURN (RFC 5766) provides a standardised solution for VoIP applications
            : to find the most efficient way to route media streams when NAT and
            : firewall devices may be present.
            : reTurn provides a high-quality, low maintenance solution for serving
            : small and large IP telephony installations.  It has been used successfully
            : with a variety of SIP and Jabber applications, including Lumicall,
            : Jitsi, Empathy and Psi.
            : reSIProcate is a framework that aims to fully implement the SIP protocol
            : in first class C++.  It is intended for use in other applications,
            : such as the repro SIP proxy.

Instalación y configuración

Construyendo el paquete RPM

Instalar rpmbuild:

 [root@localhost ~]# yum -y install rpm-build

Instalar todas las dependencias del paquete:

 [root@localhost ~]# yum install gcc-c++ libtool automake autoconf \
   asio-devel boost-devel cajun-jsonapi-devel c-ares-devel \
   cppunit-devel gperf db4-cxx-devel db4-devel openssl-devel \
   mysql-devel pcre-devel perl popt-devel python-devel \
   python-pycxx-devel freeradius-client-devel xerces-c-devel postgresql-devel

Descargar el último paquete tgz desde el sitio web de reSIProcate en http://www.resiprocate.org/files/pub/reSIProcate/releases/

Construir el rpm a partir del paquete descargado:

 [root@localhost ~]# rpmbuild -tb reciprocate-1.10.1.tar.gz

Cuando termine encontrará los archivos rpm apropiados en rpmbuild/RPMS/x86_64

Instalación del paquete

 [root@localhost ~]# rpm -ivh rpmbuild/RPMS/x86_64/resiprocate-turn-server-1.10.1-1.el7.centos.x86_64.rpm

reTurn no se iniciará automáticamente, por lo que deberá iniciarlo manualmente ejecutando:

[root@localhost ~]# /usr/sbin/reTurnServer /etc/reTurn/reTurnServer.config

Asegúrese que el servidor esté activo ejecutando: [root@localhost ~]# netstat -npl | grep -i turn

El resultado debe ser algo así:

tcp        0      0 0.0.0.0:3478            0.0.0.0:*               LISTEN      28885/reTurnServer  
tcp6       0      0 :::3478                 :::*                    LISTEN      28885/reTurnServer   
udp        0      0 0.0.0.0:3478            0.0.0.0:*                           28885/reTurnServer  
udp6       0      0 :::3478                 :::*                                28885/reTurnServer  


Configuración

El archivo principal de configuración es /etc/reTurn/reTurnServer.config, y lo único que se debe editar es TurnAddress colocando la dirección ip del servidor. Si desea configurar SSL/TLS vea la sección # SSL/TLS Certificate Settings del archivo, mientras que las configuraciones de red se pueden encontrar en la sección # Transport Settings.

Configurar un usuario del servidor TURN

Por default, reTurn usa el archivo /etc/reTurn/users.txt como su base de datos de usuarios.

Como se describe en la sección # Authentication settings del archivo de configuración, los archivos usan el siguiente formato:

login:password:realm:state

además, los hashes de contraseñas son almacenados por default (UserDatabaseHashedPasswords configuraciones).

ZeXtras Chat se autentica con un único usuario, especificado en la configuración del zimlet. Sugerimos enfáticamente que se genere una contraseña aleatoria fuerte usando apg:

root@ubuntu:~# apg -M SNCL -m32 -x32 -n1
tixcowdEmEiguc5OxApnalbOmCogfok(

Para crear una contraseña aleatoria puede usar la función md5sum

     echo -n user:realm:password | md5sum

e.g:

 root@centos:~# echo -n "zextraschat:reTurn:tixcowdEmEiguc5OxApnalbOmCogfok(" | md5sum

 9dc1355c06c65b0b7abaa829a80f8e6c -  

Despues de generar una contraseña fuerte agregue la línea relevante al archivo users.txt mencionado antes; Ej.: user - zextraschat

hashed pass - 9dc1355c06c65b0b7abaa829a80f8e6c

realm - reTurn (the default realm, can be changed in the config file)

state - authorized

zextraschat:9dc1355c06c65b0b7abaa829a80f8e6c:reTurn:authorized

OUna vez que el servidor esté ejecutándose y el usuario esté configurado, puede proceder a configurar el zimlet ZeXtras Chat para usar su nuevo servidor TURN.

Personal tools