Reenvío de puertos en Ubuntu, desde ip pública a un cliente

Reenvío de puertos en Ubuntu, desde ip pública a un cliente

En un VPS con el servidor Ubuntu 20.04 instalado y OpenVPN, necesito reenviar todo el tráfico desde un puerto específico de la ip pública del vps al mismo puerto de un cliente VPN.

IP de VPS:

vps public ip: 1.1.1.1
vps vpn ip: 10.8.0.1

IP del cliente:

vpn client ip: 10.8.0.2

Reenvío de puertos para el puerto 587:

1.1.1.1:587 >> 10.8.0.2:587

Intenté ejecutar los comandos en el VPS (1.1.1.1):

sudo iptables -t nat -A PREROUTING -p tcp --dport 587 -j DNAT --to-destination 10.8.0.2:587
sudo iptables -t nat -A POSTROUTING -p tcp -d 10.8.0.2 --dport 587 -j SNAT --to-source 1.1.1.1

Pero los paquetes no se reenvían a la ip 10.8.0.2.

¿Alguna idea de cómo se debe configurar iptables para realizar un correcto reenvío de puertos?

Respuesta1

Encontré esta solución que funciona como se esperaba:

sudo sysctl net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -p tcp --dport 587 -j DNAT --to-destination 10.8.0.2:587
#exclude "lo" interface, otherwise dns service stop working
sudo iptables -t nat -A POSTROUTING ! -o lo -j MASQUERADE

información relacionada