必要なインターフェイス (Wi-Fi または Ethernet の任意のインターフェイス) にポート 22 の使用を強制する方法を知りたいです。
たとえば、route *:22 を Wi-Fi に指定します。コマンド
を確認しましたroute
が、できないようです。
何かアイデアはありますか?
BSD または Linux コマンドは大歓迎です。
答え1
通常のルーティングは IP アドレスに関してのみ機能し、転送されるデータ (TCP または UDP を含む) については考慮しません。
少なくともLinuxでは、ポリシールーティングこのために:
特定のパケットをマークするためのファイアウォール ルールを追加します。
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1
希望するゲートウェイで新しいルーティング テーブルを作成します。
ip route add default via 192.168.0.1 dev wlan0 table 42
マークされたパケットに新しいルーティング テーブルを使用するためのポリシー ルールを追加します。
ip rule add fwmark 1 table 42
Windowsでは、別のアプローチが必要になります。たとえば、プログラム特定のインターフェースを使用する。一部のプログラムには、ssh などの「bind address」オプションがあります-b
。
ssh -b 192.168.0.42 root@myserver
(複数のインターフェースですが、そうではないような気がします。
最後に、特定のサーバーへのホスト ルート (Wi-Fi 経由) を追加できます。
これを拡張すると、他のすべての接続に対してそのサーバーを介した SSH トンネリングを有効にすることができます。