Здесь вы можете задать любые вопросы по MyChat, по работе программы, её настройке, лицензированию и т.д.
dexed
Здравствуйте.
Правильно ли я понимаю, что STUN нужен лишь для обхода NAT?
Возможна ли реализация такой вот фичи, что бы встроенный WebRTC сервер, параллельно или взамен (лучше на выбор) с механизмом STUN, был бы привязан к конкретным портам tcp/udp? Ведь по сути, что бы пользователи из других локальных сетей, которые сидят каждая за своим NAT-ом, могли в полной мере пользоваться нашим чатом, нужно лишь сделать простой проброс портов на паре-тройке шлюзов (как это сделано с текстовым чатом, web и ftp). Зачем жестко привязываться к публичным STUN серверам?
Аватара пользователя
Андрей Раков
Добрый день.

Да, STUN нужен для "пробивания" NAT для прохождения аудио и видео трафика. В сервер чата встроен собственный STUN сервер. Вы можете включить или выключить локальный STUN сервер.

STUN использует 2 порта, по умолчанию это 3478 и 3479.

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

Какой-то жесткой привязке к публичным серверам STUN нет.
dexed
В случае отключенного локального STUN сервера, в ответе сигнального сервера, судя по логам, сразу выдаются адреса публичных STUN серверов (stun:217.10.68.152, stun:stun.sipgate.net). И клиент начинает их искать, при этом даже не пытается отправлять запросы на внешний ip адрес NAT шлюза, с которым вполне хорошо общается по 2004, веб и фтп.
Если бы добавить в настройках галочку "включения/отключения" выдачи ссылки на публичные STUN сервера, возможно это бы решило проблему. А еще было бы неплохо вручную указывать адрес, куда клиенту из глобальной сети следует отправлять совои запросы по 3478 и 3479.
Аватара пользователя
Андрей Раков
Если вас не устраивают публичные STUN сервера, то зачем отключать локальный?
Аватара пользователя
Алексей Пикуров
dexed, вполне логично, что если вы сами отключили локальный STUN, то MyChat-у всё же надо работать. Он попытается постучаться на внешний STUN, если и он будет недоступен - тогда звонок не получится.
dexed
А почему вы исключаете произвольное указание адреса куда слать запросы по 3478 и 3479? Сейчас в случае с локальным сервером адреса жестко привязаны к локальным сетевым интерфейсам, почему нельзя их отвязать, сделать произвольными?
dexed
Получается вы не учитываете ситуацию, когда не клиент спрятан за NAT, а сам сервер ...
Как действовать когда сервер находится в DMZ?
Аватара пользователя
Андрей Раков
Когда сервер находится в DMZ - необходимые для его работы порты пробрасываются на него и обратно. Стандартный Port mapping, поддерживает любой маршрутизатор.
dexed
Вот! Проброс то настроен, но клиент не имеет понятия где находится подсеть с адреса DMZ, иначе это не DMZ! В случае если включен локальный STUN сервер, сигнальный сервер выдает именно адреса из DMZ подсети, а клиент не знает куда обращаться. В этом и есть загвоздка.
Аватара пользователя
Алексей Пикуров
Получается, у вас ситуация , аналогичная FTP. Для него у нас есть настройка, где прописывается реальный внешний IP для того, чтобы FTP клиент смог добраться в пассивном режиме к FTP серверу MyChat.
dexed
В случае с ftp все проще, если шлюз на linux (или mikrotik), там в iptables есть helper-ы которые как раз исправляют недостаток ftp, и работает все и без указания в настройка mychat сервера реального внешнего адреса.
Там даже есть helper для работы с SIP (еще IRC, H323, GRE и TFTP), но насколько я понимаю, SIP и STUN принципиально разные вещи. Я поэтому и спрашивал про выделенные порты WebRTC сервера, что бы можно было продолжить эксперименты... (по аналогии с SIP).
Аватара пользователя
Алексей Пикуров
Поэкспериментируйте пока, а мы подумаем, как сделать эту настройку на сервере.
dexed
А нет ли у сервера текстовых конфигов как у клиента? Где бы указывались в открытом виде публичные STUN сервера.
dexed
Попробовал в config.json прописать нужные ip адреса STUN серверов (реальный локальный и внешний адрес шлюза), но сервер как будто его не видит, хоть и положил рядом с node.exe, и сервер перезапускал. Поубирал из config.json все лишнее уже, оставил только вот это:

Код: Выделить всё
{
    "ServPass"      : "",

    "MyChatServerIP"   : "127.0.0.1",
    "MyChatServerPort" : 2004,

    "GZIPenable"    : false,

    "STUNenable"    : true,
    "STUNaddr1"     : "10.0.0.10",
    "STUNaddr2"     : "10.50.50.20",
    "STUNport1"     : "3478",
    "STUNport2"     : "3479",

    "AlternativePorts" : [8080, 8088],
}


