Як встановити turn server на ubuntu для webrtc

У цій статті ви дізнаєтеся, як встановити TURN Server на Ubuntu 20.04 LTC для WebRTC, налаштувати Coturn з Long Term Credential Mechanism, налаштувати брандмауер IPTables, перевірити TURN сервер.

Сервер TURN також реалізує протокол STUN.

Coturn є вільним TURN-сервером з відкритим вихідним кодом.

Вимоги

Для установки Coturn Server мінімум, що вам знадобиться:

  • Встановлений мінімальний сервер Ubuntu 20.04 LTS (або ніколи)
  • Публічний IP для вашого сервера
  • SSL-сертифікати для піддоменів (в цій інструкції ми згенеруємо безкоштовний SSL-сертифікат Letsencrypt)

Встановлення сервера Coturn в Ubuntu/Debian

Для встановлення Coturn Server в Ubuntu 20.04 LTS запустіть:

$ sudo apt-get update
$ sudo apt-get install openssl coturn

Налаштування Coturn

Перед початком налаштування сервера TURN створіть резервну копію оригінального файлу конфігурації Coturn:

$ sudo cp /etc/turnserver.conf /etc/turnserver.orig

Генерація TLS сертифікатів

Для генерації безкоштовних TLS-сертифікатів для нашого TURN-сервера ми скористаємося інструментом certbot від Let's Encrypt.

$ sudo apt-get -y update
$ sudo apt-get -y install certbot

Після цього запустіть команду certbot для генерації сертифіката:

$ sudo certbot certonly --standalone

Майстер запитає вашу електронну пошту та доменне ім'я сервера.

Приклад виведення:

Якщо все в порядку, ваші нові згенеровані SSL/TLS сертифікати ви можете знайти в /etc/letsencrypt/live/YOUR_DOMAIN

Для генерації DH-файлу 2048 біт за допомогою OpenSSL виконується запуск (може зайняти тривалий час):

$ cd /etc/letsencrypt/live/YOUR_DOMAIN/
$ sudo openssl dhparam -out dhparam.pem 2048

Тепер додайте в конфігураційний файл сервера TURN рядки — /etc/turnserver.conf:

server-name=YOUR_DOMAIN
cert=/etc/letsencrypt/live/YOUR_DOMAIN/cert.pem
pkey=/etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem
dh-file=/etc/letsencrypt/live/YOUR_DOMAIN/dhparam.pem
cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"

Конфігурація сервера TURN

Заповніть файл /etc/turnserver.conf наступним конфігом, замінивши його на свій реальний, IP, ім'я користувача та паролі:

</pre>
# Replace with the realm of you server
realm=YourServerRealm
fingerprint
listening-ip=0.0.0.0
# Replace with your TURN server external IP
external-ip=SERVER_EXTERNAL_IP
listening-port=3478
tls-listening-port=5349
min-port=32769
max-port=65535
log-file=/var/log/turnserver.log
verbose
no-cli
no-loopback-peers
no-multicast-peers

cert=/etc/letsencrypt/live/YOUR_DOMAIN/cert.pem
pkey=/etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem
dh-file=/etc/letsencrypt/live/YOUR_DOMAIN/dhparam.pem
cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
#Long Term Credential Mechanism authentication
lt-cred-mech
user1=username1:password1
user2=username2:password2
<pre>

Зупинка/запуск сервера Coturn

$ sudo systemctl status coturn 
$ sudo systemctl start coturn
$ sudo systemctl stop coturn
$ sudo systemctl restart coturn

Запустіть Coturn при запуску

Увімкнути автоматичний запуск Coturn під час завантаження:

$ sudo systemctl enable coturn

Перевірте роботу сервісу Coturn

Перевірте, чи працює сервіс Coturn:

$ sudo ps -ax | grep turn

Приклад виведення:

Протестувати сервер Coturn

Для тестування конфігурації сервера Coturn скористайтеся безкоштовним сервісом Trickle ICE для тестування серверів TURN/STUN. Він створить з'єднання з вказаними TURN/ICE серверами, а потім почне збір кандидатів на сеанс з одним аудіопотоком.

Введіть ваш STUN або TURN URI, ім'я користувача TURN, пароль TURN, Add Server, а потім натисніть кнопку «Зібрати кандидатів».

Якщо ваш TURN/STUN сервер налаштований правильно, то в кінці ви повинні побачити: DONE.
Як показано на прикладі виводу:

Порти TURN-серверів

Порти за замовчуванням для серверів STUN і TURN, що використовуються WebRTC, є такими:

HTTP/HTTPS TCP 80/443
TURN/STUN TCP, UDP 3478
TURN TLS TCP, UDP 5349
TURN Relay UDP 32768-65535

Налаштування брандмауера IPtables для використання TURN

Clear IPtables rules:
# iptables -P INPUT ACCEPT
# iptables -F
# iptables -X

Вставте правила брандмауера для сервера TURN:

# iptables - -A INPUT -i lo -j ACCEPT
# iptables --A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables --A INPUT -s Your_IP -p tcp -m tcp --dport 22 -m state --state NEW -m comment --comment "Alow SSH from your IP " -j ACCEPT
# iptables --A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# iptables --A INPUT -p udp -m udp --dport 443 -j ACCEPT
# iptables --A INPUT -p tcp -m tcp --dport 3478 -j ACCEPT
# iptables --A INPUT -p udp -m udp --dport 3478 -j ACCEPT
# iptables --A INPUT -p tcp -m tcp --dport 5349 -j ACCEPT
# iptables --A INPUT -p udp -m udp --dport 5349 -j ACCEPT
# iptables --A INPUT -p udp -m udp --dport 49152:65535 -j ACCEPT
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT

Якщо у вас немає iptables-persistent, встановіть його:

$ sudo apt-get install iptables-persistent

Джерело: https://arstech.net/how-to-install-turn-server-on-ubuntu-for-webrtc/

Exit mobile version