SSHトンネルをSSHサーバーの特定のアウトバウンドIPアドレスに制限するにはどうすればよいですか?

SSHトンネルをSSHサーバーの特定のアウトバウンドIPアドレスに制限するにはどうすればよいですか?

質問を正しく表現してほしいです。 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

ユーザーのすべてのパケットにはyourusernameIDタグが付けられています2。次に、ルールは、タグがゲートウェイにパケットを送信するルーティングテーブル2に従う必要があることを指定します。最後に、パスキャッシュがクリアされ、新しいパスが選択されます(以前に計算された場合)。310.1.2.3

ここでは、SSHユーザーがyourusernameSOCKSトンネル専用であり、USB接続を介して接続していると仮定します。

おすすめ記事