TURN-сервер позволяет установить прямое соединение для IP-телефонии преодолев NAT. От также может использоваться в качестве TURN-сервера и шлюза для сетевого трафика общего назначения.
Основная концепция TURN
0
Шаг 1 — Настройка записей в DNS
Общие DNS-записи:
turn.example.com. 14400 IN A 10.0.0.1 turn.example.com. 14400 IN AAAA 2001:db8:1234::1 stun.example.com. 14400 IN A 10.0.0.1 stun.example.com. 14400 IN AAAA 2001:db8:1234::1 @ IN NAPTR 10 0 "s" "RELAY:turn.udp" "" _turn._udp.example.com.
Следующие DNS-записи должны использоваться, если вы устанавливаете только один TURN/STUN-сервер:
_stun._udp.example.com. 14400 IN SRV 5 0 3478 turn.example.com. _stun._tcp.example.com. 14400 IN SRV 5 0 3478 turn.example.com. _stuns._tcp.example.com. 14400 IN SRV 5 0 5349 turn.example.com. _turn._udp.example.com. 14400 IN SRV 5 0 3478 turn.example.com. _turn._tcp.example.com. 14400 IN SRV 5 0 3478 turn.example.com. _turns._tcp.example.com. 14400 IN SRV 5 0 5349 turn.example.com.
Для лучшей производительности и отказоустойчивости вы должны иметь по крайней мере два TURN/STUN-сервера. Для двух нужно немного изменить DNS-записи:
_stun._udp.example.com. 14400 IN SRV 5 50 3478 turn1.example.com. _stun._udp.example.com. 14400 IN SRV 10 50 3478 turn2.example.com. _stun._tcp.example.com. 14400 IN SRV 5 50 3478 turn1.example.com. _stun._tcp.example.com. 14400 IN SRV 10 50 3478 turn2.example.com. _stuns._tcp.example.com. 14400 IN SRV 5 50 5349 turn1.example.com. _stuns._tcp.example.com. 14400 IN SRV 10 50 5349 turn2.example.com. _turn._udp.example.com. 14400 IN SRV 5 50 3478 turn1.example.com. _turn._udp.example.com. 14400 IN SRV 10 50 3478 turn2.example.com. _turn._tcp.example.com. 14400 IN SRV 5 50 3478 turn1.example.com. _turn._tcp.example.com. 14400 IN SRV 10 50 3478 turn2.example.com. _turns._tcp.example.com. 14400 IN SRV 5 50 5349 turn1.example.com. _turns._tcp.example.com. 14400 IN SRV 10 50 5349 turn2.example.com.
Не забудьте настроить DNS-записи (A и AAAA) для turn1.example.com
и turn2.example.com
как упоминалось выше.
Теоретически, можно добавить вторую запись A и AAAA для turn.example.com
и stun.example.com
, но это не рекомендуемый способ.
Шаг 2 — Установка
Сначала нужно установить coturn
на сервере.
apt-get install coturn
Временно остановим coturn
systemctl stop coturn
Шаг 3 — Настройка
Для того чтобы включить TURN-сервер, откройте файл /etc/default/coturn
и уберите #
перед TURNSERVER_ENABLED=1
.
Настройки хранятся в файле /etc/turnserver.conf
. В начале переместим исходную версию этого файла с помощью команды:
Временно остановим coturn
systemctl stop coturn
mv /etc/turnserver.conf /etc/turnserver.conf.orig
Затем мы откроем(создадим) файл /etc/turnserver.conf
со следующим содержимым:
listening-port=3478 tls-listening-port=5349 fingerprint lt-cred-mech use-auth-secret static-auth-secret=replace-this-secret realm=turn.example.com total-quota=100 stale-nonce=600 cert=/etc/letsencrypt/live/turn.example.com/cert.pem pkey=/etc/letsencrypt/live/turn.example.com/privkey.pem cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384" no-sslv3 no-tlsv1 no-tlsv1_1 #no-tlsv1_2 dh2066 no-stdout-log log-file=/var/tmp/turn.log #log-file=/dev/null no-loopback-peers no-multicast-peers proc-user=turnserver proc-group=turnserver
Создайте секрет с помощью команды
sed -i "s/replace-this-secret/$(openssl rand -hex 32)/" /etc/turnserver.conf
Шаг 4 — Регистрация Let's Encrypt сертификатов
Для Let's Encrypt сертификатов будем использовать certbot от EFF.
apt-get install snapd snap install --classic certbot ln -s /snap/bin/certbot /usr/bin/certbot certbot certonly --standalone --rsa-key-size 4096 -m mail@example.com -d turn.example.com
За 30 (и 7) дней до истечения срока действия сертификатов вы получите электронное письмо на holu@example.com.
Шаг 5 — Запуск и испытание TURN/STUN-сервера
Запустите coturn, выполнив
systemctl start coturn
Проверить, работает ли cotrun можно при помощи команды
systemctl status coturn.