Итак, в эти выходные я работал над переносом 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).
DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --openvpn 127.0.0.1:1194 --pidfile /var/run/sslh/sslh.pid"
Куда,
Сохраните и закройте файл.
Наконец, включите и запустите sslh
сервис для обновления изменений.
sudo systemctl enable sslh
sudo systemctl start sslh
Измените ip, порт и протоколы в соответствии с вашими потребностями.