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

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

インターネットシャットダウンがなく、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

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

おすすめ記事