質問を正しく表現してほしいです。 2つのインターネット接続を実行してテストするためのSSHサーバーがあります。 LAN接続は常にオンになっていますが、USB接続は断続的にオンになっています。 USB接続のIPアドレスのみを使用してインターネットを閲覧するようにトンネルを制限できますか?
これが私が現在使っているものです:
ssh -v -D 3456 [email protected];
これは素晴らしいですが、サーバーのセカンダリUSB接続が変更されたかどうかはわかりません。 USB接続のIP(パラメータの考慮事項の場合は199.90.09.78)を知っているので、トンネルをUSBのみ使用するように制限し、USBに障害が発生した場合に中断されるようにしたいと思います。私は次のように遊んだ:
ssh -v -D *:3456 -R *:3456:199.90.09.78:80 [email protected];
しかし、-Rを誤って使用しているようです。これを達成するより良い方法はありますか?
答え1
これを行うためのsshオプションがわかりません。ルーティングの問題のようです。 SSHデーモンからのすべてのトラフィックをUSB接続にポリシールーティングしようとしています。ポリシールーティングを使用すると、別のルート(あなたの場合はUSB接続を介して)を介してパケットをルーティングできます。ip
ポリシーを設定し、iptables
そのポリシーのパケットにタグを付ける必要があります。
ゲートウェイを介してすべてのトラフィックをルーティングする(テストされていない)例は次のとおりです10.1.2.3
。
iptables -t mangle -A OUTPUT -m owner --uid-owner yourusername -j MARK --set-mark 2
ip rule add fwmark 2 table 3
ip route add default via 10.1.2.3 table 3
ip route flush cache
ユーザーのすべてのパケットにはyourusername
IDタグが付けられています2
。次に、ルールは、タグがゲートウェイにパケットを送信するルーティングテーブル2
に従う必要があることを指定します。最後に、パスキャッシュがクリアされ、新しいパスが選択されます(以前に計算された場合)。3
10.1.2.3
ここでは、SSHユーザーがyourusername
SOCKSトンネル専用であり、USB接続を介して接続していると仮定します。