diff --git a/README.md b/README.md index 5a58f85..ffcb32c 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ TLS: на целевых серверах используются **wildcard-с | Служба | Внешнее имя (клиенты) | Внутренний хост / IP | Порт снаружи | |--------|------------------------|----------------------|--------------| -| Microsoft Exchange (OWA, EWS, MAPI/HTTPS и т.д.) | `ext.kalinamall.ru` | fifth.kalinamall.ru — **192.168.160.42** | 443 (TCP/SNI) | +| Microsoft Exchange (OWA `https://ext.kalinamall.ru/owa`, EWS, MAPI/HTTPS и т.д.) | `ext.kalinamall.ru` | fifth.kalinamall.ru — **192.168.160.42** | 443 (TCP/SNI) | | Autodiscover | `autodiscover.kalinamall.ru` | тот же Exchange — **192.168.160.42** | 443 (TCP/SNI) | | RDS | `rds.kalinamall.ru` | k6a-dc3.b26.kalinamall.ru — **192.168.160.40** | 443 | | 1С | `erp.kalinamall.ru` | hp-serv.b26.kalinamall.ru — **192.168.160.150** | 443 | @@ -20,6 +20,8 @@ TLS: на целевых серверах используются **wildcard-с DNS: записи **A** для `ext`, **`autodiscover`**, `rds`, `erp`, `ksmg` (и при необходимости для входа по RDP/SSH) должны указывать на **публичный IP** хоста с HAProxy. Имя `autodiscover.kalinamall.ru` должно быть в **SAN** wildcard `*.kalinamall.ru` или отдельно в сертификате на Exchange. +В режиме **TCP + SNI** отдельные строки в HAProxy для путей вроде `/owa` **не нужны**: после согласования TLS клиент шлёт HTTP внутри шифрования, разбор путей делает **IIS/Exchange** на `192.168.160.42`. + ## Установка HAProxy на Ubuntu 24.04 (Noble) Для этого репозитория нужен HAProxy **не ниже 2.4**. Конструкции `req_ssl_sni` и `tcp-request content accept` (разбор ClientHello для SNI в TCP-режиме) входят в штатные сборки **2.8.x** из Ubuntu 24.04 и во все актуальные ветки **3.x**. diff --git a/haproxy.cfg b/haproxy.cfg index 1cb9f59..40e127f 100644 --- a/haproxy.cfg +++ b/haproxy.cfg @@ -24,6 +24,7 @@ defaults # HTTPS (443): маршрутизация по SNI → внутренние серверы с wildcard на 443 # Клиенты: ext, autodiscover (Exchange) / rds / erp.kalinamall.ru # Бэкенды: Exchange, RDS, 1С (см. README) +# Пути URL ( /owa, /ecp, /ews/, /mapi/ … ) HAProxy не разбирает — они внутри TLS; достаточно SNI ext.kalinamall.ru # ----------------------------------------------------------------------------- frontend fe_https_sni @@ -32,6 +33,7 @@ frontend fe_https_sni tcp-request inspect-delay 5s tcp-request content accept if { req_ssl_hello_type 1 } + # OWA: https://ext.kalinamall.ru/owa — тот же поток, отдельное правило не требуется use_backend be_exchange if { req_ssl_sni -i ext.kalinamall.ru } use_backend be_exchange if { req_ssl_sni -i autodiscover.kalinamall.ru } use_backend be_rds if { req_ssl_sni -i rds.kalinamall.ru }