Nachfolgend finden Sie die Anforderung
Ändern Sie zunächst die Ziel-IP lokal generierter Anfragen/Pakete in
localhost
. Ein Beispiel172.17.0.1:7199
->
127.0.0.1:7199
Leiten Sie diese Anfrage/dieses Paket dann an den lokalen Proxy-Port weiter (z. B.
socks-proxy
Port/redsocks
12345
Port).
iptables
Wie kann ich dies mit einem anderen Tool tun ?
Es folgt eine ausführlichere Erklärung.
Ich habe zwei Server server1 - 172.17.0.1
, server2 - 172.17.0.2
. Ich muss auf JMX
Port ( 7199
) server1
von zugreifen server2
. Da ich Remote-JMX auf deaktiviert habe server1
, kann ich nicht über lokale SSH-Weiterleitung darauf zugreifen server2
(muss auf 7199
Port mit localhost
von zugreifen server2
). Also habe ich einen SSH-Socks-Proxy erstellt und ihn mit konfiguriertRote SockenWerkzeug. Es funktioniert gut.
# 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
127.0.0.1:7199
Wenn ich mich jetzt von service2
(z. B. ) aus verbinde, telnet localhost 7199
wird eine Verbindung zum JMX-Port ( 7199
) von server1
hergestellt. Redsocks leitet Pakete über den Socks-Proxy korrekt an weiter server1
.
Ich habe noch eine weitere Anforderung. Wenn Pakete mit der IP-Adresse von service1
(z. B. 172.17.0.1:7199
) eingehen, muss ich sie an localhost( 127.0.0.1:7199
) umleiten. Wenn ich mich beispielsweise mit 172.17.0.1:7199
von verbinde service2
, muss ich es an umleiten, 127.0.0.1:7199
um service1
über den Socks-Proxy auf den JMX-Port in zuzugreifen. Normalerweise kann die Umleitung der IP-Adresse mit einer der folgenden Regeln erfolgen iptables
. Da es andere iptables
Regeln gibt (in Bezug auf Redsocks), funktioniert dies nicht.
# 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
localhost
Wie kann in diesem Szenario eine IP-Adressumleitung erfolgen?