Совмещая Haproxy, Vless, WebSocket, VPN и сайт на одном порту

Haproxy, выступая в роли балансировщика нагрузки, позволяет на одном порту (443) разместить несколько сервисов: веб-сайт, VLESS (для VPN), WebSocket туннели и даже SSH. Это достигается путем анализа SNI (Server Name Indication) и путей в URL, что позволяет направлять трафик к соответствующим бэкендам. В статье предложена настройка, позволяющая перенаправлять запросы на http или https frontend, в зависимости от порта или SNI. Также есть возможность использовать прокси протокол v2 ssl cn для передачи информации о клиенте.
Совмещая Haproxy, Vless, WebSocket, VPN и сайт на одном порту
Изображение носит иллюстративный характер

Для туннелирования трафика через WebSocket используется wstunnel. На сервере создаются отдельные скрипты для WebSocket туннелей и для перенаправления DNS запросов, в которых задаются настройки, включая пути и порты. На клиенте устанавливается wstunnel, который перенаправляет трафик на локальный порт, после чего можно использовать этот локальный порт как socks5 прокси или для других целей. В примере настроены systemd-сервисы, управляющие wstunnel, для постоянной работы и автоматического перезапуска.

Для развертывания VLESS рекомендуется использовать X-UI панель, где необходимо настроить TLS с указанием SNI. VLESS трафик направляется через haproxy, с включенным PROXY протоколом для корректной передачи IP адреса клиента. Сайт на Apache или Nginx также размещается за Haproxy, и трафик к нему направляется на основе имени хоста. Безопасность обеспечивается за счет использования TLS 1.2/1.3, а также применения HSTS для принудительного использования HTTPS.


Новое на сайте