Saltar al contenido principal

TCP/UDP – Acceso vía HAProxy

🔁 Introducción

HAProxy puede actuar como proxy TCP o UDP en la capa 4 (capa de transporte), permitiendo redirigir servicios como:

  • MySQL / PostgreSQL (TCP)
  • Redis, MongoDB, RDP (TCP)
  • SNMP, DNS (UDP)

🛠️ Estructura 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

Explicación:

  • bind *:33090: escucha conexiones TCP en el puerto 33090 (externo).
  • mode tcp: define que el tráfico será tratado como TCP puro.
  • server: IP interna y puerto del servicio real (en este ejemplo, MySQL).
  • check: activa chequeo básico TCP (SYN/ACK).

🌐 Estructura 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

Explicación:

  • proto udp: habilita modo UDP.
  • mode udp: necesario para reenviar paquetes datagram.

⚠️ El modo UDP requiere HAProxy 2.0 o superior.


🧩 Entendiendo el Bloque TCP/UDP en 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

Escucha conexiones en el puerto externo especificado. Es común mapear puertos no estándar (ej: 54320) para aumentar la seguridad.

🔁 default_backend

Define qué backend será usado para recibir las conexiones redirigidas.

🧠 mode tcp | udp

Define el tipo de protocolo tratado. Evita que HAProxy intente interpretar cabeceras HTTP.

🔎 check

Habilita chequeo TCP (no aplica para UDP).



✅ Ejemplo de uso externo

🎯 Accediendo a PostgreSQL (TCP)

  • IP de HAProxy: 203.0.113.10
  • Puerto externo: 54320
psql -h 203.0.113.10 -p 54320 -U postgres

📚 Enlaces útiles