Реализация нашего собственного сервера STUN/TURN для приложения WebRTC

Я работаю над приложением webrtc и должен реализовать следующий сервер TURN.

https://code.google.com/p/rfc5766-turn-server/

Я следую этому уроку.

http://www.dialogic.com/den/developer_forums/f/71/t/10238.aspx

и он говорит ссылаться на сервер TURN следующим образом, в коде javascript, где создается RTCPeerConnection.

var pc_config = {"iceServers": [{"url": "stun:stun.l.google.com:19302"},
  {"url":"turn:my_username@<turn_server_ip_address>", "credential":"my_password"}]};

pc_new = new webkitRTCPeerConnection(pc_config);

Я немного запутался, почему мы ссылаемся на общедоступный сервер Google STUN. Я думал, что сервер RFC5766 TURN имеет STUN внутри.

RFC5766 только сервер TURN? а не STUN сервер? Разве мы не можем реализовать свой собственный сервер STUN, а не использовать один из предоставленных Google?

Извините за такой наивный вопрос. Я новичок в WebRTC.

Благодарю.

2 ответа

Решение

TURN это расширение STUN, поэтому сервер TURN также имеет функции STUN.

https://code.google.com/p/rfc5766-turn-server/ также работает как STUN, поэтому вы можете попробовать написать что-то вроде этого:

var pc_config = {"iceServers": [{"url":"turn:my_username@<turn_server_ip_address>", "credential":"my_password"}]};

pc_new = new webkitRTCPeerConnection(pc_config);

Просто добавив в ответ Игоря,

coturn это вилка rfc5766-turn-serverосновные функции одинаковы, с дополнительными функциями и добавлением новых функций, поэтому я бы посоветовал вам использовать его вместо.

по словам самого автора:

Этот проект возник из проекта rfc5766-turn-server ( https://code.google.com/p/rfc5766-turn-server/). Есть много новых расширенных спецификаций TURN, которые выходят далеко за рамки оригинального документа RFC 5766. Этот проект принимает код rfc5766-turn-server как стартер и добавляет к нему новые расширенные функции.

Что касается установки, то ее легко установить на машины с Linux, не пробуя в других ОС.

простой способ:

sudo apt-get install coturn

Если вы скажете "нет", я хочу использовать новейшие технологии, вы можете загрузить исходный код со страницы загрузки и установить его самостоятельно, например:

sudo -i     # ignore if you already in admin mode
apt-get update && apt-get install libssl-dev libevent-dev libhiredis-dev make -y    # install the dependencies
wget -O turn.tar.gz http://turnserver.open-sys.org/downloads/v4.5.0.6/turnserver-4.5.0.6.tar.gz     # Download the source tar
tar -zxvf turn.tar.gz     # unzip
cd turnserver-*
./configure
make && make install 

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

Пример команды для запуска сервера TURN:

sudo turnserver -a -o -v -n  --no-dtls --no-tls -u test:test -r "someRealm"

описание команды:

  • -a - Использовать механизм долгосрочных учетных данных
  • -o - запустить серверный процесс как демон
  • -v - "Умеренный" подробный режим.
  • -n - нет файла конфигурации
  • --no-dtls - не запускать прослушиватели DTLS
  • --no-tls - не запускать слушателей TLS
  • -u - учетные данные пользователя, которые будут использоваться
  • -r - область по умолчанию для использования, требуется TURN REST API

Теперь вы можете использовать сервер TURN в вашем приложении WebRTC как:

var peerConnectionConfig = {
  iceServers: [{
    urls: YOUR_IP:3478,
    username: 'test',
    password: 'test'
  }]
}

Недавно я перехватывал пакеты своего сервера Kurento WebRTC и понял, что он использует этот www.stunprotocol.orgдомен для STUN-запросов. Инструмент под названиемstuntman может создать для вас простой STUN-сервер.

Просто выполните следующие действия на хосте Linux:
1.sudo apt-get update
2.sudo apt-get install stuntman-server
3.stunserver --mode full --primaryinterface 100.101.102.103(который должен быть заменен 100.101.102.103 на ваш IP-адрес)
4. Откройте эту ссылку, чтобы протестировать свой STUN-сервер.
например, STUN или TURN URI: stun:100.101.102.103:3478

У меня все идет хорошо.

Другие вопросы по тегам