Wie sende ich Datenverkehr über eine bestimmte Schnittstelle an eine bestimmte IP-Adresse?

Wie sende ich Datenverkehr über eine bestimmte Schnittstelle an eine bestimmte IP-Adresse?

Auf einer Debian Stretch VM (die in VirtualBox auf einem Windows 7-Host läuft) möchte ich mich per SSH mit einem bestimmten Remote-Host (nennen wir ihn myServermit IP 12.34.56.78) verbinden. Dazu verwende ich mein Android-Smartphone als USB-Modem, was gut funktioniert: Ich kann auf das Internet zugreifen und etwas „Ping“ und HTTP/HTTPS-Verkehr generieren und sogar eine SSH-Verbindung mit einem Befehl wie diesem öffnen:

ssh [email protected] -b a.b.c.d -p portNumber -i ~/.ssh/id_rsa

NB: a.b.c.dIst die dynamische IP-Adresse, die meiner USB-Schnittstelle beim Anschluss zugewiesen wird

Der Einfachheit halber hätte ich gerne alle diese Einstellungen, ~/.ssh/configsodass ich nur Folgendes eingeben muss ssh myServer:

Host myServer
    HostName 12.34.56.78
    Port portNumber
#   BindAddress a.b.c.d     <== commented because this is part of the question
#   BindInterface usb0      <== same as above
    User httqm
    IdentityFile ~/.ssh/id_rsa
  • Ich kann die BindAddressZeile auskommentieren und die IP-Adresse angeben, was zwar funktioniert, aber keinen Vorteil gegenüber der vollständigen SSH-Befehlszeile bietet, da a.b.c.des dynamisch ist
  • Verwendung derBindInterfaceOption (ohne BindAddress) schlägt mit der Fehlermeldung fehl:

    ~/.ssh/config: line 154: Bad configuration option: bindinterface
    ~/.ssh/config: terminating, 1 bad configuration options
    

Diese Fehlermeldung ist zu erwarten, da die BindInterfaceDirektive mit Openssh 7.7 eingeführt wurde (https://www.openssh.com/releasenotes.html), während ich habe:

$ dpkg -l openssh-client
openssh-client      1:7.4p1-10+deb9u6

Um dieses Problem zu umgehen, erwäge ich mehrere Lösungen:

  1. Definieren Sie eine Route mit ip route ...Befehlen, sodass alles, was Sie erreichen möchten, myServerüber die USB-Schnittstelle läuft. Bisher habe ich Befehle wie diese ausprobiert:

    ip route add to 12.34.56.78 protocol static dev usb0
    

Der Befehl selbst gibt keinen Fehler zurück, aber ich kann keine SSH-Verbindung damit öffnen ssh myServer, ich kann nicht einmal einen Ping ausführen.

  1. Definieren Sie eine Netfilter-Regel, sodass der gesamte Datenverkehr von/zu 12.34.56.78 über die Schnittstelle USB0 läuft. Würde das überhaupt funktionieren? Sollte ich diese Lösung in Betracht ziehen?

  2. Upgrade openssh-clientvon Backports, falls verfügbar

Können Sie bitte erklären, was funktionieren würde/was nicht (und warum)? Was würden Sie vorschlagen, um mein Ziel zu erreichen, nämlich eine Verbindung zu meinem SSH-Host mit einer kurzen Befehlszeile herzustellen, beispielsweise unter ssh myServerBerücksichtigung, dass meine Quelladresse dynamisch ist?

verwandte Informationen