El siguiente es el requisito
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
Luego redirija esta solicitud/paquete al puerto proxy local (por ejemplo,
socks-proxy
puerto/redsocks
12345
puerto)
¿Cómo puedo hacer esto con iptables
o 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 JMX
al puerto ( 7199
) server1
desde server2
. Como deshabilité JMX remoto en server1
, no puedo acceder a él server2
mediante el reenvío local SSH (es necesario acceder 7199
al puerto localhost
desde 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:7199
desde service2
(por ejemplo telnet localhost 7199
), se conectará al puerto JMX ( 7199
) de server1
. Redsocks enruta los paquetes correctamente al server1
proxy 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:7199
desde service2
, necesito redirigirlo 127.0.0.1:7199
para poder acceder al puerto JMX a service1
través del proxy de calcetines. Normalmente, la redirección de direcciones IP se puede realizar con una de las siguientes iptables
reglas. Dado que existen otras iptables
reglas (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 localhost
en este escenario?