2 つのインターフェースに 2 つのパブリック IP アドレスを持つマシンがあります。このマシンは を実行していますsshd
。SOCKS インターフェース (つまり ) でトンネルを作成するときに、送信接続に使用するインターフェースを指定する方法はありますか-D
?
答え1
厳密に言えば、mgjkが提案したsshの-bオプションとルーティングを組み合わせることで問題を解決できます。サイト8.8.8.7(架空の例)へのトンネルを構築しようとしていて、接続がeth1を通過するようにしたい場合、コマンド
sudo route add -host 8.8.8.7 dev eth1
適切なルートが追加され、すべてがうまくいくはずです。
しかし、これは「ポリシールーティング」の適用に最適なケースでもあります。トンネルを設定するマシン上でルーティングテーブルを構成する必要があります(つまりコマンドがssh -D ...が発行される理由は、単に 2 つのインターフェイスが存在する唯一のものであるためです。
簡潔だが十分な説明はデイビッド・シュワルツによるものである。このサイト上で重要な詳細は次のとおりです。eth0が192.168.1.2で、eth1が10.0.0.2の場合、次のように記述します。
ip rule add from 10.0.0.2 table <NAME1>
ip rule add from 192.168.1.2 table <NAME2>
この時点で、-b 経由で ssh 接続を eth1 のアドレスにバインドすれば完了です。
答え2
-b を使用すると何が起こりますか?
-b bind_address
Use bind_address on the local machine as the source address of
the connection. Only useful on systems with more than one
address.