Cambie la IP de destino del paquete a localhost y rediríjalo a otro puerto

Cambie la IP de destino del paquete a localhost y rediríjalo a otro puerto

El siguiente es el requisito

  1. Primero, cambie la IP de destino de las solicitudes/paquetes generados localmente a localhost. Para un ejemplo172.17.0.1:7199 -> 127.0.0.1:7199 

  2. Luego redirija esta solicitud/paquete al puerto proxy local (por ejemplo, socks-proxypuerto/ redsocks 12345puerto) 

¿Cómo puedo hacer esto con iptableso cualquier otra herramienta?


A continuación se ofrece una explicación más detallada.

Tengo dos servidores server1 - 172.17.0.1, server2 - 172.17.0.2. Necesito acceder JMXal puerto ( 7199) server1desde server2. Como deshabilité JMX remoto en server1, no puedo acceder a él server2mediante el reenvío local SSH (es necesario acceder 7199al puerto localhostdesde server2). Así que creé el proxy de calcetines SSH y lo configuré conCalcetines rojosherramienta. Está funcionando bien.

# run socks proxy from service2
ssh -v -N -D 9999 [email protected]

# configure socks proxy with Redsocks in service2
redsocks {
    // redsocks listening port
    local_ip = 127.0.0.1;
    local_port = 12345;

    // socks proxy 
    ip = 127.0.0.1;
    port = 9999;

    type = socks5;
}

# configure iptable rules to route the packets to Redsocks in service2
sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
sudo iptables -t nat -A OUTPUT -p tcp --dport 7199 -j REDSOCKS
sudo iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner <user id> -j REDSOCKS

Ahora, si me conecto 127.0.0.1:7199desde service2(por ejemplo telnet localhost 7199), se conectará al puerto JMX ( 7199) de server1. Redsocks enruta los paquetes correctamente al server1proxy a través de calcetines. 

Tengo otro requisito. Cuando llegan paquetes con la dirección IP de service1(por ejemplo 172.17.0.1:7199), necesito redirigirlos a localhost( 127.0.0.1:7199). Por ejemplo, si me conecto 172.17.0.1:7199desde service2, necesito redirigirlo 127.0.0.1:7199para poder acceder al puerto JMX a service1través del proxy de calcetines. Normalmente, la redirección de direcciones IP se puede realizar con una de las siguientes  iptablesreglas. Dado que existen otras iptablesreglas (relacionadas con Redsocks), no funciona.

# redirect with host
iptables -t nat -A OUTPUT -p tcp -d 172.17.0.1 -j DNAT --to-destination 127.0.0.1

# redirect with host and port
iptables -t nat -A OUTPUT -p tcp -d 172.17.0.1 --dport 7199 -j DNAT --to-destination 127.0.0.1:7199

¿Cómo se puede realizar la redirección de direcciones IP localhosten este escenario?

información relacionada