O HAProxy não pode fazer isso sozinho, mas se você usou um conjunto de frontend/listen
declerations bastante simples, você poderia usar o iptables
TEE
target (veja aqui para uso), deve ser bastante simples.
Para um sistema onde o IP "público" do servidor é 10.10.10.10, quem são os backends 192.168.1.11 e 192.168.1.12 e quem é o IDS 172.16.172.10, a configuração HAProxy seria algo como isto:
listen IN
mode tcp
bind 10.10.10.10:443
<other HAProxy options/directives here>
server hap-intermediary 127.1.1.1:443
frontend INTERMEDIARY
mode http
bind 127.1.1.1:443 ssl crt /path/to/cert.pem
<other HAProxy options/directives here>
<backend selection logic, if needed>
default_backend SERVERS
backend SERVERS
<other HAProxy options/directives here>
server server1 192.168.1.11:443 check check-ssl ssl
server server2 192.168.1.12:443 check check-ssl ssl
Isso basicamente passa todo o tráfego de IN
para INTERMEDIARY
na forma que entrou no servidor, e INTERMEDIARY
descriptografa os pedidos e faz as escolhas que quiser.
Você precisaria configurar iptables
regras assim:
iptables -t mangle -A PREROUTING -d 127.1.1.1 -j TEE --gateway 172.16.172.10
iptables -t mangle -A POSTROUTING -s 127.1.1.1 -j TEE --gateway 172.16.172.10
Claro, isso pressupõe que todas as rotas e redes sejam configuradas, mas deve funcionar.
Suponho que você poderia simplesmente acabar com todas as coisas sobre o HAProxy e configurar algumas regras de iptables
para corresponder aos seus hosts de back-end e TEE
desse tráfego direto para o seu IDS.
# Server 1
iptables -t mangle -A PREROUTING -d 192.168.1.11 -j TEE --gateway 172.16.172.10
iptables -t mangle -A POSTROUTING -s 192.168.1.11 -j TEE --gateway 172.16.172.10
# Server 2
iptables -t mangle -A PREROUTING -d 192.168.1.12 -j TEE --gateway 172.16.172.10
iptables -t mangle -A POSTROUTING -s 192.168.1.12 -j TEE --gateway 172.16.172.10