
Ich bin nicht sicher, ob ich dies in Unix & Linux oder in der Netzwerktechnik fragen sollte.
Hier ist das physikalische Szenario
[Host 1]----[NAT der Trägerklasse]---->AWS<----[NAT der Trägerklasse]----[Host 2]
Gastgeber 1UndGastgeber 2werden per Reverse-SSH (Autossh) in eine AWS-Box eingebunden, so dass sie bei Bedarf über eine Shell-Konnektivität verfügen und bei Bedarf auch jeden anderen Port freigeben können.
Gastgeber 2sendet Backup-Dumps anGastgeber 1mit SCP regelmäßig. Es gibt tatsächlichHost2 x 10Boxen, die die Datendumps pushen. Der nächste AWS-Standort ist ziemlich weit vom Standort der Boxen entfernt, daher ist die Latenz ziemlich hoch.
Besteht die Möglichkeit, die AWS-Box als Treffpunkt zu verwenden, um einen SSH-Tunnel zwischen den Boxen zu vermitteln? Ich kenne die IPv6-Tunnelbroker, aber die ISPs in der Region müssen sie noch übernehmen (20 Jahre zu spät ... na klar!). Ich suche nach einer Lösung, die auf Folgendem basiert:
- TCP/UDP Hole Punching (mit praktischer Umsetzung)
- UPnP-/NAT-PMP-Dienst auf AWS
- Hacken Sie es mit Tools wie Chrome Remote Desktop, um den SSH-Port anstelle von VNC freizugeben
- Jeder andere Routerdienst.
- Jeder andere praktische Ansatz.
Auf den Boxen läuft meist CentOS 6/7.
Antwort1
Nicht ganz das, was Sie brauchen, aber: Sie können den umgekehrten lokalen Port von Host1 oder Host2 mit iptables als externen Port verfügbar machen. Nehmen wir also an, Sie haben Ihren Host2 als umgekehrten SSH-Tunnel verbunden:
user2@host2 $ ssh -R 9999:localhost:22 [email protected]
Jetzt können Sie den eingehenden Port aws.com:9999 an aws [localport:9999] weiterleiten: Auf dem AWS-Server:
[email protected] # iptables -t nat -I PREROUTING -p tcp --dport 9999 -j DNAT --to 127.0.0.1:9999
Und jetzt können Sie auf diese Weise eine Verbindung von Host2 zu Host1 herstellen:
user1@host1 $ ssh [email protected] -p 9999
Bingo. So hast du dich verbunden:
[Host 1] --> [aws:Port 9999] --> [aws: umgekehrter Tunnel auf 127.0.0.1:9999] --> [Host 2]
Sie sollten den Iptable-Eintrag entfernen, wenn diese Verbindung nicht mehr verwendet wird:
[email protected] # iptables -t nat -A PREROUTING -p tcp --dport 9999 -j DNAT --to 127.0.0.1:9999
Der Nachteil dieser Lösung besteht darin, dass Host2 über den externen Port 9999 für alle sichtbar ist. Sie müssen für die Anmeldung zwar trotzdem ein Kennwort eingeben, dieses wird jedoch sichtbar gemacht.
UPD: Möglicherweise müssen Sie auch die lokale Weiterleitung aktivieren:
awsuser@aws # ls echo 1 > /proc/sys/net/ipv4/conf/all/route_localnet
Oder aktivieren Sie die Funktion nicht für alle Schnittstellen, sondern nur für die Einkommensschnittstelle:
awsuser@aws # ls echo 1 > /proc/sys/net/ipv4/conf/eth0/accept_local