Turn-сервер, работающий на AWS, не отвечает
Я борюсь с этой проблемой уже почти месяц, я могу без проблем установить rfc5766-turn-server( v3.2.3.1) на экземпляре EC2.
Когда TURN прослушивает 3478, все работает нормально, но на порту 80 он работает большую часть времени, но через определенные промежутки времени (происходит с ошибками) он перестает отвечать, даже перезапуск этого процесса ничего не меняет. Процесс, который я запускаю параллельно через порт 3478, не сталкивается с этой проблемой.
Команда для запуска на порту 80:
sudo turnserver -L INTERNAL_IP -X EXTERNAL_IP/INTERNAL_IP -r "someRealm" -a -o --no-udp -u test:test -n -a --no-sslv2 --no-sslv3 -v --cert cert.pem --pkey key.pem --tls-listening-port 80
Команда для запуска через порт 3478:
sudo turnserver -L INTERNAL_IP -X EXTERNAL_IP/INTERNAL_IP -r "someRealm" -a -o --no-udp -u test:test -n -a --no-sslv2 --no-sslv3 -v --cert cert.pem --pkey key.pem --tls-listening-port 80
Я думаю, что проблема связана с сетью AWS, а не с сервером на очереди, но опять же, я очень мало знаю о серверах AWS или TURN. Кто-нибудь сталкивался с этой проблемой на порте 80. Я считаю, что работа на порте 80 важна, особенно когда узлы находятся за корпоративными брандмауэрами, которые блокируют большинство портов.
Журналы, когда он может выделить успешно (я изменил внутренний ip EC2 на INTERNAL_IP):
342: IPv4. Server relay addr: INTERNAL_IP:0
342: IPv4. Local relay addr: INTERNAL_IP:56216
342: session 000000000000000005: new, username=<test>, lifetime=600
342: session 000000000000000005: user <test>: incoming packet ALLOCATE processed, success
342: session 000000000000000005: user <test>: incoming packet ALLOCATE processed, success
342: session 000000000000000005: user <test>: incoming packet CREATE_PERMISSION processed, success
342: session 000000000000000005: user <test>: incoming packet CREATE_PERMISSION processed, success
343: session 000000000000000005: user <test>: incoming packet CHANNEL_BIND processed, success
343: session 000000000000000005: user <test>: incoming packet CHANNEL_BIND processed, success
353: session 000000000000000005: usage: username=<test>, rp=1039, rb=551685, sp=1009, sb=526100
журналы, когда не отвечает (я заметил, что он по-прежнему показывает попытку подключения, с одним отличием, он показывает IP однорангового подключения, а не INTERNAL_IP, как в сценарии успеха):
392: IPv4. tcp or tls connected to: SOME_IP:41107
392: session 000000000000000007: user <>: incoming packet message processed, error 401
392: session 000000000000000007: user <>: incoming packet message processed, error 401
392: IPv4. tcp or tls connected to: SOME_IP:41108
392: session 000000000000000008: user <>: incoming packet message processed, error 401
392: session 000000000000000008: user <>: incoming packet message processed, error 401
2 ответа
Вам не нужно использовать 80 из-за брандмауэра (брандмауэры блокируют только входящие, а не исходящие сообщения)
надеюсь, это помогло
Вы не упомянули транспортный протокол TURN, который вы используете на портах, но из журнала вашего порта показано, что 3478 кажется, что вы используете 3478, как для ваших кандидатов-ретрансляторов транспортного типа UDP. Надеюсь, вы не используете порт 80 для UDP, это может быть TCP/TLS. В этом случае вы можете проверить транспортный протокол для запроса на выделение, который клиент отправляет на сервер TURN. Если клиент не использует правильный транспортный протокол для запроса кандидата на ретрансляцию, вы можете не получить успешный ответ о выделении, управляющее соединение TCP / TLS может использоваться для сбора кандидата на ретрансляцию UDP в качестве резервного механизма RFC-5766, учитывая, что используемый вами сервер TURN поддерживает этот резервный механизм, в противном случае клиент / сервер должен иметь реализацию ICE-TCP, чтобы получить TCP-типы кандидатов-ретрансляторов, но вы все равно должны получить ответ об ошибке как неизвестный протокол. Печать журнала как ошибка 401 является протокол протокола TURN? тогда это означает, что возникли проблемы с аутентификацией. Если экземпляр EC2 включен для правильного входящего трафика протокола, у вас может не возникнуть никаких других проблем из-за использования экземпляра EC2, это может быть связано с конфигурацией или поддержкой вашего сервера TURN.