Как настроить turn server

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

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

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

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

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

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

firewall-cmd —add-port=3478/ —permanent

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

firewall-cmd —add-port=5349/ —permanent

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

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

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

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

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

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

Установка пакета 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

systemctl restart coturn

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

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

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

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

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

* где 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.

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

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

systemctl restart coturn

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

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

Читайте также:  Число гуа не работает

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

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

systemctl restart coturn

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

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

Источник

Как настроить turn server

Обновлено 29 апреля 2020

Введение

TURN (Traversal Using Relay NAT) — это протокол, который позволяет узлу за NAT или брандмауэром получать входящие данные через TCP или UDP соединения. Такая возможность особенно актуальна для узлов позади симметричных NAT, или брандмауэров, которые собираются стать принимающей стороной в соединении с одним конкретным узлом (peer-ом).

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

TURN сервер используется в крайнем случае, как посредник (relay), превращая p2p в клиент-сервер-клиентную связь, там где прямая связь невозможна. WebRTC успешно справляется с такими проблемами, используя протокол ICE, который, правда, требует использования дополнительных серверов (STUN, TURN). – технология, ориентированная на браузеры, которая позволяет соединить два клиента для видео-передачи данных. Основные особенности – внутренняя поддержка браузерами и способность соединять клиентов без использования дополнительных серверов – соединение peer-to-peer (p2p).

Установка соединения p2p – довольно трудная задача, так как компьютеры не всегда обладают публичными IP адресами. Из-за небольшого количества IPv4 адресов (а также в некоторых целях безопасности) был разработан механизм (Network Address Translation), который позволяет создавать приватные сети, например, для частного использования. Многие домашние роутеры сейчас поддерживают NAT и благодаря этому все домашние устройства имеют выход в интернет, хотя провайдеры интернета обычно предоставляют один IP адрес. Публичные IP адреса — уникальны в интернете, а приватные нет. Именно поэтому установка соединения p2p явяется не простой задачаей.

Подготовка LXC контейнера

Мы рекомендуем выполнить установку TURN сервера в отдельном контейнере, настроив его согласно инструкции.

Источник

Как настроить turn server

Статья больше подошла бы для блога, я но решил поделиться этими знаниями у нас в разделе статей.

На просторах интернета либо нет человеческой статьи как это сделать, либо я не умею искать 🙁

Мы у себя в MyChat используем TURN сервер под Windows, который я компилировал еще в далеком 2015 году, когда мы только реализовали звонки в чате, а сейчас мне очень захотелось его обновить. Вот тут я и столкнулся с задачей — собрать повторно TURN сервер, вроде как я это уже делал, но совершенно не помню, что и как.

Немного погуглив нашел общую инструкцию для сборки coturn в блоге Muaz Khan-а. Но там была «привычная» картина линуксоида — несколько пунктов сборки без подробностей.

Теперь попробуем путь криворукоговиндузятникаванкликмышкой.

Первое . Качаем эмулятор линукс консоли Cygwin, я взял 32-х битный вариант, так как наш сервер должен работать на всех системах, включая очень старые: https://cygwin.com/setup-x86.exe

Второе . Берем исходники coturn.

На всякий случай сделал зеркальные копии этих файлов у нас на хостинге:

Приступим к установке Cygwin.

Выбираем установку пакетов из Интернета:

Далее выбираем расположение папки с самим Cygwin и место для загрузки пакетов перед установкой, после установки их можно удалить.

На этапе выбора источника пакетов я отметил самый первый, но вы можете выбрать любой другой, если хотите, это не сильно принципиально. Главное чтобы там были нужные пакеты:

Читайте также:  Не работает хронограф для пневматики

Жмакаем далее и видим «информативное» окно:

В выпадающем списке «view» выбираем пункт «full» и начинаем искать нужные для нас пакеты, и для каждого из них в столбике «new», в списке, отмечаем самую последнюю версию из доступных (кроме тестовых):

Список пакетов, которые установил я (пакеты с «64» в названии можно не устанавливать, так как для 32-х битной системы они не понадобятся):

Находим по очереди все указанные пакеты и отмечаем версию для установки, жмем далее и наблюдаем за увлекательным процессом установки:

После окончания установки открываем папку в Проводнике с установленным Cygwin -> home -> (далее будет имя вашего пользователя) и сюда распакуйте Coturn, получится что-то вроде такого:

