
私はshorewallファイアウォールを使用しており、複数のISPソースを正常に構成しました。
現在、両方の ISP へのすべてのトラフィックを分散しています。私が実現したいのは、ssh トラフィックを ISP1 にルーティングし、www トラフィックを ISP2 にルーティングすることです。どうすればこれが実現できますか?
答え1
複数のルート テーブルを作成する必要があると思います。1 つは通常のトラフィック用のデフォルト テーブルで、もう 1 つは使用したい ISP 接続のルート エントリのみを含む特別な SSH テーブルです。
次に、自分の IP とリッスンしている SSH ポートからのパケットをマークするように iptables を設定します。
最後に、ファイアウォール マークに基づいてルーティングする IP ルール エントリを設定できます。
LARTC ドキュメントには多くの情報があります (ただし、ここまで読んできた方ならすでにご覧になっているかもしれません)。翻訳元:
たとえば、次のようになります。
名前を付けて新しいルーティング テーブルを追加します。
echo SSH 500 >>/etc/iproute2/rt_tables
適切な処理を実行する別のルーティング テーブルにデフォルト ルートを追加します。
ip route add default via $ISP2_GW table SSH
fwmark がこの新しいテーブルを使用するようにルールを設定します。
ip rule add fwmark 0x0001 table SSH
最後に、パケットをマークするための iptables ルールを設定します。
iptables -I PREROUTING -t mangle -p tcp --sport 22 -j MARK --set-mark 0x0001 iptables -I OUTPUT -t mangle -p tcp --sport 22 -j MARK --set-mark 0x0001
これで、希望どおりの設定が正しく行われるはずです。この設定が再起動後も維持されることを確認する必要もあります。ただし、これは皆さんの課題として残しておきます。