С одним из вариантов использования подобного подхода я сталкивался сам. Допустим, есть у вас где-то в Америке VPS, там живёт веб сервер. А ещё вам хочется держать там же OpenVPN на 443 порту, чтобы использовать для обхода блокировок и проходить через сети, где всё закрыто, кроме HTTP и HTTPS портов. SSLH отлично решает эту задачу.
Она есть в базовых репозиториях Debian:
# apt install sslhДалее запускаем:
# sslh-select -f --listen 0.0.0.0:443 \--tls 127.0.0.1:443 \--ssh 127.0.0.1:22 \--openvpn 127.0.0.1:1194Теперь, если зайти браузером на сервер, то запрос будет перенаправлен на 443 порт веб сервера, если SSH клиентом, то на 22-й порт, если OpenVPN клиентом, то на дефолтный 1194 порт openvpn сервера.
То же самое через Docker:
docker run --rm -it sslh:latest \ --listen=0.0.0.0:443 \ --ssh=hostname:22 \ --tls=hostname:443--openvpn=hostname:1194Более функциональный вариант через docker-compose. Пример конфига, где трафик уходит в разные контейнеры:
version: "3"services: sslh: image: sslh:latest hostname: sslh ports: - 443:443 command: --listen=0.0.0.0:443 --tls=nginx:443 --openvpn=openvpn:1194 depends_on: - nginx - openvpn nginx: image: nginx openvpn: image: openvpn⇨ Исходники
#openvpn #webserver