Перенаправление порта 443 на 8443 не работает для моего экземпляра tomcat

Перенаправление порта 443 на 8443 не работает для моего экземпляра tomcat

Я использую ubuntu headless server 18.04 на выделенном сервере хоста. У хостера есть внешний брандмауэр, где я открыл порты 8443,443 (tcp). На моем сервере ubuntu я использую iptables, где я перенаправил порт 443 на 8443 с помощью таблицы nat.

iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-ports 8443

также я открыл входящие и исходящие порты 443 и 8443.

Я все еще могу получить доступ к экземпляру tomcat с example.com:8443 и не вижу никаких проблем, но example.com не отвечает. Заглядывая в iptables, я не вижу никаких отброшенных пакетов. На моем экземпляре tomcat я не меняю server.xml. Коннектор слушает 8443. Я не знаю, в чем проблема? Я надеюсь, что некоторые эксперты смогут помочь мне решить проблему.

С уважением

черная борода

решение1

Что вам действительно нужно, так это обратный прокси-сервер (например, Nginx), который может выполнить SSL-терминацию на порту 443, а затем передать запрос Tomcat на порт 8443.

SSL/TLS — сложный протокол, и, на мой взгляд, полагаться на IPTABLES для обработки SSL-рукопожатия и передачи вашего запроса приложению Tomcat — не очень хорошая идея.

Если вам действительно нужно использовать IPTABLES, подключитесь к сервису opensslи выясните, что именно происходит. Сообщите о выводе здесь, и может быть доступна дополнительная помощь.

openssl s_client -connect www.example.com:443

Проблема также может быть в том, что вы используете natтаблицу. Насколько я понимаю, правила для этой таблицы применяются только в том случае, если запросы маршрутизируютсячерезсервера, а не перенаправляться на другой порт на том же IP-адресе.

Обратный прокси-сервер устранит большую часть этой сложности и предоставит вам гораздо больше функциональных возможностей (например, ограничение скорости, контроль доступа и т. д.).

решение2

Это может зависеть от того, к какому интерфейсу привязан ваш tomcat. Если он привязан к интерфейсу loopback, то это вообще не будет работать.

Чаще всего цель REDIRECT используется с указанным интерфейсом, например:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 8443

(замените eth1 на фактический сетевой интерфейс, на котором работает tomcat)

REDIRECT — это удобный метод для цели DNAT, поэтому, если вышеизложенное не сработало, вы можете попробовать что-то вроде:

iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.0.1:8443

(замените 10.0.0.1 на IP-адрес вашего компьютера)

Связанный контент