A seguir está o requisito
Primeiro, altere o IP de destino de solicitações/pacotes gerados localmente para
localhost
. Por exemplo172.17.0.1:7199
->
127.0.0.1:7199
Em seguida, redirecione esta solicitação/pacote para a porta proxy local (por exemplo,
socks-proxy
porta/redsocks
12345
porta)
Como posso fazer isso com iptables
ou com qualquer outra ferramenta?
A seguir está uma explicação mais detalhada.
Eu tenho dois servidores server1 - 172.17.0.1
, server2 - 172.17.0.2
. Preciso acessar JMX
a porta ( 7199
) server1
em server2
. Como desabilitei o JMX remoto server1
, não consigo acessá-lo por server2
meio do encaminhamento local SSH (é necessário acessar 7199
a porta com localhost
from server2
). Então eu criei o proxy de meias SSH e configurei-o comMeias vermelhasferramenta. Está funcionando bem.
# 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
Agora, se eu conectar ao 127.0.0.1:7199
from service2
(por exemplo telnet localhost 7199
), ele se conectará à porta JMX ( 7199
) do server1
. Redsocks roteiam pacotes corretamente para o server1
proxy via meias.
Eu tenho outro requisito. Ao chegar pacotes com endereço IP de service1
(por exemplo 172.17.0.1:7199
), preciso redirecioná-los para localhost ( 127.0.0.1:7199
). Por exemplo, se eu me conectar com 172.17.0.1:7199
from service2
, preciso redirecioná-lo para 127.0.0.1:7199
para acessar a porta JMX por service1
meio do proxy meias. Normalmente o redirecionamento de endereço IP pode ser feito com uma das seguintes iptables
regras. Como existem outras iptables
regras (relacionadas ao Redsocks), isso não 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
Como o redirecionamento de endereço IP localhost
pode ser feito neste cenário?