Reenvío de puertos de túnel SSH

Reenvío de puertos de túnel SSH

Tengo 2 VM, una con dirección IP privada (detrás de NAT) y otra con pública. Hice un túnel SSH con NAT. El objetivo es conectar la VM pública a la red detrás de NAT y reenviar algo de tráfico a través de ella. El objetivo es falsificar una aplicación que se ejecuta en esta red con otra similar en un servidor público (con fines de prueba).

Entonces hice algo como esto:

Habilitar túnel

sudo ssh [email protected] -w 0:0

Direccionamiento

ifconfig tun0 10.253.253.1/30 pointopoint 10.253.253.2 - Local

ifconfig tun0 10.253.253.2/30 pointopoint 10.253.253.1 - Remote

Agregar ruta a la red interna

ip route add 10.0.3.0/24 via 10.253.253.1

Para comunicación bidireccional (en realidad no estoy seguro de esta)

sudo arp -sD 10.253.253.1 ens18 pub

Reenvío de puertos en local

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -I FORWARD 1 -s 10.253.253.1 -j ACCEPT
sudo iptables -I FORWARD 1 -d 10.253.253.1 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.253.253.1 -j MASQUERADE

Y, de hecho, esto casi funciona: cuando desactivo el servicio de la aplicación en el host local, reenvía el tráfico al remoto. Pero hay un problema principal: este servidor local envía solicitudes en el puerto 4660 y otras (aplicaciones internas) responden en el puerto 4661. Parece que necesito una regla adicional para reenviar todo el tráfico entrante en el puerto 4661 a la interfaz del túnel al puerto 4660. ¿Cómo? para manejar esto? No estoy muy familiarizado con iptables, pero probé algo así pero no funciona:

iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4661 -j DNAT --to 10.253.253.1:4660
iptables -A FORWARD -p udp -d 10.253.253.1 --dport 4660 -j ACCEPT

Respuesta1

Ok, lo hice funcionar:

iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4661 -j DNAT --to 10.253.253.2:4661(remote tun address)

información relacionada