AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 988049
Accepted
olivierg
olivierg
Asked: 2019-10-16 02:06:38 +0800 CST2019-10-16 02:06:38 +0800 CST 2019-10-16 02:06:38 +0800 CST

HAProxy como balanceador de carga TCP (passagem SSL) não está funcionando?

  • 772

Estou tendo alguns problemas para configurar o HAProxy como um balanceador de carga TCP (camada 4) e gostaria de receber seu conselho sobre isso.

tenho seguido muitos guias na web e cheguei a esta configuração (não mostra nenhum erro nos logs, começa bem):

nota: nomes de domínio reais são mascarados

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
 daemon
 user                haproxy
 group               haproxy
 log                 /dev/log local6 debug
 maxconn             50000
 chroot              /var/lib/haproxy
 pidfile             /var/run/haproxy.pid

#---------------------------------------------------------------------
# common defaults 
#---------------------------------------------------------------------
defaults
 mode                 tcp
 log                  global
 option               dontlognull
 timeout connect      5000
 timeout client       50000
 timeout server       50000

#---------------------------------------------------------------------
# dedicated stats page
#---------------------------------------------------------------------
listen stats
 mode http
 bind :22222
 stats enable
 stats uri            /haproxy?stats
 stats realm          Haproxy\ Statistics
 stats auth           xxxxxx:xxxxxxxx
 stats refresh        30s

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main_https_listen
 bind *:443
 mode                tcp
 option              tcplog

# -------------------------------
# ACLs - SIT
# -------------------------------

acl acl_SIT_CI5      req.ssl_sni -i url1.domain.net
acl acl_SIT_HR8      req.ssl_sni -i url2.domain.net

# -------------------------------
# Conditions - SIT
# -------------------------------

use_backend backend_SIT_CI5 if acl_SIT_CI5
use_backend backend_SIT_HR8 if acl_SIT_HR8

#---------------------------------------------------------------------
# Backends
#---------------------------------------------------------------------

backend backend_SIT_CI5
 mode tcp
 balance source
 option ssl-hello-chk
 server server_SIT_CI5_1 host1.domain.net:443 check
 server server_SIT_CI5_2 host2.domain.net:443 check

backend backend_SIT_HR8
 mode tcp
 balance source
 option ssl-hello-chk
 server server_SIT_HR8_1 host1.domain.net:443 check
 server server_SIT_HR8_2 host2.domain.net:443 check

eu apontei host1.domain.net para o meu haproxy vIP (ele tem uma configuração keepalived por trás com um IP virtual).

agora ao acessar https://url1.domain.net (ou mesmo https://loadbalancerURL mas suponho que isso seja normal nesse) eu tenho um erro Esta página não pode ser exibida. Ative o TLS 1.0, TLS 1.1 e TLS 1.2 em Configurações avançadas e tente conectar-se a https://host1.domain.net novamente .

um único openssl s_client fornece uma falha de handshake SSL (sem certificados blabla).

você tem alguma ideia do que eu fiz de errado? Além disso, preciso configurar alguns certificados enquanto estou ouvindo em 443? (mesmo que eu não queira que esses certificados sejam descriptografados ou qualquer outra coisa, pois só quero que meu HAProxy atue como um proxy).

eu também tentei ativar o modo de depuração para log, mas não mostrou nenhum erro (nem novos logs)

nota : os backends estão localizados atrás de firewalls, a comunicação entre backends para o HAProxy não é aberta no 443 (somente do Haproxy para os backends), precisa ser direcional ? e porque ?

note2: nas estatísticas do haproxy, posso ver todos os back-ends UP

Além disso, existe uma maneira de saber/verificar se um redirecionamento baseado no nome do host (SNI) está funcionando bem ou não? (tenho a impressão de que a conexão fica no load balancer e não é redirecionada para o backend, e é por isso que estou com erro)

um haproxy -vv dá:

HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <[email protected]>

Build options :
  TARGET  = linux2628
  CPU     = generic
  CC      = gcc
  CFLAGS  = -O2 -g -fno-strict-aliasing -DTCP_USER_TIMEOUT=18
  OPTIONS = USE_LINUX_TPROXY=1 USE_GETADDRINFO=1 USE_ZLIB=1 USE_REGPARM=1     USE_OPENSSL=1 USE_PCRE=1

Default settings :
  maxconn = 2000, bufsize = 16384, maxrewrite = 8192, maxpollevents = 200

Encrypted password support via crypt(3): yes
Built with zlib version : 1.2.7
Compression algorithms supported : identity, deflate, gzip
Built with OpenSSL version : OpenSSL 1.0.2k-fips  26 Jan 2017
Running on OpenSSL version : OpenSSL 1.0.2k-fips  26 Jan 2017
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports prefer-server-ciphers : yes
Built with PCRE version : 8.32 2012-11-30
PCRE library supports JIT : no (USE_PCRE_JIT not set)
Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT     IP_FREEBIND

Available polling systems :
      epoll : pref=300,  test result OK
       poll : pref=200,  test result OK
     select : pref=150,  test result OK
Total: 3 (3 usable), will use epoll.
ssl
  • 2 2 respostas
  • 9630 Views

2 respostas

  • Voted
  1. Best Answer
    olivierg
    2019-10-16T07:26:37+08:002019-10-16T07:26:37+08:00

    ew, eu fiz isso funcionar adicionando isso no frontend (depois de ver este post :)

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

    a coisa é, eu não sei o que essas opções estão fazendo .. ou porque eu preciso especificá-los. isso significa que o comportamento padrão do HAProxy é rejeitar qualquer coisa?

    • 0
  2. Malcolm turnbull
    2022-04-03T23:11:08+08:002022-04-03T23:11:08+08:00

    As duas linhas que você adicionou garantem que o HAProxy tenha tempo suficiente para ler o cabeçalho SNI antes de escolher um back-end e também verificar se é realmente tráfego SSL (ou rejeitá-lo).

    Você provavelmente também deseja selecionar um back-end padrão:

    default_backend backend_SIT_CI5
    

    para um SNI que não corresponde.

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve