特定のインターフェイスを介して特定のIPアドレスにトラフィックを送信するには?

特定のインターフェイスを介して特定のIPアドレスにトラフィックを送信するには?

myServerDebian Stretch VM(Windows 7ホストのVirtualBoxで実行)からSSHを介して特定のリモートホスト(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これは接続時に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
  • 行のコメントを外してIPアドレスを指定できます。これはうまくいきますが、動的であるBindAddressため、SSHコマンドライン全体と比較して何も得られません。a.b.c.d
  • 使用バインディングインターフェースオプション(除く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. コマンドを使用して、すべての宛先がUSBインタフェースを通過するip route ...ようにパスを定義します。myServerこれまで、私は次のコマンドを試しました。

    ip route add to 12.34.56.78 protocol static dev usb0
    

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

  1. 12.34.56.78 と送受信するすべてのトラフィックが usb0 インターフェイスを通過するように Netfilter ルールを定義します。それはうまくいくでしょうか?このソリューションを調べる必要がありますか?

  2. openssh-clientバックポートからのアップグレード(利用可能な場合)

何がうまくいかないのか(そしてその理由は何ですか)説明できますか?短いコマンドラインを使用してSSHホストに接続する目標をどのように達成できますか?たとえば、ssh myServer私のソースアドレスが動的であることを考えるとどうなりますか?

関連情報