Wie funktioniert die Portweiterleitung für den GNS3-Server (SSH-Tunneling)?

Wie funktioniert die Portweiterleitung für den GNS3-Server (SSH-Tunneling)?

Ich habe einen GNS3-Server und versuche, iptable-Regeln hinzuzufügen, damit jemand aus meinem Team, der sich über Port 1100 verbindet, zu einer internen IP wie 192.168.122.2:22 weitergeleitet wird. Diese interne IP gehört zu einem Bastion-Host eines GNS3-Projekts. Das Endziel besteht darin, von einem lokalen Computer aus per shh auf die internen IP-Adressen zugreifen zu können.

So sieht meine IPTABLE aus (ich verwende als Beispiel die gefälschte öffentliche IP 1.2.3.4):

Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    DNAT       tcp  --  0.0.0.0/0            1.2.3.4       tcp dpt:1100 to:192.168.122.2:22

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0          

Chain DOCKER (0 references)
num  target     prot opt source               destination         

Chain LIBVIRT_PRT (0 references)
num  target     prot opt source               destination

Von meinem lokalen Computer aus führe ich den Befehl aus . Ubuntu ist der Benutzername, der für den Zugriff auf die interne IP des GNS3-Projekts benötigt wird.ssh [email protected] -p1100

Nach der Ausführung dieses Befehls erhalte ich auf dem GNS3-Server (1.2.3.4) folgende Ausgabe: cloud@gns3:~$ connect_to 192.168.122.2 port 1100: failed.

Es scheint, als ob mein SSH-Befehl den GNS3-Server erreicht und versucht, eine Portweiterleitung durchzuführen.Aus irgendeinem Grund wird jedoch versucht, die Verbindung an Port 1100 statt an Port 22 weiterzuleiten. Kann jemand den Grund dafür ermitteln?

Folgendes habe ich bisher versucht:

  1. Setzen Sie die IPv4-Portweiterleitung auf 1
  2. Setzen Sie GatewayPorts und AllowTcpForwarding auf 1 in
  3. lief auf dem lokalen Rechner (ich glaube, dadurch wurden einige Konfigurationen auf dem Server geändert) -ssh -R 1.2.3.4:1100:192.168.122.2:22 [email protected]
  4. Regel zu IPtables mit Befehl hinzugefügtsudo iptables --table nat --append PREROUTING --protocol tcp --destination 1.2.3.4 --dport 1100 --jump DNAT --to-destination 192.168.122.2:22
  5. Außerdem wurde Masquerading hinzugefügt:sudo /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE

Antwort1

Anstatt DNAT zu verwenden, sollte es gemäß dieser Quelle REDIRECT heißen:

https://fabianlee.org/2018/09/17/iptables-running-service-as-non-root-iptables-to-forward-from-privileged-port/

Also:

sudo iptables --table nat --append PREROUTING --protocol tcp --destination 1.2.3.4 --dport 1100 --jump REDIRECT --to-destination 192.168.122.2:22

verwandte Informationen