Як встановити turn server на ubuntu для webrtc
У цій статті ви дізнаєтеся, як встановити TURN Server на Ubuntu 20.04 LTC для WebRTC, налаштувати Coturn з Long Term Credential Mechanism, налаштувати брандмауер IPTables, перевірити TURN сервер.
Сервер TURN також реалізує протокол STUN.
Coturn є вільним TURN-сервером з відкритим вихідним кодом.
Вимоги
Для установки Coturn Server мінімум, що вам знадобиться:
- Встановлений мінімальний сервер Ubuntu 20.04 LTS (або ніколи)
- Публічний IP для вашого сервера
- SSL-сертифікати для піддоменів (в цій інструкції ми згенеруємо безкоштовний SSL-сертифікат Letsencrypt)
Встановлення сервера Coturn в Ubuntu/Debian
Для встановлення Coturn Server в Ubuntu 20.04 LTS запустіть:
$ sudo apt-get update $ sudo apt-get install openssl coturn
Налаштування Coturn
Перед початком налаштування сервера TURN створіть резервну копію оригінального файлу конфігурації Coturn:
$ sudo cp /etc/turnserver.conf /etc/turnserver.orig
Генерація TLS сертифікатів
Для генерації безкоштовних TLS-сертифікатів для нашого TURN-сервера ми скористаємося інструментом certbot від Let's Encrypt.
$ sudo apt-get -y update $ sudo apt-get -y install certbot
Після цього запустіть команду certbot для генерації сертифіката:
$ sudo certbot certonly --standalone
Майстер запитає вашу електронну пошту та доменне ім'я сервера.
Приклад виведення:
Якщо все в порядку, ваші нові згенеровані SSL/TLS сертифікати ви можете знайти в /etc/letsencrypt/live/YOUR_DOMAIN
Для генерації DH-файлу 2048 біт за допомогою OpenSSL виконується запуск (може зайняти тривалий час):
$ cd /etc/letsencrypt/live/YOUR_DOMAIN/ $ sudo openssl dhparam -out dhparam.pem 2048
Тепер додайте в конфігураційний файл сервера TURN рядки — /etc/turnserver.conf:
server-name=YOUR_DOMAIN cert=/etc/letsencrypt/live/YOUR_DOMAIN/cert.pem pkey=/etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem dh-file=/etc/letsencrypt/live/YOUR_DOMAIN/dhparam.pem cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
Конфігурація сервера TURN
Заповніть файл /etc/turnserver.conf наступним конфігом, замінивши його на свій реальний, IP, ім'я користувача та паролі:
</pre> # Replace with the realm of you server realm=YourServerRealm fingerprint listening-ip=0.0.0.0 # Replace with your TURN server external IP external-ip=SERVER_EXTERNAL_IP listening-port=3478 tls-listening-port=5349 min-port=32769 max-port=65535 log-file=/var/log/turnserver.log verbose no-cli no-loopback-peers no-multicast-peers cert=/etc/letsencrypt/live/YOUR_DOMAIN/cert.pem pkey=/etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem dh-file=/etc/letsencrypt/live/YOUR_DOMAIN/dhparam.pem cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384" #Long Term Credential Mechanism authentication lt-cred-mech user1=username1:password1 user2=username2:password2 <pre>
Зупинка/запуск сервера Coturn
$ sudo systemctl status coturn $ sudo systemctl start coturn $ sudo systemctl stop coturn $ sudo systemctl restart coturn
Запустіть Coturn при запуску
Увімкнути автоматичний запуск Coturn під час завантаження:
$ sudo systemctl enable coturn
Перевірте роботу сервісу Coturn
Перевірте, чи працює сервіс Coturn:
$ sudo ps -ax | grep turn
Приклад виведення:
Протестувати сервер Coturn
Для тестування конфігурації сервера Coturn скористайтеся безкоштовним сервісом Trickle ICE для тестування серверів TURN/STUN. Він створить з'єднання з вказаними TURN/ICE серверами, а потім почне збір кандидатів на сеанс з одним аудіопотоком.
Введіть ваш STUN або TURN URI, ім'я користувача TURN, пароль TURN, Add Server, а потім натисніть кнопку «Зібрати кандидатів».
Якщо ваш TURN/STUN сервер налаштований правильно, то в кінці ви повинні побачити: DONE.
Як показано на прикладі виводу:
Порти TURN-серверів
Порти за замовчуванням для серверів STUN і TURN, що використовуються WebRTC, є такими:
HTTP/HTTPS | TCP | 80/443 |
TURN/STUN | TCP, UDP | 3478 |
TURN TLS | TCP, UDP | 5349 |
TURN Relay | UDP | 32768-65535 |
Налаштування брандмауера IPtables для використання TURN
Clear IPtables rules: # iptables -P INPUT ACCEPT # iptables -F # iptables -X
Вставте правила брандмауера для сервера TURN:
# iptables - -A INPUT -i lo -j ACCEPT # iptables --A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # iptables --A INPUT -s Your_IP -p tcp -m tcp --dport 22 -m state --state NEW -m comment --comment "Alow SSH from your IP " -j ACCEPT # iptables --A INPUT -p tcp -m tcp --dport 80 -j ACCEPT # iptables --A INPUT -p udp -m udp --dport 443 -j ACCEPT # iptables --A INPUT -p tcp -m tcp --dport 3478 -j ACCEPT # iptables --A INPUT -p udp -m udp --dport 3478 -j ACCEPT # iptables --A INPUT -p tcp -m tcp --dport 5349 -j ACCEPT # iptables --A INPUT -p udp -m udp --dport 5349 -j ACCEPT # iptables --A INPUT -p udp -m udp --dport 49152:65535 -j ACCEPT # iptables -P INPUT DROP # iptables -P FORWARD DROP # iptables -P OUTPUT ACCEPT
Якщо у вас немає iptables-persistent, встановіть його:
$ sudo apt-get install iptables-persistent
Джерело: https://arstech.net/how-to-install-turn-server-on-ubuntu-for-webrtc/