и все равно ноль реакции. В чем может ошибка?
И в инструкции не сказано, подхватывает сервер этот конфиг на лету, или нужно ребутить сервер?
Кстати, про "налету", где можно почитать, что таки подхватывается налету, а что после ребута (если править из консоли, а не через веб)?
И какие адреса STUN серверов должны измениться, встроенные или публичные, и нужно ли отключать встроенный STUN сервер (хотя мне кажется я перепробовал все варианты)?
Аватара пользователя
Алексей Пикуров
Конфиг уже хранится в базе данных сервера, текстовый файл не используется, для изменения настроек нужно перезапускать NodeJS. В новой админке это работает (web).
dexed
В админке ip адреса жестко привязаны к сетевым интерфейсам ((
Вобщем ждем новых настроек на сервере в будущей версии.
Как скоро ждать релиз?
Аватара пользователя
Алексей Пикуров
Релиз 5.8 уже скоро. Постараемся в этой версии успеть сделать возможность указывать произвольные IP для STUN серверов.
dexed
Алексей Пикуров писал(а):Релиз 5.8 уже скоро. Постараемся в этой версии успеть сделать возможность указывать произвольные IP для STUN серверов.

В настройках STUN не изменилось ничего, видимо не успели )). В релизе 5.9 стоит ожидать?
Аватара пользователя
Андрей Раков
Добрый день.

Чтобы что-то менять в интерфейсе я точно должен знать, что это поможет, поэтому поступим следующим образом - пропишем вам адрес сервера жестко. Для этого найдите файл MyChat Server/node/server/index.js замените строки MCServer.STUN.addr1/2 из
Код: Выделить всё
         MCServer.iceServers = [
             {"url": "stun:" + MCServer.STUN.addr1 + ":" + MCServer.STUN.port1},
             {"url": "stun:" + MCServer.STUN.addr1 + ":" + MCServer.STUN.port2},
             {"url": "stun:" + MCServer.STUN.addr2 + ":" + MCServer.STUN.port1},
             {"url": "stun:" + MCServer.STUN.addr2 + ":" + MCServer.STUN.port2}
         ];

на ваши адреса, а порты оставьте. Пример: {"url": "stun:10.0.0.10:" + MCServer.STUN.port1}

После этого сделайте перезапуск веб-сервера: команды в консоли сервера STOPNODEJS, STARTNODEJS или весь сервер.
derwin
stun призван обеспечить прохождение управляещего траффика - вызов, отбой, переадресация. К медийному траффику он имеет весьма-весьма отдалённое отношение.
dexed
После замены MCServer.STUN.addr1/2 на ip, и ребута node, настройки не меняются (node не подхватывает новые адреса), хотя node останавливается и запускается по командам, если судить по веб админке, она перестает работать после команды STOPNODEJS...
А если выключить сервер полностью, и потом запустить, то процесс node.exe вообще не поднимается ...
Какие еще есть варианты?
dexed
derwin писал(а):stun призван обеспечить прохождение управляещего траффика - вызов, отбой, переадресация. К медийному траффику он имеет весьма-весьма отдалённое отношение.

Вопрос не о медийном трафике, а о том, что бы сигнальный сервер мог выдавать адекватные адреса для коннекта, в данном случае - внешние адреса DMZ роутера (что бы сеанс связи вообще состоялся как таковой и что бы STUN сервер увидел клиента).
Аватара пользователя
Андрей Раков
Да, задать адрес STUN сервера оказалось мало, хотел найти более "простой путь", к сожалению не получилось. Тогда ожидайте, когда я добавлю возможность ввода произвольного адреса в настройках STUN сервера.
eek
Аналогичная проблема, сервер за NAT из второго офиса видео и аудио не работает.
Адрес STUN встроенного сервера привязан к внутреннему интерфейсу и с удаленных клиентов не попадает на внешний адрес сервера
Как быть?
dexed
eek писал(а):Аналогичная проблема, сервер за NAT из второго офиса видео и аудио не работает.
Адрес STUN встроенного сервера привязан к внутреннему интерфейсу и с удаленных клиентов не попадает на внешний адрес сервера
Как быть?

Если оба ваших офиса в локалке, и если не подходит способ с публичными stun серверами, то ждать, возможно и релиза 5,9 ...
Аватара пользователя
Андрей Раков
Я сейчас добавляю в настройках WEB-сервисов консоли управления поле для ввода дополнительных адресов STUN серверов.

По умолчанию там будут перечислены публичные STUN сервера, если вы туда подставите адрес своего сервера, который находится за DMZ, то клиенты будут перебирать все доступные адреса и соединятся на тот адрес, что вы укажете.
renoip
Андрей Раков писал(а):Я сейчас добавляю в настройках WEB-сервисов консоли управления поле для ввода дополнительных адресов STUN серверов.


Добавить добавили, а вот возможность сохранения забыли.
При прописывании своих дополнительных STUN, не появляется окошко с изменениями и возможностью сохранить.
У вас нет необходимых прав для просмотра вложений в этом сообщении.