Войти

Показать полную графическую версию : пинг узла через альтернативный шлюз


daledale
12-12-2020, 11:33
Доброго. Такая задача. Локалка, пусть будет 192.168.0.0/24
Допустим в локалке два шлюза/два интернета: 192.168.0.1 и 192.168.0.2
Допустим в локалке машина с winОС. Пусть будет со статикой 192.168.0.10 и шлюз по-умолчанию 192.168.0.1
Задача, периодически (разумеется ч-з планировщик решу вопрос, без проблем) пинговать узел, например 1.2.3.4 на предмет меньшего пинга (вопрос с доступностью/недоступностью интернета не стоит, но как промежуточный вариант можно и это, но это не цель).
В общем надо пинговать периодически и переключать основной шлюз в конкретной WinОС на тот, у которого в данный момент меньшее время пинга.
============
В идеале вижу как это.
1. Пингуем узел ч-з один шлюз, записываем в переменную среднее время пинга (можно число хопов увеличить с 4-х, до 10, например для более точного результата).
2. Пингуем узел ч-з другой шлюз. Результат пишем в другую переменную.
3. Сравниваем переменные, и в результате переключаем основной шлюз на другой или остаёмся на текущем. Как альтернатива просто прописываем маршрут до узла ч-з определённый шлюз, а основной шлюз остаётся прежним.

ps Казалось бы можно ч-з те же промежутки времени периодически менять шлюз и пинговать узел, но при этом будет прерываться интернет/соединение, а это критично. Интернет крайне желательно чтобы не прерывался ни на секунду. Собственно засада в том, как пропинговать узел через другой шлюз не переключаясь на него. Пробовал играться с ключом ping -k, только что-то не вышло = вообще пинги не идут.

Busla
12-12-2020, 12:29
Пробовал играться с ключом ping -k »
он не совсем для этого, и работает не совсем так как обычный ping
он выставляет флаг Strict Source Route в IP-заголовке, такие пакеты все современные маршрутизаторы по умолчанию отбрасывают

надо пинговать периодически и переключать основной шлюз в конкретной WinОС »
странный подход: обычно выбор маршрута - прерогатива маршрутизатора

daledale
12-12-2020, 15:22
странный подход: обычно выбор маршрута - прерогатива маршрутизатора »
Вопрос, как ни странно по домашним интернетам. Да, дома их больше одного). Собс-но, как итог нужен бюджетный=софтовый вариант. Дорогущие управляемые маршрутизаторы - не мой случай, да и зачем они дома?!)
ps С Микротиками, как ни пытался, так и не подружился)

alpap
12-12-2020, 16:14
нужен бюджетный=софтовый вариант »
маршрутизаторы - не мой случай, да и зачем они дома?! »
ага, но как-то не вяжется
чтобы не прерывался ни на секунду »
шлюз в конкретной WinОС на тот, у которого в данный момент меньшее время пинга »

daledale
12-12-2020, 16:33
ага, но как-то не вяжется »
Всё же это дома, без никаких недоговорок. Может я неверно выразился.
-
Видимо малой кровью не получится. Хорошо, немного упрощу задачу. Пусть будет со сменой интернета/шлюза=прерыванием и пингованием как обычно.
Итак исходные данные в первом посте. Батники смены шлюза (ч-з netsh) уже готовые и есть.
Схема, я так понимаю теперь такая.
1. Пингуем узел с текущего шлюза (шлюз1) - среднее время пинга в переменную1.
2. Запускаем батник смены шлюза (шлюз2).
3. Пингуем узел ч-з второй шлюз. Результат в переменную2.
4. Сравниваем переменные, если время меньше у второй переменной - остаёмся на втором шлюзе (ведь мы его на шаге 2 сменили - иначе возвращаемся на первый шлюз=запускаем батник смены на шлюз1).

