Как отправить трафик на определенный IP-адрес через определенный интерфейс?

Как отправить трафик на определенный IP-адрес через определенный интерфейс?

На виртуальной машине Debian Stretch (работающей в VirtualBox на хосте Windows 7) я хотел бы подключиться по SSH к определенному удаленному хосту (назовем его myServer, с IP 12.34.56.78). Для этого я использую свой Android-смартфон как USB-модем, который отлично работает: я могу выйти в Интернет и сгенерировать некоторый 'ping' и HTTP/HTTPS-трафик, и даже открыть SSH-соединение с помощью команды типа :

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

Примечание: a.b.c.dназначается ли динамический IP-адрес моему USB-интерфейсу при подключении?

Чтобы упростить задачу, я бы хотел иметь все эти настройки, ~/.ssh/configчтобы мне оставалось только ввести 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
  • Я могу раскомментировать BindAddressстроку и указать IP-адрес, что сработает, но не даст никаких преимуществ по сравнению с полной командной строкой SSH, поскольку a.b.c.dона динамическая.
  • используяBindInterfaceопция (без BindAddress) завершается ошибкой:

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

Это сообщение об ошибке ожидаемо, так какBindInterface директива была введена в OpenSSH 7.7 (https://www.openssh.com/releasenotes.html) тогда как у меня есть:

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

Чтобы обойти эту проблему, я рассматриваю несколько решений:

  1. определить маршрут с ip route ...командами, чтобы все, на что направлено, myServerпроходило через интерфейс USB. До сих пор я пробовал команды вроде этой:

    ip route add to 12.34.56.78 protocol static dev usb0
    

Сама команда не возвращает ошибок, но я не могу открыть SSH-соединение с помощью ssh myServer, я даже не могу его пропинговать.

  1. определить правило Netfilter, чтобы весь трафик к/от 12.34.56.78 проходил через интерфейс usb0. Будет ли это работать? Стоит ли мне исследовать это решение?

  2. обновление openssh-clientс бэкпортов, если доступно

Можете ли вы объяснить, что будет работать / не будет (и почему)? Что бы вы предложили для достижения моей цели, которая заключается в подключении к моему SSH-хосту с помощью короткой командной строки, например, ssh myServerучитывая, что мой исходный адрес является динамическим?

Связанный контент