Si necesitas configurar el reenvío de puertos de un puerto IPv4 a otro puerto IPv6, utilizaremos socat
.
Se asume que IPv6 ya está configurado y funcionando. Puedes verificarlo con los comandos
ping6 <dominio>
en Linux oping -6 <dominio>
en Windows.
En casos raros, el ping puede funcionar, pero el tráfico no circula. Puedes verificar aún más la conectividad usando el comando
curl --ipv6 -k -I https://ipv6.google.com
tanto para Linux como para Windows (sicurl
no está disponible en cmd, abre PowerShell).
Supongamos que tenemos la tarea de reenviar el puerto 443 de IPv4 al puerto 4445 en IPv6.
1. Instalación de socat
apt install socat
2. Reenvío de puertos
socat TCP6-LISTEN:4445,fork,reuseaddr TCP4:127.0.0.1:443
Asegúrate de que el puerto 443 sea accesible localmente, o cámbialo por una IP externa.
telnet 127.0.0.1 443
2.1 Verificación
telnet <ipv6> 4445
3. Creación de un servicio
Ahora, creemos un archivo de servicio para que el reenvío se reinicie automáticamente tras un reinicio sin necesidad de ejecutarlo manualmente. También aseguraremos que el servicio nginx
se inicie antes de nuestro comando.
nano /etc/systemd/system/socat-portforward.service
[Unit]
Description=Reenvío de puertos de IPv6 a IPv4 con Socat
After=network.target
After=nginx.service
Requires=nginx.service
[Service]
ExecStart=/usr/bin/socat TCP6-LISTEN:4445,fork,reuseaddr TCP4:127.0.0.1:443
Restart=always
RestartSec=3
User=root
Group=root
KillMode=process
[Install]
WantedBy=multi-user.target
3.1 Detención del servicio
Presiona Ctrl + C
o, si lo ejecutaste con &
:
killall socat
3.2 Iniciar como servicio
systemctl daemon-reload
systemctl enable --now socat-portforward
systemctl status socat-portforward
3.3 Secuencia de inicio
Añadimos líneas a la sección [Unit]
para garantizar la secuencia de inicio correcta:
After=nginx.service
Requires=nginx.service
¡Listo! Este comando puede usarse para configurar el reenvío de puertos en varias configuraciones.