TCP/UDP – Acesso via HAProxy
🔁 Introdução
O HAProxy pode atuar como proxy TCP ou UDP na camada 4 (transport layer), permitindo redirecionamento de serviços como:
- MySQL / PostgreSQL (TCP)
- Redis, MongoDB, RDP (TCP)
- SNMP, DNS (UDP)
🛠️ Estrutura Básica – TCP
🔹 Frontend TCP
frontend ft_mysql_tcp
bind *:33090
mode tcp
default_backend bk_mysql_tcp
🔸 Backend TCP
backend bk_mysql_tcp
mode tcp
server mysql1 10.101.10.10:3306 check
Explicação:
bind *:33090
: escuta conexões TCP na porta 33090 (externa).mode tcp
: define que o tráfego será tratado como TCP puro.server
: IP interno e porta do serviço real (neste exemplo, MySQL).check
: ativa checagem básica TCP (SYN/ACK).
🌐 Estrutura Básica – UDP (HAProxy 2.0+)
🔹 Frontend UDP
frontend ft_snmp_udp
bind *:161 proto udp
mode udp
default_backend bk_snmp_udp
🔸 Backend UDP
backend bk_snmp_udp
mode udp
server snmp1 10.10.10.50:161
Explicação:
proto udp
: habilita modo UDP.mode udp
: necessário para encaminhar pacotes datagram.
⚠️ O modo UDP requer HAProxy 2.0 ou superior.
🧩 Entendendo o Bloco TCP/UDP no HAProxy
frontend ft_postgresql_tcp
bind *:54320
mode tcp
default_backend bk_pg
backend bk_pg
mode tcp
server pg1 10.200.10.10:5432 check
🔈 bind
Escuta conexões na porta externa especificada. É comum mapear portas não padrão (ex: 54320) para aumentar a segurança.
🔁 default_backend
Define qual backend será usado para receber as conexões redirecionadas.
🧠 mode tcp | udp
Define o tipo de protocolo tratado. Evita que o HAProxy tente interpretar cabeçalhos HTTP.
🔎 check
Habilita checagem TCP (não se aplica a UDP).
✅ Exemplo de uso externo
🎯 Acessando PostgreSQL (TCP)
- IP do HAProxy:
203.0.113.10
- Porta externa:
54320
psql -h 203.0.113.10 -p 54320 -U postgres