Назад | Перейти на главную страницу

Перенаправлять не HTTP-трафик на порт 80

Я создаю приложение для Android, которое использует протокол MQTT для отправки сообщений в реальном времени, однако локальный брандмауэр является строгим и блокирует большинство портов, поэтому приложение Android не может подключиться. (Сервер находится за пределами брандмауэра, но пользователи в моем местоположении не могут подключиться через Это )

Можно ли перенаправить не HTTP-трафик с порта 80 на 1883 или с 443 на 8883 серверную сторону, при этом правильно обрабатывая HTTP-трафик? (Я знаю, что некоторые брандмауэры также блокируют не HTTP через TCP, но, по крайней мере, это может вместить еще несколько человек)

У меня есть VPS Linode с NGINX для веб-сервера на CentOS 5.

Вы можете написать прокси, который перехватывает поток TCP, проверяет первые три байта данных, отправленных клиентом, и, если они не все буквы (A-Z, a-z) одного и того же регистра, считать его не-HTTP. Прокси-сервер HTTP к порту, который прослушивает веб-сервер. Прокси-сервер, отличный от HTTP, к порту, который прослушивает ваш сервер MQTT.

Это не совсем правильно - это взлом. Но я успешно использовал его для многих подобных вещей. Я просмотрел Протокол MQTT и маловероятно, что сообщение MQTT будет выглядеть в этом тесте как HTTP. Если это так, вам нужно будет проверить более подробно. Например, проверьте известные HTTP-глаголы и / или пробел после глагола.

Я по-прежнему считаю, что лучшее / правильное решение - открыть порт в брандмауэре. Это уродливый способ сделать брандмауэр менее полезным. Любой, кто имеет право развертывать серверное приложение, также должен иметь возможность открыть порт для этого приложения.