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

From ZeXtras Suite Wiki

Jump to: navigation, search
Língua: English  • español • português

ISENÇÃO DE RESPONSABILIDADE

  • Este guia trata sobre produtos não desenvolvidos nem suportados por Zextras, e se entende que é um exemplo prático de implementação. Por favor use-o somente como referência e procure informação online sobre seu sistema operacional e sobre servidores TURN quando for implementar uma infraestrutura em ambiente de produção.
  • Um servidor TURN requer um largo de banda considerável dependendo do número de videochamadas mantidas ao mesmo tempo.

TURN en CentOS 7 con reTurn

reTurn é um servidor e biblioteca cliente STUN/TURN open source altamente eficiente desenvolvido em C++. É uma implementação dos últimos RFCs: RFC5389 (STUN), e RFC5766 (TURN). É a plataforma que escolhimos para testes internos durante o desenvolvimento de ZeXtras Chat e para nosso ambiente de produção.

Este guia foca-se unicamente no componente TURN, pois STUN é implementado nativamente em ZeXtras Suite.

Informação do pacote e dependências =

reTurn não se encontra no repositório oficial de CentOS. Contudo, o pacote resiprocate-turn-server se pode encontrar no pacote EPEL de Fedora (no entanto isto não está disponível para usar em 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.

Instalação e configuração

Construindo o pacote RPM

Instalar rpmbuild:

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

Instalar todas as dependências do pacote:

 [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

Baixar o último pacote tgz desde o sitio web de reSIProcate em http://www.resiprocate.org/files/pub/reSIProcate/releases/

Construir o rpm a partir do pacote descarregado:

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

Quando terminar encontrará os arquivos rpm apropriados em rpmbuild/RPMS/x86_64

Instalação do pacote

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

reTurn não se iniciará automáticamente, pelo que deverá iniciá-lo manualmente executando:

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

Certifique-se que o servidor esteja ativo executando: [root@localhost ~]# netstat -npl | grep -i turn

O resultado deve ser algo assim:

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  


Configuração

O arquivo principal de configuração é /etc/reTurn/reTurnServer.config, e o único que se deve editar é TurnAddress colocando o endereço ip do servidor. Se deseja configurar SSL/TLS veja a seção # SSL/TLS Certificate Settings do arquivo, enquanto as configurações de rede se podem encontrar na seção # Transport Settings.

Configurar um usuário do servidor TURN

Por padrão, reTurn usa o arquivo /etc/reTurn/users.txt como sua base de dados de usuários.

Como se descreve na seção # Authentication settings do arquivo de configuração, os arquivos usam o seguinte formato:

login:password:realm:state

Todavia, os hashes das senhas são armazenados por padrão (UserDatabaseHashedPasswords configurações).

ZeXtras Chat se autentica com um único usuário, especificado na configuração do zimlet. Sugerimos enfáticamente que seja gerada uma senha aleatória forte usando apg:

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

Para criar uma senha aleatória você pode usar a função md5sum

     echo -n user:realm:password | md5sum

ex:

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

Depois de gerar uma senha forte adicione a linha relevante ao arquivo users.txt mencionado antes; Ex.: user - zextraschat

hashed pass - 9dc1355c06c65b0b7abaa829a80f8e6c

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

state - authorized

zextraschat:9dc1355c06c65b0b7abaa829a80f8e6c:reTurn:authorized

Uma vez que o servidor esteja em execução e o usuário esteja configurado, pode proceder a configurar o zimlet ZeXtras Chat para usar seu novo servidor TURN.

Personal tools