Установка 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 со следующими параметрами базовой конфигурации:
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-rfc5780FQDN_SERVER_NAME: укажите полное доменное имя (FQDN) вашего сервера, для которого настроена DNS-запись (A), напримерturn.example.comEXTERNAL_NAT_IPv4_ADDRESS: укажите внешний (публичный) IPv4-адрес сервера, доступный из интернета.SECRET_KEY: задайте длинный криптографически стойкий секрет для аутентификации (shared secret); сгенерировать его можно командой:openssl rand -base64 32
При желании можно ограничить TURN-сервер прослушиванием только локального адреса, который NAT сопоставляет с внешним адресом:
listening-ip=INTERNAL_TURNSERVER_IPv4_ADDRESSСоздадим каталог для размещения логов 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.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.