特定のインターフェース経由で特定の IP アドレスにトラフィックを送信するにはどうすればよいですか?

特定のインターフェース経由で特定の IP アドレスにトラフィックを送信するにはどうすればよいですか?

Debian Stretch VM (Windows 7 ホストの VirtualBox で実行) で、特定のリモート ホスト ( myServerIP を持つ と呼びます12.34.56.78) に SSH 経由で接続したいと思います。そのために、Android スマートフォンを USB モデムとして使用しています。これは問題なく動作します。インターネットにアクセスして ping と HTTP/HTTPS トラフィックを生成し、次のようなコマンドで SSH 接続を開くこともできます。

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

注意:a.b.c.d接続時にUSBインターフェースに動的IPアドレスが割り当てられますか?

~/.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アドレスを指定することはできますが、これa.b.c.dは動的であるため、完全なSSHコマンドラインと比較して利点はありません。
  • 使用してバインドインターフェースオプション (なしBindAddress) はエラーメッセージで失敗します:

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

このエラーメッセージは、BindInterfaceOpenSSH 7.7で導入されたディレクティブであるため、予想通り表示されます(https://www.openssh.com/releasenotes.html) 一方、私は次のことを持っています:

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

これを回避するために、いくつかの解決策を検討しています。

  1. コマンドを使用してルートを定義しip route ...、対象となるすべてのものが USB インターフェイスを通過するようにmyServerします。これまで、次のようなコマンドを試しました。

    ip route add to 12.34.56.78 protocol static dev usb0
    

コマンド自体はエラーを返しませんが、 で SSH 接続を開くことができずssh myServer、ping も実行できません。

  1. 12.34.56.78 との間のすべてのトラフィックが usb0 インターフェイスを通過するように Netfilter ルールを定義します。これは機能しますか? この解決策を調査す​​る必要がありますか?

  2. openssh-clientバックポートが利用可能な場合はアップグレードする

どれが機能するか、または機能しないか(およびその理由)を説明していただけますか?ssh myServerソース アドレスが動的であることを考慮して、短いコマンド ラインで SSH ホストに接続するという目標を達成するには、どのような方法をお勧めしますか?

関連情報