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