Итак, в эти выходные я работал над переносом моего сервера apache2
в контейнер docker
, который У меня нет проблем с.
В настоящее время у меня есть сервер Windows с SSTP
и Exchange 2016, оба используют порт 443
для трафика.
Идея состоит в том, чтобы перенаправлять входящий 443
трафик на мой сервер ubuntu, и apache будет принимать решение на основе псевдонимов, которые я дал виртуальным хостам, куда будет перенаправлен пользователь. Это у меня работает, НО что, если пользователь пытается подключиться к VPN, которая также использует порт 443? Как я смогу перенаправить этот трафик на свой сервер?
Я задумал создать правило для IPTABLES
, чтобы местом назначения было vpn.domain.com
и перенаправить его на сервер, но поскольку все поддомены / CNames - это просто псевдонимы, ведущие к одному и тому же хосту (мой внешний IP-адрес), поэтому все запросы на порт 443
будут просто отправлены на сервер Windows в обход моего веб-хоста, который не то, что я хочу.
На самом деле я также пытался использовать apache для пересылки любых входящих соединений на 443
через ServerAlias vpn.domain.com
на сервер Windows с момента его на 443
, но это не сработало.
Я не уверен, как я могу это сделать, и я думаю, что мне просто нужно будет создать новую службу VPN на моем сервере ubuntu в конце концов. Если есть какой-то способ достичь того, что мне нужно, это избавит меня от хлопот.
Спасибо
Попробуйте использовать SSLH
Установить SSLH
SSLH
входит в пакет для большинства дистрибутивов Linux, поэтому вы можете установить его с помощью менеджеров пакетов по умолчанию.
sudo apt install sslh
Настроить Apache
Как вы уже знаете, Apache по умолчанию прослушивает все сетевые интерфейсы (т.е. 0.0.0.0:443). Нам нужно изменить этот параметр, чтобы веб-сервер слушал только интерфейс localhost (например, 127.0.0.1:443 или localhost: 443).
Для этого отредактируйте файл конфигурации веб-сервера (nginx или apache) и найдите следующая строка:
listen 443 ssl;
И измените его на:
listen 127.0.0.1:443 ssl;
Если вы используете Virutalhosts в Apache, убедитесь, что вы также изменили его.
VirtualHost 127.0.0.1:443
Сохраните и закройте файлы конфигурации. Не перезапускайте службы.
Настройте SSLH
После того, как вы настроили веб-серверы для прослушивания только локального интерфейса, отредактируйте файл конфигурации SSLH:
sudo vi /etc/default/sslh
Найдите следующую строку:
Run=no
И измените ее на:
Run=yes
Затем прокрутите немного вниз и измените следующую строку, чтобы разрешить SSLH прослушивать порт 443 на всех доступных интерфейсах (например, 0.0.0.0:443).[12131 sizesWhere ,[12132 sizesuser sslh: Требуется запускать под этим указанным именем пользователя.
Сохраните и закройте файл.
Наконец, включите и запустите службу sslh
, чтобы обновить изменения.
sudo systemctl enable sslh
sudo systemctl start sslh
Измените IP-адрес, порт и протоколы в соответствии с вашими потребностями.