Теперь запускаем из корня папки эмулятора Cygwin.bat.

Так как я привык к нормальной навигации по структуре диска, запускаю mc (Midnight Commander).

Он сразу открывает домашнюю папку пользователя, где уже есть папка «coturn-master», заходим туда и запускаем «configure», чтобы он подготовил нам сборочный скрипт.

Makefile готов, можно приступать к сборке — пишем команду make, запускаем и ждем завершение:

И последний штрих пишем и выполняем make install:

Все, наш turn сервер готов к работе.

Осталось отделить котлеты от мух. Нам нужен минимальный функционал — роутинг звонков через сервер.

Я беспощадно урезаю содержимое turn сервера, чтобы не таскать ворох ненужных нам файлов. Сам процесс очистки я подробно описывать не буду, а покажу результат:

Источник

Русские Блоги

Установка и использование stun-сервера, Turn Server, Coturn Server

Условие: сервер с двумя сетевыми картами

Какой СТУН

STUN (Простой обход протокола пользовательских дейтаграмм через трансляторы сетевых адресов (NAT), NAT UDP, простой обход) — это сетевой протокол, который позволяет клиентам, расположенным за NAT (или несколькими NAT), найти свой собственный общедоступный сетевой адрес, проверить Узнайте, за каким типом NAT вы находитесь и к какому интернет-порту привязан NAT для определенного локального порта. Эта информация используется для установления связи UDP между двумя хостами, которые находятся за маршрутизатором NAT. Этот протокол определен RFC 3489. В настоящее время протокол RFC 3489 был заменен протоколом RFC 5389. В новом протоколе STUN определен как инструмент, облегчающий прохождение NAT, и не обеспечивает решение обхода независимо. Он также имеет обновленную версию RFC 7350, которая в настоящее время совершенствуется.

Скачать и установить stun

Загрузите исходный пакет на github
https://github.com/jselbie/stunserver
Обновление системы
yum update -y

После распаковки файла введите каталог
Установить зависимости
sudo yum groupinstall «Development Tools» # For g++, make, et. al.
sudo yum install boost-devel # For Boost
sudo yum install openssl-devel # For OpenSSL

После make будут сгенерированы три файла stunserver, stunclient и stuntestcdoe

stunserver — это файл сервера
stunclient — это файл клиента

Просмотр справочной информации
./stunserver —help

—mode Определяет режим. Есть два режима «основной» и «полный»
—primaryinterface указывает первый отслеживаемый локальный IP-адрес или сетевую карту
—altinterface Укажите второй контролируемый локальный IP-адрес или сетевую карту.
—primaryport указать первый порт прослушивания (по умолчанию 3478)
—altport указать первый порт прослушивания (по умолчанию 3479)
— тип семейной сети, 4 означает IPV4, 6 означает IPV6
—protocol указывает тип сетевого подключения, udp или tcp, по умолчанию используется udp
—maxconn установить максимальное количество соединений
—verbosity Устанавливает уровень журнала, 0 — наименьшее, 1 — второе, 2 — наибольшее и 3 — наибольшее. По умолчанию 0
—ddp Распределенный доступ запрещен. Когда эта опция включена, если клиент попадает на сервер со слишком большим количеством пакетов, ему будет отказано в доступе на короткое время, и последующая база данных IP будет удалена.
—primaryadvertised
—altadvertised —primaryadvertised и —altadvertised используются для установки ip общедоступной сети, вы должны использовать полный режим, только когда ваш stunserver работает в частной среде за NAT. Например, через внутреннее и внешнее сопоставление портов, через переадресацию услуг и так далее.
—configfile указать файл конфигурации
—help Просмотр справочной информации

Читайте также:  Что произойдет с компьютером если не работает вентилятор

Использование после трансляции адреса брандмауэра:
nohup ./stunserver —mode full —primaryinterface IP1 —altinterface IP2 —primaryadvertised public IP —altadvertised public IP

turn server

Официальный сайт:http://turnserver.sourceforge.net/index.php?n=Main.HomePage

Что такое поворот

