Haproxy hdr_ip acl não afetado pelo reqidel?

1

Eu tenho um servidor que fica atrás de um balanceador de carga, mas por enquanto também pode ser acessado diretamente.

Eu tenho uma lista branca de endereços IP que devem ser capazes de acessá-lo.

Dada a seguinte configuração:

frontend http
  bind 0.0.0.0:80

  acl from_internal src 10.0.0.0/8
  reqidel ^X-Cluster-Client-Ip unless from_internal

  acl ip_allow src -f /etc/haproxy/allow.txt
  acl lb_allow hdr_ip(X-Cluster-Client-Ip) -f /etc/haproxy/allow.txt

  http-request allow if ip_allow
  http-request allow if lb_allow
  http-request deny

Eu quero permitir solicitações diretas de determinados IPs ( ip_allow ). Desejo permitir solicitações que o balanceador de carga definiu X-Cluster-Client-Ip para ( lb_allow ).

No entanto, só quero confiar nesse cabeçalho do balanceador de carga ( 10.0.0.0/8 ). Em todos os outros casos, quero apenas excluí-lo.

Parece que o cabeçalho não é excluído ao aplicar a ACL - se eu definir X-Cluster-Client-Ip como um IP confiável e me conectar diretamente ao servidor, então eu o receberei. Existe uma maneira de contornar isso?

    
por steveh7 26.06.2014 / 22:04

1 resposta

0

Sim, você não pode confiar na manipulação do cabeçalho para afetar as ACLs - elas não são aplicadas na ordem após a desconexão.

No seu caso, você pode facilmente alterar a lógica

http-request allow if ip_allow
http-request allow if lb_allow from_internal
http-request deny
    
por 27.06.2014 / 11:42

Tags