2つのネットワークカードを備えたヘッドレスDebianサーバーがあります。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 01:02:1d:54:7c:01 brd ff:ff:ff:ff:ff:ff
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 01:02:1d:54:7e:01 brd ff:ff:ff:ff:ff:ff
接続ケーブルを外すとeth1
ポートがダウンしますが、管理の観点からは点灯し続けます。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 01:02:1d:54:7c:01 brd ff:ff:ff:ff:ff:ff
2: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
link/ether 01:02:1d:54:7e:01 brd ff:ff:ff:ff:ff:ff
これは、リンクされたパスがeth1
まだルーティングテーブルに存在することを意味します。eth1
物理的に切断された後に管理シャットダウンを強制する方法はありますか?
答え1
迅速で汚い解決策は、ip monitor
「ifupdowns」インターフェースを持つスクリプトを使用することです。
スクリプトは次のとおりです。
#!/bin/sh
ip monitor link | while IFS=':' read num name status; do
read extraline # iproute2 outputs physical address on a separate line.
newstate=$(echo "$status"|awk -F' ' '{print $NF}')
if [ "$newstate" = "UP" ]; then
ifup "$name"
elif [ "$newstate" = "DOWN" ]; then
ifdown "$name"
fi
done
スクリプトは変更を試みる前にネットワークインターフェイスの状態を確認しませんが、これは問題ではありません。
使用するには、に入れて/opt/bin/linkmonitor.sh
実行可能にし、chmod +x /opt/bin/linkmonitor.sh
最後にアンパサンドを追加します。/etc/rc.local
/opt/bin/linkmonitor.sh &
より強力なソリューションが必要な場合は、次の点に興味があるかもしれません。ルーティングフェイルオーバー解決策。