物理的な接続が失われた場合は、ネットワークインターフェイスを終了してください。

物理的な接続が失われた場合は、ネットワークインターフェイスを終了してください。

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 &

より強力なソリューションが必要な場合は、次の点に興味があるかもしれません。ルーティングフェイルオーバー解決策。

関連情報