Скрипт DHCP-клиента для создания маркированного маршрута
-
- Сообщения: 41
- Зарегистрирован: 03 сен 2018, 12:47
Re: Скрипт DHCP-клиента для создания маркированного маршрута
Задача проста. Переключения с провайдера Один isp1, который дает белый динамический адрес, на LTE свисток(который даёт серый динамический адрес). В Нетвотче стоит задание Пингуй 1.1.1.1, если пингуется то ищи маршрут с комментарием ISP1, включай его, а маршрут с комментарием ISP2 выключай. А если НЕ пингуется 1.1.1.1 то наоборот isp1 выключай, а isp2 включай. Короче простое переключение на резервный канал.
Пинг до 1.1.1.1 у меня будет идти только через провайдера один isp1
И загвоздка в том, что в маршрутах не могу руками прописать статикой маршрутизацию до 0.0.0.0 и им дать комментарий, т.к. в поле гетевэй нужно вписывать цифры\ip адрес, маршрутизатора\шлюза провайдера , а не интерфейс микротика. А так же вписать на этом маршруте нужно Комментарий, и если динамическим его оставить, то после переключения\отключения провайдера динамический маршрут исчезнет, и когда восстановится и после мой комментарий исчезнет.
надеюсь нормально объяснил.
Пинг до 1.1.1.1 у меня будет идти только через провайдера один isp1
И загвоздка в том, что в маршрутах не могу руками прописать статикой маршрутизацию до 0.0.0.0 и им дать комментарий, т.к. в поле гетевэй нужно вписывать цифры\ip адрес, маршрутизатора\шлюза провайдера , а не интерфейс микротика. А так же вписать на этом маршруте нужно Комментарий, и если динамическим его оставить, то после переключения\отключения провайдера динамический маршрут исчезнет, и когда восстановится и после мой комментарий исчезнет.
надеюсь нормально объяснил.
-
- Сообщения: 3927
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Скрипт DHCP-клиента для создания маркированного маршрута
Я снова потерялся... Если isp1 совсем отвалится - то пропадут и все его маршруты, включая 1.1.1.1. А значит, пинг к 1.1.1.1 пойдёт через isp2, скрипт добросовестно включит ISP1, выключит ISP2... Я правильно описываю? В полночь выглядит так, что эта схема будет работать только тогда, когда линк к ISP1 есть, адрес по DHCP получает, а в Интернет он не ходит.
-
- Сообщения: 41
- Зарегистрирован: 03 сен 2018, 12:47
Re: Скрипт DHCP-клиента для создания маркированного маршрута
Так... видимо я чего то не понимаю, для чего данный скрипт темы нужен. Как я понимаю, Для того что бы статический маршрут автоматически появлялся, с нужной мне метрикой и плюсом маркировкой. В тот момент когда DHCP клиент получает адрес от isp1, следовательно при отключении интернета\провайдера\провода isp1 этот СТАТИЧЕСКИЙ адрес останется, и будет продолжать пытаться работать через isp1. под цифрой 3 удалится, а под цифрой 1 останется. У меня же проблема с цирой 4, т.к. гетевэй указан "ether1", что не правильно, и не правильно отрабатывает маршрут, а нужно указать гетэвэй как у цифры 1, по скрину 178.ХХХ.ХХХ.ХХХ. И тогда у меня будет отрабатывать нетвоч как надо, и переключать правильный isp. (естественно в фаирволе у меня пинг может идти до 1.1.1.1 только через ether1 )
В общем как мне резервирование настроить если посмотреть на мой скриншет?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сообщения: 3927
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Скрипт DHCP-клиента для создания маркированного маршрута
Почему роут под цифрой 1 останется? Нижняя видимая строка скрипта DHCP-клиента на вашем скриншоте (/ip route remove ...) как раз и удалит его, когда DHCP-клиент потеряет адрес
А ещё он маркированный (routing-mark=ether1), поэтому используется только для маркированного трафика. А ещё даже если его не удалить - при потере адреса шлюз станет неактивным, поэтому неактивным станет и сам роут, и использоваться в процессе поиска маршрута не будет.
Если же вам надо просто, например, обновить шлюз у всех маршрутов к 1.1.1.1/32 при переполучении адреса DHCP-клиентом, то можно сделать вот так:
З.Ы. Смотрю, через пару недель после публикации моего скрипта здесь в вики добавили параметр "gateway-address", так что мой скрипт можно упростить, удалив две строчки ![Улыбается :)](./images/smilies/icon_e_smile.gif)
![Улыбается :)](./images/smilies/icon_e_smile.gif)
Если же вам надо просто, например, обновить шлюз у всех маршрутов к 1.1.1.1/32 при переполучении адреса DHCP-клиентом, то можно сделать вот так:
Код: Выделить всё
:if ($bound=1) do={
:set gw "$"gateway-address"%$interface"
/ip route set [ find dst-address=1.1.1.1/32 gateway!=$gw ] gateway=$gw
}
![Улыбается :)](./images/smilies/icon_e_smile.gif)
-
- Сообщения: 3927
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Скрипт DHCP-клиента для создания маркированного маршрута
Подправил первое сообщение темы. Оказывается, в скрипте доступна переменная gateway-address - используем её. И добавил скрипт для RouterOS v7 - там поменяли routing-mark на routing-table и надо заранее создавать таблицу маршрутизации.
-
- Сообщения: 41
- Зарегистрирован: 03 сен 2018, 12:47
Re: Скрипт DHCP-клиента для создания маркированного маршрута
На сколько я знал скрипт в DHCP выполнятся только в момент получения ip адреса. Сейчас вики причитал пишут при изменении статуса DHCP.
Но тогда как быть? как мне автопереключение интернета настроить между isp1 и isp2 ? при условии что isp1 основной, и по dhcp получает адрес.
При статике я делал как, пинговал к примеру 8.8.8.8 только через isp1, в маршрутах на это указывал, и в фаирволе запрещал через isp2 идти до 8.8.8.8. И всё работало.
-
- Сообщения: 3927
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Скрипт DHCP-клиента для создания маркированного маршрута
Я бы попробовал так:
Этот скрипт будет создавать маршрут к 1.1.1.1 с scope=10 через isp1. При этом добавление default gateway в DHCP-клиенте надо выключить и создать маршрут /ip route add gateway=1.1.1.1 check-gateway=ping. Он будет активным тогда, когда 1.1.1.1 активный и пингуется. Netwatch не нужен.
Код: Выделить всё
:local count [ /ip route print count-only where dst-address=1.1.1.1/32 scope=10 ]
:if ($bound=1) do={
:local gw "$"gateway-address"%$interface"
:if ($count=0) do={
/ip route add dst-address=1.1.1.1/32 scope=10 gateway=$gw
} else={
/ip route set [ find dst-address=1.1.1.1/32 scope=10 gateway!=$gw ] gateway=$gw
}
}
-
- Сообщения: 21
- Зарегистрирован: 09 июл 2018, 12:59
Re: Скрипт DHCP-клиента для создания маркированного маршрута
SXT-R настроен на passthrough на hap ac lite, в свою очередь DHCP client получает адрес с него на порт lte_mngmt
DNS server (Ad-guard 192.168.2.19) настроен на сервере в локалке 192.168.2.0/25
Хочу пропищат скрипт в DHCP Client yf SXT-R чтобы когда меняется DNS сервер на hap-ac lite, также обновляйся DHCP client на SXT-R
Пробовал:
Скрипт в поле DHCP Client на SXT-R не срабатывает, в Scheduler срабатывает, но только когда пропадает пинг на сервере, при появлении пинга обратно не переключает на внутренний DNS 192.168.1.1
Сможете помочь?
DNS server (Ad-guard 192.168.2.19) настроен на сервере в локалке 192.168.2.0/25
Хочу пропищат скрипт в DHCP Client yf SXT-R чтобы когда меняется DNS сервер на hap-ac lite, также обновляйся DHCP client на SXT-R
Пробовал:
Код: Выделить всё
:if ( [/ping 192.168.2.19 interface=lte_mngmt count=3] = 0) do={/ip dhcp-client release numbers=0}
Сможете помочь?
Цифровая типография в Москве здесь
-
- Сообщения: 3927
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Скрипт DHCP-клиента для создания маркированного маршрута
Этот скрипт выполняется, когда клиент получает или теряет адрес. Между этими событиями он НЕ выполняется.
В смысле, когда hap-ac начинает выдавать по DHCP другой адрес? А он его не обновляет по истечению Lease Time? Может, достаточно просто уменьшить Lease Time для SXT на сервере до разумного минимума?
Ваш скрипт запускает переполучение адреса, когда пинга нет. Когда пинг появляется - скрипт не делает ничего. Если нужно ловить события пропадания-появления пинга - можно воспользоваться Tools -> Netwatch (прописав переполучение адреса в оба скрипта, Up и Down).
-
- Сообщения: 21
- Зарегистрирован: 09 июл 2018, 12:59
Re: Скрипт DHCP-клиента для создания маркированного маршрута
Разумный это сколько? 1 минута не слишком ли мало, вед когда изменится DNS то если поставит 10 мин., например, то эти 10 мин не будет интернета получается, вернее не будут резолвится домены)
Да, согласен: сделал так: ping сервера [192.168.2.39] на котором крутится Adguard
UP {/ip dhcp-server network set 0 dns-server=192.168.2.39; /log info "Updating DNS to Adguard"}
Down {/ip dhcp-server network set 0 dns-server=192.168.2.1; /log warning "Updating DNS to third-party"}
Все норм орабатывает! Спасибо, остался вопрос: Lease Time на DHCP сервере, какой оптимально поставить чтобы инет не пропадал, если "упадет" сервер с Adguard
Цифровая типография в Москве здесь
-
- Сообщения: 3927
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Скрипт DHCP-клиента для создания маркированного маршрута
Т.е. новый адрес DNS нормально по DHCP получает? Тогда поставить минуту - и наблюдать ![Улыбается :)](./images/smilies/icon_e_smile.gif)
Единственное, меня всё мучает вопрос: а обязательно клиентам напрямую ходить в AdGuard? Нельзя им просто поставить сервером сам роутер, а уже у него менять настройки? Тогда у клиентов ничего не меняется
![Улыбается :)](./images/smilies/icon_e_smile.gif)
Единственное, меня всё мучает вопрос: а обязательно клиентам напрямую ходить в AdGuard? Нельзя им просто поставить сервером сам роутер, а уже у него менять настройки? Тогда у клиентов ничего не меняется