Я пытаюсь настроить сервер STUN / TURN на своем локальном компьютере для моего приложения webrtc. Я решил использовать coturn. Обратите внимание, что мой сервер работает за NAT.

Итак, я запустил свою виртуальную машину Ubuntu и установил ее. После прочтения вики он заработал, по крайней мере, в моей локальной сети. В целях тестирования я использую этот сайт. Поэтому, когда я пробую его там с 192.168.178.25:3478, он работает. Когда я пробую с "public-ip": 3478, это не так.

Это подсказало мне, что он работает локально, и это должно быть проблемой порта / NAT. Что я сделал:

1) Я установил виртуальную машину в режим моста

2) Я открыл порт 3478 на своем роутере. Чтобы проверить, действительно ли это работает, я использовал telnet на удаленной машине, и это сработало. Другой тест заключался в том, что я установил быстрый сервер apache на своей локальной машине на порт 3478, и к нему можно было получить доступ извне. Это сказало мне, что существует или должна быть проблема с портом / NAT, и мой сервер очереди должен работать.

Любые идеи?

Я запускаю свой сервер с помощью следующей команды:

"sudo turnserver -X" public-ip "-listening-port = 3478 -v

Turnserver.conf выглядит примерно так:

  • отпечаток пальца

  • realm = "myRealm"

  • лт-кред-мех

  • пользователь = тест: тест

Поскольку telnet и сервер apache работают, я почти уверен, что у меня проблема с конфигурацией. Я в основном провел выходные, пытаясь, и я действительно потерял в том, что могло быть не так.

Спасибо за любую помощь!

2
marco56 12 Ноя 2017 в 23:24

1 ответ

Лучший ответ

Из документации Turnserver

-X , --external-ip [/ private-ip] TURN Отображение общедоступных / частных адресов сервера, если сервер находится за NAT. В этой ситуации, если -X используется в форме «-X», то этот ip будет сообщаться как IP-адрес ретранслятора для всех выделений. Этот сценарий работает только в простом случае, когда должен использоваться один единственный адрес реле, и никаких функций CHANGE_REQUEST STUN не требуется. Этот единственный адрес реле должен быть сопоставлен NAT с «внешним» IP. Значение "external-ip", если оно не пустое, возвращается в поле XOR-RELAYED-ADDRESS. Для этого «внешнего» IP-адреса NAT должен напрямую перенаправлять порты (ретранслируемый порт 12345 всегда должен быть сопоставлен с одним и тем же «внешним» портом 12345) . В более сложном случае, когда задействовано более одного IP-адреса, эту опцию необходимо использовать несколько раз, каждая запись должна иметь форму «-X», чтобы отобразить все задействованные адреса. CHANGE_REQUEST NAT-обнаружение Функция STUN будет работать правильно, если адреса сопоставлены правильно, даже если сам TURN-сервер находится за NAT. По умолчанию это значение пусто, и сопоставление адресов не используется.

Таким образом, недостаточно предоставить в общедоступную сеть только порт прослушивания из внутренней локальной сети, а все порты, которые вы собираетесь использовать для ретрансляции. Обратите внимание на то, что сказано в той же документации:

--min-port Нижняя граница диапазона портов UDP для распределения конечных точек ретрансляции. Согласно RFC 5766 значение по умолчанию - 49152.
--max-port Верхняя граница диапазона портов UDP для распределения конечных точек ретрансляции. Значение по умолчанию - 65535, согласно RFC 5766.

Вам следует выбрать диапазон портов на сервере, настроить с ними параметры --min-port и --max-port и создать правило NAT, чтобы эти порты открывались для публичной стороны маршрутизатора без изменений.

3
J.M. Robles 13 Ноя 2017 в 20:59