// DevOps

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

Publicado el 22.09.2026

Introducción

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

En este artículo analizaremos:

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

¿Qué es el proxy TCP?

El proxy TCP es el reenvío de conexiones TCP desde el cliente hacia el servidor (o grupo de servidores) a través de un intermediario.
A diferencia de un 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 tráfico SSL (terminación o passthrough).

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.

cfg
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 check

Análisis de la configuración

  • global — establece parámetros básicos (registro de logs, chroot, usuario, modo daemon).
  • defaults — opciones por defecto, incluidos los timeouts. Por defecto mode http, pero en frontend y backend lo sobrescribimos a tcp.
  • frontend tcp-frontend — escucha el puerto 4444 y reenvía las solicitudes al backend.
  • backend tcp-backend — balancea las conexiones y define la lista de servidores. Las comprobaciones de disponibilidad se activan con el parámetro check en la línea server: sin él HAProxy no verifica el servidor, incluso si en el backend está option tcp-check. La directiva option tcp-check solo define cómo comprobar — por defecto es intentar abrir una conexión TCP.

Configuración de HAProxy paso a paso

  1. Instala HAProxy:

    bash
    # 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. Verifica la sintaxis:

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

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

    bash
    telnet <haproxy-ip> 4444

Monitorización: la página de estadísticas

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

cfg
frontend stats
    bind 127.0.0.1:8404
    mode http
    stats enable
    stats uri /stats
    stats refresh 10s
    stats auth admin:замените-на-длинный-пароль

La página escucha solo en la dirección local, por lo que no es accesible desde Internet. Puedes abrirla mediante un túnel SSH:

bash
ssh -L 8404:127.0.0.1:8404 user@<haproxy-ip>

y luego en el navegador http://127.0.0.1:8404/stats.

No publiques la página de estadísticas en una dirección externa, y la directiva stats admin (gestión de servidores desde la interfaz web) actívala solo junto con autenticación y restricción de acceso: con ella, desde la página se pueden sacar servidores de servicio.


Consejos para principiantes

  • 🔐 Seguridad — mantén la página de estadísticas en 127.0.0.1 o detrás de una VPN y usa una contraseña larga.

  • 🩺 Estado de los servidores — no olvides check en cada línea server. La comprobación TCP básica se puede ampliar con comprobaciones específicas del protocolo (por ejemplo, option mysql-check, option pgsql-check, option smtpchk).

  • ⚡ Escalado — añade más servidores:

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


Ejemplos de uso

  • Balanceo de bases de datos (MySQL, PostgreSQL).
  • Proxy de servicios de correo (SMTP, IMAP).
  • Proxy SSL en modo passthrough.
  • Punto de entrada unificado 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, comprobaciones específicas de protocolos. Un análisis detallado de HAProxy en modo HTTP, stick-tables y la página de estadísticas está en el artículo «Servidores proxy: Parte 3 — HAProxy».

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

// Contact

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Respondo en un día laborable (03:00-13:00 GMT)

Или оставьте заявку здесь:

Confirme que no es un bot.

Escribir y recibir una respuesta rápida