ZxChat with a TURN server/Annex: Installing a TURN server on Centos 7/pt
From ZeXtras Suite Wiki
Língua: | English • español • português |
---|
![]() |
Warning! This wiki is outdated and not maintained anymore, please refer to the new Zextras Documentation Hub at https://docs.zextras.com |
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.