SCROLL
Среднее время на прочтение: 2 мин.

Установка TURN/STUN-сервера Coturn на Debian 13

TURN/STUN-сервер (Coturn) — это серверная инфраструктура для обеспечения прямого P2P-соединения между клиентами, находящимися за NAT или Firewall, чаще всего в контексте WebRTC, VoIP и видеоконференций.

Описание:

  • STUN (Session Traversal Utilities for NAT) — это протокол, позволяющий клиенту за NAT определить свой внешний (публичный) IP-адрес и тип трансляции, чтобы установить прямое P2P-соединение, например в WebRTC.
  • TURN (Traversal Using Relays around NAT) — это сервер-ретранслятор, через который проходит медиатрафик, если прямое соединение установить невозможно, обеспечивая гарантированную доставку данных между участниками.

Рассмотрим как установить и настроить Coturn на Debian 13.

Установка

Устанавливаем Coturn из репозиториев Debian:

apt install coturn -y

Настройка

Сперва включим TURN-сервер, для этого в файле /etc/default/coturn и уберите # перед TURNSERVER_ENABLED=1.

Далее исходную версию файла конфигурации /etc/turnserver.conf переименуюм, для того чтобы остался оригинальный файл конфигурации со всеми комментариями по параметрам:

mv /etc/turnserver.conf /etc/turnserver.conf.orig

Создаем файл /etc/turnserver.conf со следующими параметрами базовой конфигурации:

/etc/turnserver.conf
listening-port=3478

min-port=49152
max-port=65535

external-ip=EXTERNAL_NAT_IPv4_ADDRESS

realm=FQDN_SERVER_NAME
use-auth-secret
static-auth-secret=SECRET_KEY
fingerprint

log-file=/var/log/turnserver/turn.log

no-cli
no-multicast-peers

no-rfc5780
no-stun-backward-compatibility
response-origin-only-with-rfc5780
  • FQDN_SERVER_NAME : укажите полное доменное имя (FQDN) вашего сервера, для которого настроена DNS-запись (A), например turn.example.com
  • EXTERNAL_NAT_IPv4_ADDRESS : укажите внешний (публичный) IPv4-адрес сервера, доступный из интернета.
  • SECRET_KEY : задайте длинный криптографически стойкий секрет для аутентификации (shared secret); сгенерировать его можно командой:
    • openssl rand -base64 32

При желании можно ограничить TURN-сервер прослушиванием только локального адреса, который NAT сопоставляет с внешним адресом:

/etc/turnserver.conf
listening-ip=INTERNAL_TURNSERVER_IPv4_ADDRESS
Убедитесь что ваш firewall разрешает входящий трафик к TURN-серверу на портах, которые настроены для прослушивания (по умолчанию: 3478 и 5349 для TURN-трафика — необходимо открыть как TCP, так и UDP, а также диапазон 49152–65535 для UDP-ретрансляции).

Создадим каталог для размещения логов TURN-сервеа и назначим на него соотвествующие права:

mkdir -p /var/log/turnserver
chown turnserver:turnserver /var/log/turnserver

По завершению редактирования файла настроек, не забывааем перезагрузить сервис coturn для применения параметров:

systemctl restart coturn

Настройка SSL

Для безопасности можно так же настроить coturn на использование TLS/DTLS для шифрования соединений.

Для этого надо получить белый SSL-сертификат (например Let’s Encrypt), указать путь к сертификату и ключу в turnserver.conf, а также настройте параметр tls-listening-port, чтобы сервер принимал защищённые подключения:

tls-listening-port=5349
cert=/path/to/your/certificate.pem
pkey=/path/to/your/privatekey.pem

Обязательно убедитесь что у служебного пользователя turnserver есть соотвествующие права на чтение сертификата и его закрытого ключа, к примеру вот так можно эти права назначить:

chgrp turnserver /etc/letsencrypt/archive/FQDN/
chmod 644 /etc/letsencrypt/archive/FQDN/

Проверка

Если все сделано правильно, то проверить что TURN-сервер работает и порты прослушиваются, можно выпонив команду:

ss -tulpn | grep turn
udp   UNCONN 0      0      1.1.1.1:5349       0.0.0.0:*    users:(("turnserver",pid=8350,fd=27))
udp   UNCONN 0      0      1.1.1.1:5349       0.0.0.0:*    users:(("turnserver",pid=8350,fd=26))
udp   UNCONN 0      0      1.1.1.1:3478       0.0.0.0:*    users:(("turnserver",pid=8350,fd=25))
udp   UNCONN 0      0      1.1.1.1:3478       0.0.0.0:*    users:(("turnserver",pid=8350,fd=24))
tcp   LISTEN 0      1024   1.1.1.1:5349       0.0.0.0:*    users:(("turnserver",pid=8350,fd=23))
tcp   LISTEN 0      1024   1.1.1.1:5349       0.0.0.0:*    users:(("turnserver",pid=8350,fd=15))
tcp   LISTEN 0      1024   1.1.1.1:3478       0.0.0.0:*    users:(("turnserver",pid=8350,fd=21))
tcp   LISTEN 0      1024   1.1.1.1:3478       0.0.0.0:*    users:(("turnserver",pid=8350,fd=13))

Либо если что то не работает, то анализируем логи расположенные — /var/log/turnserver.

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.