特定のゲートウェイにSSHをルーティングする

特定のゲートウェイにSSHをルーティングする

必要なインターフェイス (Wi-Fi または Ethernet の任意のインターフェイス) にポート 22 の使用を強制する方法を知りたいです。
たとえば、route *:22 を Wi-Fi に指定します。コマンド
を確認しましたrouteが、できないようです。
何かアイデアはありますか?
BSD または Linux コマンドは大歓迎です。

答え1

通常のルーティングは IP アドレスに関してのみ機能し、転送されるデータ (TCP または UDP を含む) については考慮しません。


少なくともLinuxでは、ポリシールーティングこのために:

  1. 特定のパケットをマークするためのファイアウォール ルールを追加します。

    iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1
    
  2. 希望するゲートウェイで新しいルーティング テーブルを作成します。

    ip route add default via 192.168.0.1 dev wlan0 table 42
    
  3. マークされたパケットに新しいルーティング テーブルを使用するためのポリシー ルールを追加します。

    ip rule add fwmark 1 table 42
    

Windowsでは、別のアプローチが必要になります。たとえば、プログラム特定のインターフェースを使用する。一部のプログラムには、ssh などの「bind address」オプションがあります-b

ssh -b 192.168.0.42 root@myserver

(複数のインターフェースですが、そうではないような気がします。


最後に、特定のサーバーへのホスト ルート (Wi-Fi 経由) を追加できます。

これを拡張すると、他のすべての接続に対してそのサーバーを介した SSH トンネリングを有効にすることができます。

関連情報