Pular para o conteúdo principal

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