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