Страница 1 из 1

Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 10:40 am
SergeyG
Здравствуйте!
Пытаюсь протестировать видеосвязь между внутренними и внешними пользователями. В автоматическом режиме все работает прекрасно, но для связи используется TURN-сервер (локальный), что приводит к задержкам.
Внутренние пользователи сидят за NAT, как и сервер MyChat, и STUN-сервер выдает только внутренние IP кандидатов.
В явном виде не нашел как указать внешний STUN (например, Google), чтобы он использовался по умолчанию. Есть ли такая возможность?

Re: Сторонние stun-серверы.

СообщениеДобавлено: Чт окт 14, 2021 11:43 am
Алексей Пикуров
Здравствуйте. Сервер, настройки, web-сервисы, ручная настройка STUN/TURN. После перенастройки перезапустите сервер.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 2:16 pm
SergeyG
Спасибо за ответ!
Поковырял ручные настройки turnserver.
К сожалению, изменение его настроек не приводит к изменению TURN и STUN серверов клиента.
Код: Выделить всё
"iplist":["MC_DomainName","EXTERNAL_IP"],"microphone":"","microphone_name":"","port":2016,"receive_display":false,"room":438715,"send_display":false,"sound":"","sound_name":"","title":"t5","titleaudio":"Аудиозвонок","transparent":true,"transportTCP":true,"transportUDP":true,"turnport":8888,"uins":"15","username":"xZqabysUio","video":true,"videooff":"Выключить видео","videoon":"Включить видео"},"iceServers":[{"credential":"ZXwZyVqLnv","urls":["turn:MC_DomainName:8888?transport=udp","turn:MC_DomainName:8888?transport=tcp","stun:MC_DomainName:8888"],"username":"xZqabysUio"},{"credential":"ZXwZyVqLnv","urls":["turn:EXTERNAL_IP:8888?transport=udp","turn:EXTERNAL_IP:8888?transport=tcp","stun:EXTERNAL_IP:8888"],"username":"xZqabysUio"}]}

