Reenvío de puertos con Rinetd
Redirección sencilla de tráfico TCP en VPS y servidores dedicados.
Rinetd es un proxy TCP ligero de proceso único que redirige conexiones de una dirección IP y puerto a otra. Es ideal para VPS y servidores dedicados cuando necesitas:
- redirigir un puerto público hacia un servidor o servicio interno
- ejecutar varios servicios en el mismo puerto público
- proporcionar acceso a servicios detrás de NAT o en una red privada
- configurar rápidamente el reenvío de puertos sin reglas iptables complejas
Rinetd utiliza I/O no bloqueante y funciona como proceso único, por lo que puede gestionar un gran número de conexiones simultáneas con un impacto mínimo en el servidor.
Instalar Rinetd
Ubuntu / Debian:
sudo apt update
sudo apt install rinetd -y
CentOS / RHEL / AlmaLinux / Rocky:
sudo yum install rinetd -y
# o bien
sudo dnf install rinetd -y
Configurar el reenvío de puertos
- Abre el archivo de configuración:
sudo nano /etc/rinetd.conf
- Añade las reglas de reenvío al final del archivo con este formato:
public_IP external_port internal_IP internal_port
Ejemplo (reenvío desde una IP pública a varios servidores internos):
85.85.85.85 12341 192.168.1.5 1234
85.85.85.85 12342 192.168.1.6 1234
85.85.85.85 12343 192.168.1.7 1234
85.85.85.85 12344 192.168.1.8 1234
85.85.85.85 12345 192.168.1.9 1234
- Columna 1: IP pública en la que escucha el servidor (o
0.0.0.0para todas las interfaces) - Columna 2: puerto externo en el que escucha rinetd
- Columna 3: IP interna a la que se reenvía el tráfico
- Columna 4: puerto interno en la máquina de destino
Usa espacios (no tabulaciones) entre columnas. Añade una línea por cada regla de reenvío. Guarda el archivo (Ctrl+O → Enter → Ctrl+X).
Nuestros servicios y productos
- Reinicia rinetd para aplicar los cambios:
sudo systemctl restart rinetd
# o bien
sudo service rinetd restart
Verificar el funcionamiento
- Comprueba que el servicio esté en ejecución:
sudo systemctl status rinetd
- Consulta los puertos en los que rinetd está escuchando:
sudo ss -tuln | grep rinetd
o bien
sudo netstat -tuln | grep rinetd
- Prueba el reenvío:
- Conéctate desde el exterior a tu IP pública en el puerto 12341 → el tráfico debe llegar a 192.168.1.5:1234
- Usa
telnet,nc(netcat) o cualquier cliente para verificarlo.
Notas útiles
- Por defecto, rinetd no registra nada. Para habilitar el logging, añade lo siguiente en
/etc/rinetd.conf:
log /var/log/rinetd.log
- Para restringir el acceso a IPs de origen concretas, aplica reglas
iptablesofirewall-cmdantes de rinetd. - Bajo carga muy elevada (miles de conexiones), rinetd puede consumir una cantidad significativa de memoria — monitoriza con
topohtop. - Alternativas: socat, iptables DNAT, HAProxy, módulo stream de NGINX — aunque rinetd sigue siendo la opción más sencilla y ligera para el reenvío de puertos básico.
Ayuda
¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!