Рекурсивная маршрутизация с РРРоЕ-интерфейсами (+ динамический адрес)

Обсуждение ПО и его настройки
Erik_U
Сообщения: 1754
Зарегистрирован: 09 июл 2014, 12:33

kt72ru писал(а):кстати в wiki черный по белому написано


"Nexthop lookup
....
Routes with interface name as the value of gateway are not used for nexthop lookup. If route has both interface nexthops and active IP address nexthops, then interface nexthops are ignored."

так что рекурсия будет работать только при указании IP шлюза, никаких интерфейсов и т.п. Хоть PPPoE p-t-p интерфейс и при обычной маршрутизации можно указывать только его в качестве шлюза, но в данном случае это не работает.


Поэтому и предлагается при подъеме РРРОЕ запускать скрипт, выясняющий все IP, и создающий "статическую" конфигурацию до следующего раза.
"Статика" же у ТС работает.


Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

Спасибо всем за участие.
Сущность поднятой темы более-менее раскрыто.

Позже, постараюсь найти время, и написать скрипт с аналитической составляющей,
для реализации псевдо-рекурсивной маршрутизации при использовании интерфейсов рррое и + наверно ещё и при динамике.
--- либо ---
чуть проще: проверять наличие глобала на рррое, а при его отсутствии - просто дисаблить маршрут,
статика уже сама подхватится по дистанции приоритетов в маршрутах.



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
Аватара пользователя
algerka
Сообщения: 407
Зарегистрирован: 14 дек 2011, 12:31

Вот вам готовый вариант скрипт из mikrotikwizard.com, используется когда два интерфейса pppoe. Там как раз рекурсивная маршрутизация используется. Может пригодиться чтобы с нуля не делать.

Код: Выделить всё

#Name: CheckGateway v.1
#Created by MikroTik configuration wizard (www.mikrotikwizard.com)
:local debug false;
# isp1
:if ([/interface find comment=isp1] != "") do={
:local wan1 [/interface get [find comment=isp1] name];
:if ( [/interface pppoe-client get $wan1 running]) do={
:local NewGW [/ip address get [find interface=$wan1] network;
:foreach g in=[/ip route find where comment=isp1] do={
:local OldGW [/ip route get $g gateway];
:if ($OldGW!=$NewGW) do={
/ip route set $g gateway=$NewGW;
:log info "CheckGateway: isp1 change gateway from $OldGW to $NewGW";
} else {
if ($debug) do={:log info "CheckGateway: isp1 route is not change $OldGW / $NewGW";}
}
}   
} else {
if ($debug) do={:log info "CheckGateway: interface $wan1 is not ready";}
}
} else {
:log warning "CheckGateway: ERROR isp1 interface NOT found";
}
 
# isp2
:if ([/interface find comment=isp2] != "") do={
:local wan2 [/interface get [find comment=isp2] name];
:if ( [/interface pppoe-client get $wan2 running]) do={
:local NewGW [/ip address get [find interface=$wan2] network;
:foreach g in=[/ip route find where comment=isp2] do={
:local OldGW [/ip route get $g gateway];
:if ($OldGW!=$NewGW) do={
/ip route set $g gateway=$NewGW;
:log info "CheckGateway: isp2 change gateway from $OldGW to $NewGW";
} else {
if ($debug) do={:log info "CheckGateway: isp2 route is not change $OldGW / $NewGW";}
}
}   
} else {
if ($debug) do={:log info "CheckGateway: interface $wan2 is not ready";}
}
} else {
:log warning "CheckGateway: ERROR isp2 interface NOT found";
}
 


Если вам надо всего один pppoe - выберите в визарде тот вариант который надо.


Александр
lupus23ua
Сообщения: 7
Зарегистрирован: 04 ноя 2017, 19:12
Откуда: Москва

Маршруты, в которых в качестве шлюза указан интерфейс (кроме directly connected) не используются в рекурсивном поиске. Не важно, pppoe или ethernet. Так что. без скриптов, наверное. не получится.


Obi Van
Сообщения: 15
Зарегистрирован: 02 фев 2018, 12:52

Всем доброго дня! Чуть некропоста )) Хорошо, что набрёл на ветку и на этот форум. Точно также год назад пытался настроить свой RB3011. Ну конечно внезапно рекурсия не работала. Было именно как на картинке у ТС. Более всего было непонятно почему так (в доки сильно не вдавался тогда) и решил забить сделать просто без рекурсии. Да всё замечательно переключалось, когда например: рвали оптику от pppoe оператора, пару раз вылетал их свич. Всё было хорошо, т.к в этих случаях просто падало pppoe соединение и активировался маршрут со следующей дистанцией на второго оператора. Внезапно, у оператора бывали проблемы именно как и описывает ТС, т.е падение инета за шлюзом провайдера. Вот тут то и вернулся я опять к рекурсивным маршрутам, которые конечно не работают. Вчитавшись в тему, записал вместо интерфейса оператора, адрес шлюза, который выдался и... о чудо всё работает.
Точно не знаю, но видел, что шлюз выдаётся постоянно один и тот же и в сущности можно обойтись без скрипта. )) Однако лучше реализовать правильно, вдруг чего. :ps_ih:


Ответить