シナリオは次のとおりです。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