Работа с фонером на устройстве с анонимным прокси.

saben

New Member
Приветствую!
Есть проблема: приложение использует android sdk и запускается в приватной сети, с фильтрацией трафика посредством прокси на основе squid. Также был испробован в качестве прокси proxysg.
В прокси пропилены дырки для необходимых портов и доменов до flashphoner сервера (wcs, media ports).

Но проблема в том что стрим не запускается. Падает на коннекте к сокету (вложение).

Вопрос: что можно сделать, чтобы потоки успешно пошли сквозь прокси?

Спасибо.
 

Attachments

Max

Administrator
Staff member
Добрый день.

Не так давно тестировали с nginx

Здесь пример настройки:

1. Убедиться, что WCS слушает порт 8081 ws или 8443 wss и подключение к этим портам напрямую работает.
2. Настроить проксирование https/wss трафика 443 > на 8081.

Обратите внимание, в документации для nginx отдельно прописан UPGRADE для вебсокетов.
Code:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
Это что касается проксирования 443.

С медиа портами не понятно как быть, а именно с UDP портами в диапазоне [31000 - 32000 default]. Проксирование UDP портов через nginx мы не тестировали, не знаем возможно ли такое. Если и возможно, то выглядит избыточно. Правильнее наверное поднять NAT.

Или так. Проксировать только 443 вебсокеты. А по медиа портам UDP соединяться напрямую без проксирования. Если весь UDP трафик пойдет через проксирующий сервер, это увеличит количество сбросов пакетов и ухудшит качество стримов.
 

saben

New Member
Спасибо.

Так и сделано. Прокси на стримсервере отрабатывает отлично.

Проблема в коннекте из сети закрытой прокси (фильтрация трафика по урл и айпи). Т.е. сдк не может подключиться к серверу. Без фильтрации трафика всё отлично работает. Просто вылетает ошибка таймаута (скрин во вложении к первому посту).
 

saben

New Member
Пробовали запустить стримы через встроенный TURN сервер, но тоже безуспешно.
 

Max

Administrator
Staff member
Из закрытой сети вы пытаетесь выполнить вебсокет коннект к серверу, например wss://105.25.110.77:443
Если у вас этот IP под фильтром, то ожидаемое поведение, что коннект не пройдет.

Если порт 443 все же открыт на прокси и прокси позволяет через него https трафик, то коннект должен проходить.
Попробуйте из этой закрытой сети подключиться из браузера Two Way Streaming, нажав Connect.

Попробуйте снять pcap дамп с этой сети с помощью wireshark или tcpdump. Возможно прокси просто режет все пакеты, которые идут на любые внешние адреса :443


1607006133956.png
 

saben

New Member
Кажется примерно поняли в чём причина.
Прокси спокойно пропускает трафик по протоколам http(s), но отказывается гнать трафик через протоколы ws(s).

Но пока не знаем как решить.
 

Max

Administrator
Staff member
Похоже, что squid не поддерживает wss. Попробуйте эти настройки на стороне прокси. Если не поможет, тогда только искать альтернативу squid.
 
Top