Bandera: Русский Русский Bandera: English English

Proxy de conexiones TCP con HAProxy: Guía para principiantes

Publicado el 03.10.2025

Introducción

Si eres un administrador de sistemas o desarrollador principiante, probablemente te hayas enfrentado a la tarea de gestionar el tráfico de red.
Una de las herramientas potentes para esto es HAProxy, un equilibrador de carga de alto rendimiento para TCP y HTTP.

En este artículo veremos:

  • qué es el proxy TCP,
  • por qué usar HAProxy,
  • un ejemplo de configuración para principiantes,
  • consejos de seguridad y monitorización.

¿Qué es el proxy TCP?

El proxy TCP es el reenvío de conexiones TCP desde el cliente hacia un servidor (o grupo de servidores) a través de un intermediario.
A diferencia del proxy HTTP, que opera en la capa de aplicación, el proxy TCP funciona en la capa de transporte, lo que lo hace universal para cualquier protocolo TCP: desde bases de datos hasta servicios de correo.


¿Por qué usar HAProxy?

HAProxy es una herramienta ligera y flexible que permite:

  • 🔄 distribuir la carga entre varios servidores;
  • ✅ comprobar la disponibilidad de los servidores;
  • 📊 proporcionar estadísticas y monitorización convenientes;
  • 🔒 manejar el tráfico SSL (terminación o paso a través).

Ejemplo de configuración de HAProxy para proxy TCP

A continuación una configuración que escucha conexiones en el puerto 4444 y las redirige a un servidor de prueba.

global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log global
    mode http
    option dontlognull
    timeout connect 5000
    timeout client 50000
    timeout server 50000

frontend tcp-frontend
    bind *:4444
    mode tcp
    default_backend tcp-backend

backend tcp-backend
    mode tcp
    balance roundrobin
    option tcp-check
    server server1 192.168.1.100:443 weight 1

Análisis de la configuración

  • global — establece parámetros básicos (registro, chroot, usuario, modo daemon).
  • defaults — opciones por defecto, incluidos los timeouts. Por defecto mode http, pero en frontend y backend lo sobreescribimos a tcp.
  • frontend tcp-frontend — escucha en el puerto 4444 y reenvía las solicitudes al backend.
  • backend tcp-backend — balancea las conexiones, comprueba su disponibilidad (tcp-check) y define la lista de servidores.

Configuración de HAProxy paso a paso

  1. Instala HAProxy:

    # Ubuntu/Debian
    sudo apt update && sudo apt install haproxy
    
    # CentOS/RHEL
    sudo yum install haproxy
    
  2. Guarda la configuración en /etc/haproxy/haproxy.cfg.

  3. Comprueba la sintaxis:

    haproxy -c -f /etc/haproxy/haproxy.cfg
    
  4. Reinicia el servicio:

    sudo systemctl restart haproxy
    sudo systemctl enable haproxy
    
  5. Prueba la conexión:

    telnet <haproxy-ip> 4444
    

Monitorización: página de estadísticas

Para supervisar el estado de los servidores y las conexiones, añade la sección:

frontend stats
    bind *:3308
    mode http
    stats enable
    stats uri /haproxy?stats
    stats realm Haproxy\ Statistics
    stats auth admin:securepassword123
    stats admin if TRUE

Ábrelo en el navegador:

http://<haproxy-ip>:3308/haproxy?stats

Consejos para principiantes

  • 🔐 Seguridad — usa contraseñas fuertes y limita el acceso a las estadísticas por IP.

  • 🩺 Salud de los servidorestcp-check es básico; puedes ampliarlo con comprobaciones específicas del protocolo.

  • Escalado — añade más servidores:

    server server2 192.168.1.101:443 weight 1
    server server3 192.168.1.102:443 weight 1
    
  • 📝 Registro — revisa /var/log/haproxy.log (si es necesario, configura rsyslog).


Ejemplos de uso

  • Balanceo de bases de datos (MySQL, PostgreSQL).
  • Proxy para servicios de correo (SMTP, IMAP).
  • Proxy SSL passthrough.
  • Punto de entrada único para microservicios.

Conclusión

HAProxy hace que el proxy TCP sea sencillo incluso para principiantes.
Basta con configurar frontend y backend, añadir comprobaciones de disponibilidad y monitorización — y tendrás un proxy fiable.

A medida que ganes experiencia puedes pasar a escenarios avanzados: terminación SSL, ACL, health checks personalizados.

¡Éxitos en la configuración y el balanceo! 🚀

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Publicaciones relacionadas