두 개의 WRT 라우터가 있는데, 각각은 자체 무선 게이트웨이(휴대폰과 길 건너 핫스팟)에 연결되어 있습니다. 라우터 LAN은 WDS를 통해 브리지되고 동일한 서브넷에 있으므로 클라이언트는 네트워크 설정에 따라 두 게이트웨이 중 하나에 연결할 수 있습니다. 라우터 2의 게이트웨이가 인터넷에 액세스할 수 없는 경우(전화기의 핫스팟을 끄거나 전화가 집에 없을 때) 라우터 2의 게이트웨이가 라우터 1을 가리키도록 변경되도록 스크립트를 구현하려고 합니다. 라우터 2의 게이트웨이가 정상으로 돌아오면 다시 변경해야 합니다.
여기에 문서화된 대로장애 조치 기능이 있는 이중 게이트웨이, 아래 스크립트를 찾았지만 시작 스크립트에 구현한 후 기본 게이트웨이 연결을 끊을 때 게이트웨이가 변경되지 않습니다.
여러 게이트웨이와 다양한 메트릭을 사용하는 다양한 정적 경로에 대해 읽고 읽었으며 그중 하나에 연결할 수 없으면 기본적으로 다른 경로가 사용됩니다. 그렇다면 리피터 브리지 모드의 WRT 라우터에서 구현할 수 있습니다. 아래 스크립트 유형이 필요한가요? 누구든지 올바른 방향을 알려줄 수 있습니까? 감사해요.
INTERVAL=6
PACKETS=2
USINGWAN=0
GW=br0
WAN1GW=192.168.3.4
WAN2GW=192.168.3.1
DNS1=202.88.149.25
CH=1
while sleep $INTERVAL
do
TARGET=`ip route | awk '/default via/ {print $3}'`
if [ "$WAN1GW" = "$TARGET" ]; then
USINGWAN=1;
else if [ "$WAN2GW" = "$TARGET" ]; then
USINGWAN=2;
fi;
fi
RET=`ping -c $PACKETS $DNS1 2>/dev/null | awk '/packets received/ {print $4}'`
if [ "$RET" -lt "$CH" ]; then
if [ "$USINGWAN" = "1" ]; then
ip route delete default via $WAN1GW dev $GW
ip route add default via $WAN2GW dev $GW
sleep 2
USINGWAN=2
echo "Changed active WAN port to 2!"
fi
fi
if [ "$USINGWAN" = "2" ]; then
WAN1STAT=`ping -c $PACKETS $DNS1 2>/dev/null | awk '/packets received/ {print $4}'`
if [ "$WAN1STAT" = "$PACKETS" ]; then
ip route delete default via $WAN2GW dev $GW
ip route add default via $WAN1GW dev $GW
sleep 2
USINGWAN=1
echo "Changed active WAN port to 1!"
fi
fi
done;
Below are the creator/users comments:
Used the code above with ping to only one ip, added a static route in gateway 192.168.3.1 for ping ip to be always routed through 192.168.3.4 as a result of which in case of ping failure gateway changed to secondary gateway and once ping was back live it switched to primary... Also used -lt variable to make sure that gateway changed on at least 2 ping failures and not 1.