
Mein Setup ist folgendes:
[client01] <-A-> [server01] <-B-> [server02]
client01
kann auf Port 9300 von server01
(Verbindung A
) zugreifen. server01
kann nur 9300
auf Port von server02
(Verbindung B
) zugreifenüber ssh. Was ist die beste Möglichkeit, den gesamten Verkehr auf Port 1 an den Port 9300
umzuleiten ?server01
9300
server02
Ich kann dies erfolgreich mit einem SSH-Tunnel von client01
nach server01
nach tun server02
, möchte aber kein SSH auf ausführen müssen client01
. Wenn ich SSH von nach verwende und Port 9300 ( auf ) server01
weiterleite , funktioniert es nicht – verwende ich den falschen Befehl?server02
ssh -g -L9300:localhost:9300 server02
server01
EDIT: hinzugefügt, dass server02 nur über ssh erreichbar ist
Antwort1
Sie können dies mit einer iptables DNAT-Regel tun, etwa so:
iptables -A PREROUTING -p tcp -d x.x.x.x --dport 9300 -j DNAT --to-destination y.y.y.y:9300
Ersetzen Sie die IP-Adresse von Server01 durch x.x.x.x
und die Adresse von Server02 durch y.y.y.y
und schon sind Sie fertig.
Dies alles setzt natürlich voraus, dass Sie iptables auf Server01 ausführen. Dies setzt auch voraus, dass Server02 Server01 verwendet, um den Datenverkehr zurück ins Internet zu leiten. Wenn Server02 dies nicht tut, dann funktioniert dies nicht, was Sie möchten.
Bearbeitung im Hinblick auf die Nur-SSH-Konnektivität zwischen den Maschinen:
Ihre Befehlszeile für die SSH-Portweiterleitung sieht in Ordnung aus, außer dass Sie zwischen dem „L“ und „9300“ ein Leerzeichen benötigen. Sie müssen außerdem sicherstellen, dass der Computer server01 eingehende Verbindungen auf Port 9300 akzeptiert. Sehen Sie sich Ihre iptables INPUT-Kette in der Filtertabelle ( iptables -L INPUT
) an, um sicherzustellen, dass der Datenverkehr zugelassen wird.
Sie müssen diesen Tunnel auch ständig instand halten.