Как настроить HAproxy с SSTP и HTTPS

Я использую маршрутизатор MikroTik с SSTP, и у меня есть сервер Fedora, на котором запущен httpd с HTTP и HTTPS, но у меня только один IPv4-адрес от моего провайдера.

В настоящее время у меня SSTP работает на порте 444, но мне нужно переместить его на порт 443, чтобы обойти Большой брандмауэр (недавно правительство Китая начало блокировать PPTP, поэтому я хочу полностью скрыться на порте 443).

Я нашел документы о балансировке нагрузки SNI для HAproxy, но у меня пока не работает, например, https://www.haproxy.com/blog/enhanced-ssl-load-balancing-with-server-name-indication-sni-tls-extension/

Вот мои настройки (отредактировано 5 июля 2018 г. 22:20 CET)

frontend  main 192.168.0.3:443 ssl ca-cert /etc/pki/tls/certs/sstp.crt
    use_backend sstp if { ssl_fc_sni sstp.mydoamin.com }
    use_backend websites if { ssl_fc_sni www.mydomain.com }
    default_backend             websites

backend websites
    mode        tcp
    balance     roundrobin
    server      www 127.0.0.1:443 check
backend sstp
    mode        tcp
    balance     roundrobin
    server      router 192.168.0.1:444 ca-cert /etc/pki/tls/certs/sstp.crt

После редактирования бэкэнда для включения ca-cert я могу подключить sstp, когда меняю default_backend на sstp

haproxy -d не дает мне много отладочной информации. Я недостаточно знаком с синтаксисом, чтобы заставить работать SNI, но я делаю успехи...

Только что попробовал точный синтаксис из примера, и это тоже не работает

frontend  main 192.168.0.3:443 ssl ca-cert /etc/pki/tls/certs/sstp.crt
    use_backend sstp if { ssl_fc_sni sstp.example.com }
    acl application_1 req_ssl_sni -i sstp.example.com
    use_backend sstp if application_1
    default_backend             websites

1 ответ

Наконец-то взломали его. Это решение:

frontend  main 192.168.0.3:443 ssl
    tcp-request inspect-delay 5s
    tcp-request content accept if { req.ssl_hello_type 1 }
    use_backend websites if { req_ssl_sni -m found }
    default_backend             sstp

Единственная проблема здесь в том, что использование публичного IP не работает.

Отредактировано 6 июля 2018 г. 13:00 CET, чтобы изменить req_ssl_sni с сопоставления моих доменных имен на проверку просто наличия SNI

Документация по логике (он же список контроля доступа) находится здесь https://www.haproxy.com/de/documentation/hapee/1-7r1/traffic-management/acls/

Другие вопросы по тегам