Как определить, что один шлюз отвалился от интернета и перейти на другой программно (Windows)?
В сети есть два шлюза: провод и GPRS. Иногда провод «отваливается» и тогда нужно переходить на GPRS. Если провод «вернулся», то нужно перейти опять на него.
Можно ли решить эту задачу программой? Которая «стучится» в интернет через оба шлюза и каким-то образом определяет, что инернет отвалился (допустим, опрашивает 8.8.8.8) и подменяет шлюз по умолчанию на работающий шлюз.
Считаем, что программа запущена на том же компе (сетевом интерфейсе), что и собственно прикладное ПО, которое лазает в Сеть.
Всё решается простыми метриками маршрутов… На провод поменьше ставится, на GPRS побольше и всё работает. Больше ни каких телодвижений и скриптов не требуется.
Это решает только вопрос физического падения линка. Если где-то дальше по маршруту умер узел, то ничего происходить не будет — все так и будет идти в никуда.
У него их несколько будет прописано же, что значит как поймёт? А пакеты за него дядя шлёт? Он и шлёт, он знает когда TCP пакет не проходит…
Вот Вам почитать о том, как Windows с этим делом живёт. Суть + апдейт.
Метриками решается не всё — когда основной канал восстановится, надо вернуться на него, а вернуться не удастся штатными средствами. Так что надо в Интернете иметь пару хостов, на которые проложить маршруты через оба канала, и определять переключение default route gj результатам пингования этих хостов.
Попробуйте прописать одинаковые метрики на Ethernet и на GPRS. Будет стабильно работать, если компьютер не шарит интернет для других компьютеров локальной сети, иначе Windows автоматически перебивает метрики. Команда route print покажет реальные метрики (в диалогах они не соответсвуют действительности).
Нужна будет программка, можно скооперироваться — самому нужен самописный «балансировщик», т.к. платить за Kerio не охота, а я как раз под Windows пишу.