TURN-сервер позволяет установить прямое соединение для IP-телефонии? преодолев NAT. От также может использоваться в качестве TURN-сервера и шлюза для сетевого трафика общего назначения.
Основная концепция TURN
Шаг 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 — Установка
1. Установите coturn
на сервере:
apt-get install coturn
2. Временно остановите coturn:
systemctl stop coturn
Шаг 3 — Настройка
1. Для того чтобы включить TURN-сервер, откройте файл /etc/default/coturn
и уберите #
перед TURNSERVER_ENABLED=1,
настройки хранятся в файле /etc/turnserver.conf,
переместите исходную версию этого файла с помощью команды остановки coturn:
systemctl stop coturn
mv /etc/turnserver.conf /etc/turnserver.conf.orig
2. Откройте (создайте) файл /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
3. Создайте секрет с помощью команды:
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-сервера
1. Запустите coturn, выполнив команду:
systemctl start coturn
2. Проверьте, работает ли cotrun при помощи команды:
systemctl status coturn.