Установка и настройка сервера coturn (STUN/TURN) на Linux CentOS

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: STUNCentOS, NAT.

Данный сервер нам может понадобиться для корректной передачи медиаконтента, например, VOIP или посредством WebRTC. Рассмотрим его базовую установку и настройку. Приведенные ниже команды будут работать как для CentOS или Rocky Linux.

Подготовка системы

Для корректной работы сервера мы должны открыть порты в брандмауэре и отключить SELinux.

1. Настройка firewalld

Добавим порт 3478 для нешифрованных соединений:

firewall-cmd --add-port=3478/{udp,tcp} --permanent

Добавим порт 5349 для TLS:

firewall-cmd --add-port=5349/{udp,tcp} --permanent

Перезапускаем конфигурацию для применения правил:

firewall-cmd --reload

2. Отключение SELinux

Для отключения SELinux вводим 2 команды:

setenforce 0

sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

Проверяем, что настройки применились:

getenforce

Если видим:

Permissive

... перезагружаем сервер.

Установка и запуск

Установка пакета coturn выполняется из репозитория EPEL. Сначала ставим его командой:

yum install epel-release

После можно устанавливать сервер STUN/TURN:

yum install coturn

Разрешаем автозапуск сервиса и стартуем его:

systemctl enable coturn --now

Сервер готов принимать запросы.

Проверка работы

Для проверки сервера нам нужно установить клиента stun. Это можно сделать либо на тот же сервер, либо на другой компьютер.

а) Под Ubuntu достаточно выполнить одну команду:

apt-get install stun-client

б) В CentOS нужно установить старый репозиторий, после саму программу:

yum install https://download-ib01.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install stun

После установки программы можно попробовать отправить запрос на сервер. В зависимости от варианта Linux команды будут разные.

а) в CentOS:

stun-client <IP-адрес сервера STUN/TURN>

б) в Ubuntu:

stun <IP-адрес сервера STUN/TURN>

* в примерах ниже мы будем использовать вариант для CentOS.

И так, пример для выполнения тестового запроса:

stun-client 192.168.0.15

* где 192.168.0.15 — IP-адрес во внутренней сети нашего сервера STUN/TURN.

Мы должны получить ответ на подобие:

STUN client version 0.96
Primary: Open
Return value is 0x000001

... или:

STUN client version 0.97
Primary: Independent Mapping, Independent Filter, preserves ports, no hairpin
Return value is 0x000013

Для более подробного вывода добавим опцию v:

stun -v 192.168.0.15

Если сервер не работает, мы получим что-то на подобие:

STUN client version 0.96
Primary: Blocked or could not reach STUN server
Return value is 0x00001c

Если наш сервер доступен из сети Интернет, мы можем выполнить онлайн тест на портале Trickle ICE.

Настройка сервера

После установки сервер можно не настраивать — не будет работать с настройками по умолчанию. В данном разделе рассмотрим примеры некоторых настроек, которые могут показаться интересными.

1. Пароль для подключения

Чтобы ограничить подключения к нашему серверу, мы можем задать парольную фразу. Для этого открываем файл с настройками сервера:

vi /etc/coturn/turnserver.conf

И снимаем комментарии со строк:

use-auth-secret
...
static-auth-secret=north

... а также меняем north на любой пароль:

static-auth-secret=Str0ngPa$$word

Перезапускаем сервис:

systemctl restart coturn

2. Сервер за NAT (external-ip)

Если наш сервер сам находится за NAT, необходимо настроить значение для опции external-ip, которое укажет, какой адрес нужно использовать в качестве ретранслятора.

Открываем конфигурационный файл:

vi /etc/coturn/turnserver.conf

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

external-ip=60.70.80.91

б) если у нас множество адресов, запись может быть такой:

external-ip=60.70.80.91/172.17.19.101
external-ip=60.70.80.92/172.17.19.102

* где 60.70.80.91 и 60.70.80.92 — публичные адреса; 172.17.19.101 и 172.17.19.102 — приватные.

Перезапускаем сервис:

systemctl restart coturn

3. Настройка SSL

Передача данных возможна с применением шифрования. Для этого, во-первых, нам нужно получить сертификат; во-вторых — настроить сервер STUN.

Сертификат можно купить или получить бесплатно в Let's Encrypt. В данной инструкции будет использоваться купленный сертификат. Предположим, что его мы сохранили в файлах /etc/pki/coturn/public/cert.pem и /etc/pki/coturn/private/cert.key.

Теперь открываем конфигурационный файл сервера:

vi /etc/coturn/turnserver.conf

Снимаем комментарии и правим значения для опций:

cert=/etc/pki/coturn/public/cert.pem
...
pkey=/etc/pki/coturn/private/cert.key

Перезапускаем сервис:

systemctl restart coturn

4. Только STUN или TURN

По умолчанию, coturn запускается и работает в режиме STUN/TURN. Если нужно, чтобы работал только один из них, открываем настройки:

vi /etc/coturn/turnserver.conf

а) если нужен только STUN:

stun-only

б) если нужен только TURN:

no-stun

Перезапускаем сервис:

systemctl restart coturn

Использование бесплатных серверов STUN/TURN

Мы рассмотрели процесс установки и настройки своего сервера. Однако, как временное решение, мы можем использовать публичные бесплатные. Списки данных серверов можно легко найти в сети. Приведем несколько примеров.

Серверы в России

stun.chathelp.ru:3478

stun.comtube.ru:3478

stun.comtube.ru:3478

Серверы Google

stun.l.google.com:19302

stun1.l.google.com:19302

stun2.l.google.com:19302

stun3.l.google.com:19302

stun4.l.google.com:19302

# CentOS # Мультимедиа # Серверы # Rocky Linux
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет