Я использую маршрутизатор 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
Наконец треснул. Это решение:
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/