インターネットシャットダウンがなく、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インターフェイスと一致することを確認するために実行されます。ifdown
post-up
allow-hotplug
ifupdown 設定には以下が含まれます。装備ケーブルホットプラグではなくホットプラグ。これは、デフォルトでは、起動時にカーネルがデバイスの存在を初めて検出したとき、および/またはネットワークデバイスがUSBアダプタであり、サーバーのUSBに接続または切断した場合にのみ機能することを意味します。ポート。
ping
したがって、ある種の検索(通常または意図的なTCP接続など)を介してネットワーク損失を検出できるいくつかのカスタムサービスをサーバー上で実行し、ネットワーク損失が検出された場合はパスを削除しますが、検索時に再追加しないことをお勧めします。接続が再びアクティブになります。
特定の質問に答えるには:
失われたが現在検出されているネットワークへのルートを回復するようにインターフェイスを設定するにはどうすればよいですか?
これは、アプリケーションへの「ネットワークの切断」が何を意味するのか、および回復が何を意味するのかによって異なります。インターフェイスリンクの状態が十分であれば、実際には、次のいずれかまたはifplugd
それnetplugd
に対応するもの(必要なものまたは要件に最も適したもの)を使用できます。post-up
常に存在する「ifupdown」VLANインターフェイスに関連付けられている場合、コマンドはマスターデバイスに十分であるか、マスターデバイスの運命に従うように設定されます。