Вот реализацию этого, если не затруднит можно сделать?
ps Неплохо б в алгоритм добавить пункт проверки текущего шлюза, чтобы скрипт до момента начала проверки знал, ч-з какой шлюз "сейчас" комп ходит в инет.

alpap
12-12-2020, 17:59
нееет, статистика тут гораздо обширнее нужна.
а если в пределах 6-ти часов преобладает по пингу один потом другой, через 1 час картина меняется, на следующие сутки в точности до наоборот, а на следующей неделе четко только один шлюз победитель.
или ситуация меняется каждые 1,5 часа, будете скакать туда-сюда из-за небольшого выигрыша в скорости, оно действительно настолько того стоит? Да еще все переходные процессы с батниками и переподключениями.
к тому же чтобы выявить разницу если она небольшая надо идеализировать ОС как-то, в разные моменты пинга при разных загрузках (обновление чего-то, движ антивируса, планировщика-MS) показания наверняка будут различаться.

Busla
12-12-2020, 19:15
Дорогущие управляемые маршрутизаторы - не мой случай »
маршрутизаторы по определению "управляемые", дома обычно не нужно управляемые коммутаторы

С Микротиками, как ни пытался, так и не подружился »
Микротики построены на ядре линукс, там вполне типовой packet flow - если понимать как работают tcp/ip сети вообще или сетевой стек linux в частности - базовая настройка Mikrotik'а становится очевидной

при ваших запросах всё равно придётся углубиться в устройство сетей

можете взять какой-нибудь keenetic, но два провайдера в нём настроить - ближе к шаманству: нужно нагуглить конкретные заклинания для консоли


если вас устраивает поочерёдное снятие метрик, можете прописать маршрут к конкретному хосту, пинговать его, переключать этот конкретный маршрут на другой шлюз и снова пинговать
в качестве цели можете взять шлюз целевого сервиса (pathping или tracert покажут вам маршрут)

daledale
12-12-2020, 23:04
нееет, статистика тут гораздо обширнее нужна. »
Планировал закинуть в планировщик - чекать каждые 30 мин.
будете скакать туда-сюда из-за небольшого выигрыша в скорости »
Да. Это не проблема. Особенно если инет не будет прерываться в идеале.
Да еще все переходные процессы с батниками и переподключениями. »
Да достаточно быстро всё проходит. Относительно быстро.
обновление чего-то, движ антивируса, планировщика-MS »
Всё подобное зарублено на корню. Никаких обновлений нет и не будет в принципе. Антивируса нет вообще - для моей задачи он не нужен, даже вреден.
можете прописать маршрут к конкретному хосту, пинговать его, переключать этот конкретный маршрут на другой шлюз и снова пинговать »
Пробовал. Но по факту пингуется с шлюза по умолчанию.
Делал так или исходные дынные - выходит в инет ч-з шлюз 0.1
Пингую как обычно с дефолтного шлюза - время 15 мс.
Добавляю маршрут: route add 1.2.3.4 mask 255.255.255.255 192.168.0.2
пингую - получаю те же 15 мс. Хотя по факту, если явно переключиться на шлюз 0.2 - время стабильно 22 мс.

Опиум
14-12-2020, 10:08
С Микротиками, как ни пытался, так и не подружился) »
настройка 1500 рублевого микротика не дороже его самого.

daledale
14-12-2020, 16:37
Ребят, столько оффтопа! Зачем это? Был вопрос, если есть ответы по существу - велкам. Нет, лучше ничего не отвечать. Сорри.
ps Разумеется понимаю, что никто никому ничем не обязан, пришёл на форум для помощи, ибо есть пробелы в написании виндовых скриптов.

Busla
14-12-2020, 20:24
пингую - получаю те же 15 мс. Хотя по факту, если явно переключиться на шлюз 0.2 - время стабильно 22 мс. »
всё же надо смотреть на вывод tracert, а не по таймингам маршрут определять




© OSzone.net 2001-2012