DHCPを含む2つのNIC(1つのバックアップとして使用)

DHCPを含む2つのNIC(1つのバックアップとして使用)

シナリオは次のとおりです。Debianを実行し、2つのNIC(ブロードバンド接続とWi-Fi接続)があり、両方にDHCPがあり、事前に知られており、時間の経過とともに変更される可能性があるネットワーク情報を持たないLinuxシステムです。 Wi-Fi接続をデフォルト接続として使用したいが、何らかの理由でWi-Fi接続が失敗した場合は、自動的にブロードバンド接続に置き換えられます。また、Wi-Fi接続が再び機能し始めたら、自動的にWi-Fi接続に戻りたいと思います。

どのように設定するのを知っていますか? IPルーティングを介してこれを実行したいのですが、Wi-Fi接続の検出は特定のサーバーへのpingと同じくらい一般的でなければなりません(検査がpingに似ている理由はWi-Fi接続がまだある可能性がありますが、Wi-Fi自体はもうインターネットに接続されていません。)

ベストアンサー1

次のバックグラウンドスクリプトを使用してこの問題を解決しました。

#!/bin/sh
PRIMARY=wlan0
SECONDARY=eth1
SLEEP=60
PING=8.8.8.8
CONDITION="100% packet loss"


while :
do
    echo Init
    ifmetric $PRIMARY 100
    ifmetric $SECONDARY 200
    if [ "`ip route | grep default | grep $PRIMARY`" = "" ];
    then
        ip route add default via `ip route show | grep $PRIMARY | grep "scope link" | sed 's/\(.*\)0\/.*/\1/'`1 dev $PRIMARY
    fi
    if [ "`ip route | grep default | grep $SECONDARY`" = "" ];
    then
        ip route add default via `ip route show | grep $SECONDARY | grep "scope link" | sed 's/\(.*\)0\/.*/\1/'`1 dev $SECONDARY
    fi
    ifmetric $PRIMARY 100
    ifmetric $SECONDARY 200
    echo Primary
    while [ "`ping -I $PRIMARY -c 10 -w 20 $PING | grep \"$CONDITION\"`" = "" ];
    do
        sleep $SLEEP
    done
    echo Secondary
    ifmetric $SECONDARY 50
    while [ -n "`ping -I $PRIMARY -c 10 -w 20 $PING | grep \"$CONDITION\"`" ];
    do
        ifdown $PRIMARY
        sleep $SLEEP
        ifup $PRIMARY
        sleep $SLEEP
    done
done

おすすめ記事