ネットワーク損失後に失われたネットワークパスの回復

ネットワーク損失後に失われたネットワークパスの回復

インターネットシャットダウンがなく、2つのインターフェース(物理eth0およびvlan iface eth0.101)がないロックされた環境にサーバーがあります。

/etc/network/interfaces には、次のように vlan iface を介して特定のネットワークブロックへのルーティングをイネーブルにする post-up コマンドが含まれています。

post-up ip route add 10.1.0.0/24 via 10.1.2.1 dev eth0.101

スイッチフェイルオーバーテスト中にパスが失われたことを確認しました(RTNETLINK answers: Network is unreachable.)。これは意味があります。ただし、ネットワークが再びオンラインになると、パスはインターフェイスに追加されません。

理由を理解します。インターフェイスが消えず、downネットワークにアクセスできなくなるだけです。

失われたが現在検出されているネットワークへのルートを回復するようにインターフェイスを設定するにはどうすればよいですか?

[email protected]ifup私たちはDebian 9を使用しており、コマンドを使用してデバイスを起動/停止する各インターフェイスのサービス定義を持っています。しかし、今回もデバイスとスイッチへのリンクは決して失敗しませんでした。追加のsystemdオプションが利用可能な場合に備えて、これに言及します。

答え1

ルーティングテーブルパスを永久に作成します(スイッチフェイルオーバー後に再/手動で追加したくない場合は、最初に名前付きパステーブルを作成します)。たとえば、「mgmt」を使用できます。

echo '200 mgmt' >> /etc/iproute2/rt_tables

上記はこのソリューションの詳細な詳細であり、カーネルは多くのルーティングテーブルをサポートし、0-255の一意の整数でこれらのルーティングテーブルを参照します。このテーブルには mgmt という名前も定義されています。以下は/etc/iproute2/rt_tablesいくつかの数字が維持される基本的なケースです。この答えから200を選択することは任意です。まだ使用されていない数字(1-252)を使用できます。

# reserved values
255     local
0       unspec

次に、post-up次のようにルールを編集します(/etc/network/interfacesの下)。

  post-up ip route add 10.1.0.0/24 dev eth0.101 table mgmt
  post-up ip route add default via 10.1.2.1 dev eth0.101 table mgmt
  post-up ip rule add from 10.1.0.0/24 table mgmt
  post-up ip rule add to 10.1.0.0/24 table mgmt

または別の解決策は、パスが存在することを確認し、欠落している場合に再追加するバックグラウンドbashスクリプトです。スクリプトは、ip route add 10.1.0.0/24 via 10.1.2.1 dev eth0.101スクリプトの結果をループまたはcronで設定できることを確認できます。

ip route add 10.1.0.0/24 via 10.1.2.1 dev eth0.101
if [ $? -eq 0 ]; then
    echo "Route added again"
    sleep 10;
    command-to-call-the-script-again
else
    echo "Route exists"
    sleep 10;
    command-to-call-the-script-again
fi

源泉:永続パスを追加する最良の方法は何ですか?

答え2

適切な設定の説明は少しあいまいです。 「スイッチフェイルオーバー」シナリオがサーバーのネットワーク機器にどのような影響を与えますか?リンクが消えましたか?パケット転送を中止しますか?明示的な通知(LACPなど)はどのような役割を果たしますか?それとも何ですか?そしてどのauto インターフェースを入力しましたかallow-hotplug?物理デバイス?それともVLANインターフェイス?それとも両方?

問題は、説明された動作が説明された設定だけでは実際に意味がないことです。たとえば、単にリンクを失うだけではパスを削除するのに十分ではなく、インターフェイスを設定するだけでは十分ではありません。〜しない限りこれを明示的に実行するためのいくつかの追加設定があります。

ifplugdまた、言及されていないこの追加設定は標準にすることはできず、netplugdリンクイベント(ケーブルの接続/分離など)に対して機能することを伝えたいと思います。これらの設定は通常呼び出され、処理されるため、ifupリンク が発生したときのコマンドは次のようになります。その設定がVLANインターフェイスと一致することを確認するために実行されます。ifdownpost-up

allow-hotplugifupdown 設定には以下が含まれます。装備ケーブルホットプラグではなくホットプラグ。これは、デフォルトでは、起動時にカーネルがデバイスの存在を初めて検出したとき、および/またはネットワークデバイスがUSBアダプタであり、サーバーのUSBに接続または切断した場合にのみ機能することを意味します。ポート。

pingしたがって、ある種の検索(通常または意図的なTCP接続など)を介してネットワーク損失を検出できるいくつかのカスタムサービスをサーバー上で実行し、ネットワーク損失が検出された場合はパスを削除しますが、検索時に再追加しないことをお勧めします。接続が再びアクティブになります。

特定の質問に答えるには:

失われたが現在検出されているネットワークへのルートを回復するようにインターフェイスを設定するにはどうすればよいですか?

これは、アプリケーションへの「ネットワークの切断」が何を意味するのか、および回復が何を意味するのかによって異なります。インターフェイスリンクの状態が十分であれば、実際には、次のいずれかまたはifplugd それnetplugdに対応するもの(必要なものまたは要件に最も適したもの)を使用できます。post-up常に存在する「ifupdown」VLANインターフェイスに関連付けられている場合、コマンドはマスターデバイスに十分であるか、マスターデバイスの運命に従うように設定されます。

関連情報