Назад | Перейти на главную страницу

Возникли проблемы с режимом tcp на HAProxy, запущенном на OPNsense

Я пытаюсь настроить HAProxy для простой передачи tcp на разные серверы на основе SNI. Однако у меня возникнут серьезные проблемы с клиентами, если я сделаю это:

Если я обращаюсь к бэкэндам напрямую, минуя HAProxy, у меня таких проблем не возникает. Итак, что-то в HAProxy настроено неправильно, но я не вижу, что это такое.

Технические подробности:

Моя конфигурация выглядит так:

global
    # NOTE: Could be a security issue, but required for some feature.
    uid                         80
    gid                         80
    chroot                      /var/haproxy
    daemon
    stats                       socket /var/run/haproxy.socket group proxy mode 775 level admin
    nbproc                      1
    nbthread                    1
    tune.ssl.default-dh-param   1024
    spread-checks               0
    tune.chksize                16384
    tune.bufsize                16384
    tune.lua.maxmem             0
    log /var/run/log local0 info

defaults
    log     global
    option redispatch -1
    timeout client 30s
    timeout connect 30s
    timeout server 30s
    retries 3

# Frontend: https_passthrough (https tcp mode main ip)
frontend https_passthrough
    bind x.x.x.x:443 name x.x.x.x:443
    mode tcp
    # tuning options
    timeout client 30s

    # logging options
    # ACL: service_sni
    acl acl_5f34555b7fae76.76760871 req.ssl_sni -i service.example.com

    # ACTION: service_https_passthrough
    use_backend service_https_passthrough if acl_5f34555b7fae76.76760871
    # WARNING: pass through options below this line
    tcp-request inspect-delay 10s

# Backend: service_https_passthrough ()
backend service_https_passthrough
    # health checking is DISABLED
    mode tcp
    balance source
    # stickiness
    stick-table type ip size 50k expire 30m
    stick on src
    # tuning options
    timeout connect 30s
    timeout server 30s
    server service_https_passthrough 10.0.1.105:443

Если соединение не удается, я нахожу такие записи, как

https_passthrough https_passthrough/<NOSRV> -1/-1/0 0 SC 1/1/0/0/0 0/0

в журналах. Но, как я уже сказал, внутренние серверы работают круглосуточно и без выходных, и весь день работают нормально из внутренней локальной сети (здесь также задействованы маршрутизация / брандмауэр / VLAN), поэтому я сомневаюсь, что это проблема брандмауэра.

Любая помощь приветствуется.

Похоже, добавление этих двух строк в конфигурацию внешнего интерфейса устранило проблему для меня:

tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }

Получено из Сообщение в блоге HAProxy.