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

Брандмауэр разрешает трафик только через порт 443, но несколько серверов в бэкэнде прослушивают разные порты.

Я разработчик программного обеспечения по профессии, и я думаю, что мне может не хватать здесь важной функции, с которой я не знаком.

На моем компьютере разработчика у меня есть приложение, использующее веб-сайт, размещенный на моем локальном сервере IIS на порту 443, https-сайте. Затем у меня также есть другая часть программного обеспечения, в которой Java-процесс прослушивает другой порт, 8443. Они оба работают и работают.

Но передо мной в реальной производственной среде брандмауэр, который разрешает трафик только через порт 443, который по умолчанию является трафиком https. Я нашел выход, чтобы мое приложение Java могло отправлять / получать трафик https, который завершает тип трафика моего приложения / трафика по умолчанию, так что мне не нужно беспокоиться о том, что брандмауэр разрешает только определенные типы входящего трафика приложения / вне.

Вопрос в том, как я могу настроить брандмауэр или свой компьютер, чтобы он знал, как перенаправлять трафик с одного порта (443) на разные порты моего компьютера? Итак, подумайте о ситуации, когда весь трафик поступает на порт 443 на брандмауэре, но после этого я хочу, чтобы он направлял трафик на порт 443 сервера IIS и 8443 myJavaAppListener, что мне делать, чтобы включить это?

Вы не можете сделать это в брандмауэре (обычном / типичном / iptables или аналогичном), вам понадобится какой-то прокси / балансировщик нагрузки. «Эквивалентному брандмауэру» устройству фактически необходимо разорвать соединение (и иметь соответствующие сертификаты для всех доменов в случае HTTPS), а затем создать соединение с реальным сервером и проксировать трафик.

Конечно, эту работу не должен выполнять маршрутизатор - вы можете настроить прокси (использование Apache + mod_proxy - один из распространенных способов сделать это), затем перенаправить весь трафик порта 443, проходящий через ваш маршрутизатор, на прокси-сервер, и пусть прокси управляет этим внутренне. Это довольно типичное расположение.

Дополнительно по запросу

Поток TCP имеет IP-порт источника и назначения. Поскольку запросы должны поступать со всех IP-адресов и любого порта, все, что осталось различить, - это IP-адрес назначения (который является одним IP-адресом) и порт (из которых только один). Это означает, что проверка пакета не даст нам знать адресата, и поэтому iptables недостаточно..

Решение состоит в том, чтобы разорвать соединение, а затем прочитать заголовок HTTP, который сообщает запрошенный ресурс, включая (для HTTP / 1.1 и более поздних версий), а затем действовать как человек посередине.