Baidu энциклопедия
Протокол TURN позволяет объектам за NAT или межсетевыми экранами получать данные через TCP или UDP. Это особенно полезно в сетях, которые используют симметричный NAT (или межсетевой экран).
Полное имя TURN — Traversal Using Relay NAT, то есть обход NAT через Relay. Модель приложения TURN назначает адрес и порт TURNServer в качестве внешнего адреса и порта клиента, то есть пакеты, отправляемые пользователями частной сети, должны проходить через TURNServer для ретрансляции. Пересылка, в дополнение к преимуществам метода STUN, модель приложения этого метода также устраняет дефект, заключающийся в том, что приложение STUN не может проникать через симметричный NAT (SymmetricNAT) и аналогичные устройства межсетевого экрана, то есть независимо от того, какой тип NAT является выходом корпоративной сети / резидентной сети. / FW, может достигать проникновения NAT, в то время как TURN поддерживает приложения на основе TCP, такие как протокол H323. Кроме того, TURNServer контролирует распределение адресов и портов и может назначать пары адресов RTP / RTCP (номер порта RTCP — номер порта RTP плюс 1) в качестве адреса приема локального клиента, избегая экспорта NAT в номер порта адреса RTP / RTCP в соответствии с моделью приложения STUN. Произвольное распределение, так что клиент не может получить сообщение RTCP, отправленное одноранговым узлом (Когда одноранговый узел отправляет пакет RTCP, номер порта назначения по умолчанию равен номеру порта RTP плюс 1 для отправки)

Используйте среду:
Внутренний сетевой сервер openfire предоставляет видеоуслуги и использует stunserver для пересылки во внешнюю сеть. , , , , , В любом случае, stunserver не будет работать, не сможет проникнуть и не сможет гарантировать успешность видеозвонков, поэтому используйте turnserver.

установка

Установить путать зависимую библиотеку
wget http://savannah.spinellicreations.com/confuse/confuse-2.7.tar.gz
tar axf confuse-2.7.tar.gz
cd confuse-2.7
./configure
make && make install && echo $?

Установите libconfuse-devel
yum install libconfuse-devel -y

Загрузите загруженный файл turnserver-0.7.3.tar.bz2 и распакуйте его.
tar axf turnserver-0.7.3.tar.bz2
Скомпилируйте и установите
cd turnserver-0.7.3
./configure
make && make install && echo $?
Генерация и изменение файлов конфигурации
cp extra/turnserver.conf.template /etc/turnserver.conf
vim /etc/turnserver.conf

Создание и изменение файлов сертификации
cp extra/turnusers.txt.template /etc/turnusers.txt

toto — пользователь по умолчанию, пароль — пароль по умолчанию, за которым следует фиксированный формат, вы можете изменить имя пользователя и пароль

Coturn (поворот) (рекомендуется) (рекомендуется устанавливать с centos7 и выше)

Coturn является обновленной версией хода, тот же автор, старый автор хода больше не поддерживается, при следующей загрузке coturn нужно перейти в githup, рекомендуется использовать coturn

Установить котурн

После загрузки введите каталог установки
Проверьте файл INSTALL, процесс установки подробно объяснен (многословно)
Установить зависимости

Если ошибка libevent2 конфликтует с libevent, удалите libevent и установите libevent 2. Если у источника yum нет libevent2, перейдите к пакету rpm или пакету исходного кода. Если есть другие ошибки, это будет рассматриваться как ошибка.
Скомпилируйте и установите
Используйте c ++ вместо c компиляции

После завершения установки он будет сгенерирован (centos7 сгенерирует исполняемый файл в каталоге bin каталога установки coturn)
/usr/local/bin/turnadmin
/usr/local/bin/turnserver
/usr/local/bin/turnutils_natdiscovery
/usr/local/bin/turnutils_oauth
/usr/local/bin/turnutils_peer
/usr/local/bin/turnutils_stunclient
/usr/local/bin/turnutils_uclient

centos7 Изменить переменные среды
vim /etc/profile
#COTURN

конфигурация

Создать файл аутентификации (пароль MD5)

Создайте основной файл конфигурации

Измените файл конфигурации (добавьте по одной в соответствии с инструкциями внутри) (ниже моя конфигурация)

-u указать пароль пользователя -w -p порт -v использовать Verbose и, наконец, указать порт прослушивания

Конфигурация с одной сетевой картой

Запустить сервис
turnserver -o -a
Тест соединения
turnutils_uclient -v -t -T -y -u USERNAME -w PASSWORD IP
Успех заключается в следующем

Источник

Оцените статью