Их он берет из файла options.json, насколько я понял, и обновляет при каждом старте плагина.
Здесь можно каким-нибудь образом обойти?

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 3:08 pm
Алексей Пикуров
Вы перезапустили сервер после изменения настроек?

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 3:13 pm
SergeyG
Да, конечно.
STUN и TURN серверы по имени домена присутствуют вообще в любом случае и ручные настройки не влияют. Ну либо я что-то не так делаю (

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 3:23 pm
Андрей Раков
Когда снимаете галку автоматической работы, появляется конфиг, в нем есть все настройки с комментариями.

Option.json это внутренняя структура чата, она формируется на основе конфига, который вы настраиваете.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 3:50 pm
SergeyG
Хм...
Допустим, я хочу поменять только порт turnserver (listening-port).
1. Убираю галочку "Использовать автоматическую настройку STUN/TURN"
2. Меняю порт на 9999
3. Сохраняю конфиг, жму перезапустить сервер. Выключаю сервер, запускаю снова, смотрю конфиг - он изменен.
4. Перезапускаю клиент MyChat/
5. Пытаюсь вызвать абонента, получаю ошибку: [22:49:28] [ERROR] Ошибка #0267: нет соединения с TURN сервером по TCP порту 8888 и адресам Домен,Внешний_IP_сервера.

Прошу прощения, просто не понимаю, что делаю не так.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 4:00 pm
SergeyG
Upd:
А вот если я перехожу обратно в автоматические настройки, ставлю порт 9999 - MyChatServer сообщает, что данный порт занят другим приложением.
Меняю на порт 10000, и коннект проходит, причем в логах порт подключения к STUN/TURN и в файле options.json он тоже изменился.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 4:26 pm
Алексей Пикуров
Попробуйте сделать так:

1. Сделайте настройки TURN.
2. Сохраните их.
3. Выключите MyChat Server.
4. Проверьте, если в памяти есть turnserver.exe, то выбросьте его оттуда.
5. Запустите MyChat Server.
6. Подключитесь MyChat Client и сделайте звонок.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 4:36 pm
Андрей Раков
MyChat рассчитан на работу со своим STUN/TURN сервером

Можно "обмануть" MyChat, но это уже не гарантирует работу:
Код: Выделить всё
listening-port=19302

realm=stun.l.google.com
realm=stun1.l.google.com
realm=stun2.l.google.com
realm=stun3.l.google.com
realm=stun4.l.google.com


Если STUN сервера работают на одинаковом порту - все ок, разные - нельзя.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 4:37 pm
SergeyG
После выключения сервера MyChat сервиса turnserver нет, но я даже перезагрузил сервер.
К сожалению, все также ручное изменение настроек STUN/TURN не работает.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 4:39 pm
SergeyG
Андрей, я пробовал так сделать, эти настройки не распространяются на клиентов.
Клиент все также пытается подключиться к локальному серверу MyChat.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 4:40 pm
Андрей Раков
Скрин настроек?

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 4:51 pm
SergeyG
Удалил все закоменченное.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 4:54 pm
Андрей Раков
Теперь покажите содержимое options.json при звонке.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 5:00 pm
SergeyG
Ой, а тут вообще весело.
Файл .json отсюда:C:\Users\abramchuk\AppData\Local\MyChat Client\webkit

Код: Выделить всё
{"send_display":false,"sound_name":"","receive_display":false,"SelfUIN":2,"username":"E0MLt7gpt9","titleaudio":"\u0410\u0443\u0434\u0438\u043e\u0437\u0432\u043e\u043d\u043e\u043a","QPrivAllowRecordMediaCalls":true,"videoon":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e","fullscreen":false,"microphone":"","audiooff":"\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0432\u0443\u043a","microphone_name":"","audioon":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0432\u0443\u043a","transparent":true,"MediaStorage":"C:\\Users\\abramchuk\\AppData\\Local\\MyChat Client\\logs\\records\\","transportUDP":true,"transportTCP":true,"camera":"","iceTransportPolicy":"all","videooff":"\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e","turnport":10000,"RecordMediaCalls":false,"video":true,"CallerUIN":15,"hungup":"\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u0437\u0432\u043e\u043d\u043e\u043a","iplist":"mc.vlpku.ru,188.254.55.19","QPrivAllowDisableCameraDuringCalls":true,"title":"t5","QPrivAllowMuteSoundDuringCalls":true,"sound":"","uins":"15","room":502030,"port":2016,"QPrivAllowHangUpCalls":true,"ReceiverUIN":2,"credential":"LezoiFivpU","camera_name":"","RecordFileName":"15-2-2021-10-14-22-55-39.webm"}


И ошибка, которую выдает клиент:
[23:56:38] [ERROR] Ошибка #0267: нет соединения с TURN сервером по TCP порту 8888 и адресам mc.vlpku.ru,stun.l.google.com,stun1.l.google.com,stun2.l.google.com,stun3.l.google.com,stun4.l.google.com

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 5:28 pm
Алексей Пикуров
Получилось повторить такое поведение. Попробуем разобраться.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 5:33 pm
SergeyG
Понял, спасибо.
А есть ли, навскидку, какой-либо вариант поправить в конфигах где-нибудь руками настройки, чтобы начальству показать p2p коннект между 2мя клиентами?

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 5:35 pm
Алексей Пикуров
Коннект с сервером будет всегда, так или иначе. Я не очень понимаю, что вы хотите. Нужно проснифить трафик — берите Wireshark и показывайте его начальству.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 5:41 pm
SergeyG
Нет, мне нужен именно p2p между 2-мя клиентами. На данный момент p2p корректно работает в сети предприятия, но со внешними клиентами только через TURN.
Насколько я понимаю, если клиенты через корректно работающий STUN-сервер найдут правильных ICE-кандидатов, то смогут соединиться без TURN-сервера.
Планируется порядка 100 одновременных звонков и не хочется для этого поднимать кучу TURN-серверов.
Если я ошибаюсь, поправьте, пожалуйста.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 5:46 pm
Алексей Пикуров
Используйте автоматические настройки и не морочьте себе голову, всё будет работать.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 5:53 pm
Алексей Пикуров
Вам не нужна никакая куча TURN-серверов.
если клиенты через корректно работающий STUN-сервер найдут правильных ICE-кандидатов, то смогут соединиться без TURN-сервера.

А если не найдут? Вы же не можете это гарантировать, пройдёт трафик или нет. Voice звонок генерирует настолько мало трафика, что это вообще не должно быть проблемой. Пройдёт звонок напрямую— окей. Не пройдёт — сроутится через TURN, и всё продолжит работать.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 5:59 pm
SergeyG
Вчера тестировали.
При максимальном количестве подключений для FREE сервера MyChat (9 коннектов), была достаточно серьезная нагрузка по сети на сервер. Есть опасение, что при большем количестве он будет слишком тормозить.
Самый лучший вариант - если можно было бы в настройках turnserver указать опцию "no-stan" и отдельно прописать внешний STUN. И все это передалось клиенту.

Звонки все будут с видео. Поэтому там траффика побольше :(
На данный момент из-за того, что внутренних клиентов встроенный STUN не может обработать корректно (даже при наличии HairpinNAT) - все коннекты идут через TURN.
Тестирование STUN от гугла показало почти всегда нужных кандидатов с обоих сторон.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 6:06 pm
Алексей Пикуров
Окей, принято. Ожидайте обновление, думаю, за завтра допилим момент с портом, отвечу в этой же теме.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 14, 2021 7:19 pm
Алексей Пикуров
Вроде всё получилось, надо будет обновить сервер, однако STUN сервер stun.l.google.com работает на 3478 порту, а не на 19302.

Ссылку на свежую сборку сервера отправил вам в личку.

Re: Сторонние stun-серверы

СообщениеДобавлено: Пт окт 15, 2021 1:50 pm
Алексей Пикуров
Обновили сервер?

Re: Сторонние stun-серверы

СообщениеДобавлено: Ср окт 20, 2021 9:38 am
SergeyG
Здравствуйте!
Прошу прощения за столь долгую задержку с ответом.
Сервер обновил, сейчас все отрабатывает идеально. Любые изменения конфига происходят корректно.
Также, теперь всегда работает p2p при видеозвонке в любых вариациях клиентов (NAT-NAT, белый IP-NAT и т.д.).
Уважаемые разработчики, огромное спасибо за проделанную Вами работу!

Re: Сторонние stun-серверы

СообщениеДобавлено: Ср окт 20, 2021 9:39 am
Алексей Пикуров
Пожалуйста, пользуйтесь на здоровье :)

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 21, 2021 9:05 am
SergeyG
Здравствуйте!
Немного подниму тему - если соединяться с мобильного клиента, то звонок не проходит к сожалению. Так как нет логов в Android, не могу точно установить причину. Это может быть связано с необходимостью обновления приложения в PlayMarket?

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 21, 2021 9:15 am
Георгий Лысенко
Здравствуйте.
В мобильном приложении есть логи медиа-звонков. Вот где их посмотреть.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 21, 2021 11:02 am
Георгий Лысенко
У нас скоро будет апдейт, в нем добавлена поддержка stun-протокола в Android-клиент.

Re: Сторонние stun-серверы

СообщениеДобавлено: Чт окт 21, 2021 3:02 pm
SergeyG
Меня Ваша техническая поддержка восхищает!
Огромное спасибо за ссылку с логированием на Android.
Проблему решил, была в конфиге.
Ну и, конечно, в том, что нет поддержки stun.
Но минимальную часть мобильных клиентов пока можно отправить через turn.
Еще раз спасибо!