(これ元の質問でしたが、最終的な解決策が元の質問とは異なり、新しい質問として投稿します。 )
背景:
管理(eth0)、本番(eth1)、バックアップ(eth2)の3つのインターフェースを備えた仮想マシンがあります。管理は RDP および SSH トラフィックに使用されます。生産はほとんどのトラフィックに使用されます。バックアップは、同じサブネット上のバックアップサービスと通信するために使用されます。各ネットワークは固有の用途に制限され、他のネットワークの1つで転送されるように見えるすべてのトラフィックは廃棄されます(たとえば、tcp/22
本番ネットワークなど)。
質問:
SSHトラフィックは管理ポートを介してサーバーに入りますが、本番インターフェースに入ります。
これにより、パケットがtcp/22
本番ネットワークに送信されるとトラフィックが破棄されます。
管理ゲートウェイを指すようにデフォルトパスを変更すると、パケットが正しいインターフェイスに出るため、sshは機能しますが、すべての本番トラフィックは動作を停止します。 PROD を指すデフォルトのパスを維持することができ、同じサブネット上のコンピュータから接続する限り、引き続き機能します。
トラフィックが発生するインターフェイスに基づいてデフォルトゲートウェイを設定するには、カーネルが必要です。
答え1
すべての高度なルーティング(たとえば、複数のデフォルトゲートウェイ設定)には、次のものが含まれます。ポリシーベースのルーティング。
特定のポートに向かうパケット表示に基づいた配信ソリューションがいくつか公開されていますが、Red Hatカスタマーポータルで見つけたソリューションははるかに簡単で、より広範囲に適用できることがわかりました。
に追加/etc/rc.local
:
バックアップルーティングテーブルの設定、私に電話した
2
。/sbin/ip ルート追加テーブル 2 デフォルトは <管理ゲートウェイ>
管理ゲートウェイが確立された代替ルーティングテーブルを使用するように管理IPのトラフィックを設定します。
<管理IPアドレス>表2に/sbin/ipルールを追加しました。
上記の仕組みは、基本ルーティングテーブルのデフォルトゲートウェイが本番環境(eth1)を指すようにすることです。ステップ2のゲートウェイは、eth0に関連付けられているIPアドレスから発生するすべてのトラフィックに対して選択されます。
私の特別なケースでは、すべてのトラフィックが同じサブネット上にあったため、バックアップネットワークはゲートウェイ設定に敏感ではありませんでした。ただし、バックアップネットワークに複数のサブネットがある場合は、3番目のルーティングテーブルを設定し、ip rule add
そのルーティングテーブルで同様の操作を実行できます。
ポリシーベースのルーティングがない場合、カーネルはデフォルトのルーティングテーブルを参照してトラフィックをエクスポートするインターフェイスを決定します。つまり、他のノードが接続されているインターフェイスの1つと同じサブネット上にある場合は正しいインターフェイスが選択され、そうでない場合はトラフィックがデフォルトルートを介して送信されます。ネットワークが引き続きパケットをルーティングしている場合(「間違った」インターフェイスで発生しても)、この動作は表示されませんが、私の場合はトラフィックが破棄される結果をもたらしました。
ポリシーベースのルーティングを実装した後、本番および管理/ SSHトラフィックが期待どおりに実行を開始しました。