Как стать автором
Обновить

Mikrotik автоматическое переключение на резервный канал для динамического ip адреса (выдаваемого по DHCP)

Время на прочтение6 мин
Количество просмотров52K
Всего голосов 15: ↑13 и ↓2+11
Комментарии22

Комментарии 22

Можно сделать всё гораздо проще ))) В маршрутах можно указывать не IP-адрес, а интерфейс. Плюс — почему-бы не использовать параметр distance? Для примера два провайдера по PPPoE (с динамическими адресами как раз). Работает и гораздо короче конфигурация :)

/interface pppoe-client
add ac-name="" add-default-route=no allow=chap dial-on-demand=no disabled=no interface=ether9 name=PPPoEisp1 user=isp1 password=testPassword profile= default service-name="" 
add ac-name="" add-default-route=no allow=chap dial-on-demand=no disabled=no interface=ether10 name=PPPoEisp2 user=isp2 password=testPassword profile= default service-name="" 

/ip route
add distance=1 gateway=PPPoEisp1
add distance=2 gateway=PPPoEisp2


PS: Вообще у использования скриптов есть свои минусы — пару раз встречался с умершими микротиками из-за них. Проблема в том, что внутренняя флеш-память с ограниченным числом циклов записи, соответственно при каждом изменении конфигурации скриптом идёт запись на неё и если каналы очень нестабильны и постоянно идёт переключение, то через 2-3 года флешка умирает (а с ней и микротик)
Мне кажется за 2-3 года флешка не ушатается. Может быть вам попались экземпляры неудачные, есть у меня один который из коробки показывает 0.1% битых блоков
Там был момент, что связь была не самая стабильная :) ADSL от Ростелекома как основной + МТСовский свисток — переключалось раз по 100 в день :) Но так как не люди сидели, а мониторинг, который мог и подождать с отправками, то не сильно критично. А у любой флешки предел по записи не очень большой.
Полностью с Вами согласен… С этого я и начал…
Что-то типа этого:
/ip route add gateway=isp1 dst-address=0.0.0.0 distance=10
Я конечно не знаком, с предыдущими версиями Mikrotik, но в 6-й версии если указать интерфейс в маршруте по умолчанию, работать такой маршрут не будет… И из-за этого пришлось написать скрипт.
Да, сложные скрипты тяжело написать, постоянно возникают ситуации тяжелые для отладки. Например, такая как описана в конце статьи.
У вас однозначно глюк. Так как пример я вам приводил с рабочего роутера (за исключением имён-паролей-других параметров). И у меня всё работает именно так. Если надо могу полную конфигу скинуть в личку, но сильно не изменится. Как вариант вообще в GNS поднять конфигурацию тестовую и погонять.
Вы видимо не внимательны. У вас pppoe, т.е. point-to-point соединение, для которого достаточно указать только исходящий интерфейс, ведь на том конце всего одна точка, и пакеты всегда придут куда надо. А автора статьи ethernet, и адрес шлюза тут обязателен, ведь что-бы пакеты достигли шлюза тут не достаточно просто отправить их через нужный интерфейс, а нужно ещё и указать в заголовке кадра мак адрес шлюза. Это же азы работы сетей…
Проверено на новой конфигурации самое новое обновление 6.27.
Если ставлю название интерфейса у меня isp1, допустим gateway=172.16.0.1%isp1 пинг на ip 172.16.0.1 и 8.8.8.8 есть. Если ставлю gateway=isp1 пинг на 8.8.8.8, а, Вы не поверите, пинг до шлюза 172.16.0.1 есть… Я в шоке!!!
Кто может помогите!!!
Ещё один плюс к варианту с глюком — по умолчанию в интерфейсе винбокса выбирается именно интерфейс (и как раз IP адрес можно только через консоль указать)

На счет глюка не спорю, вполне возможно. Так как я первый раз сталкиваюсь с Mikrotik-ом думал, что проблема в RouterOS. Ставил несколько версий прошивки — результат тот же.
Ввожу команду /ip route add gateway=isp1 dst-address=0.0.0.0 distance=1
Появляется маршрут

Но пинга нет…
Я знаю, что-то пропускаю, но что?
Трасерт + конфиг с затёртыми паролями смотреть надо.
Конфиг абсолютно пустой!
В таблице маршрутизации только мост, интерфейс к провайдеру и шлюз по-умолчанию(введенный в ручную не dhcp-клиентом).

На чем именно трасерт? На микротике? Он странный! Ничего не понятно…
Показывает пять хопов и 100% lost
Если трасероут запустить на клиенте…

Заголовок спойлера
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 192.168.3.1 8.597 ms 10.176 ms 12.527 ms
2 172.16.0.246 544.065 ms !H 544.603 ms !H 545.437 ms !H
thund3r@G3000:~$ traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 192.168.3.1 5.389 ms 7.532 ms 9.664 ms
2 172.16.0.1 12.916 ms 15.344 ms 15.804 ms
3 * * *
4 81.23.22.201 33.904 ms 35.799 ms 37.081 ms
5 81.23.22.202 31.514 ms 32.024 ms 38.490 ms
6 209.85.252.123 103.632 ms 99.047 ms 98.175 ms
7 209.85.249.175 97.934 ms 209.85.249.79 96.358 ms 209.85.249.173 94.480 ms
8 216.239.46.9 96.357 ms 72.14.233.174 80.920 ms 216.239.46.15 83.544 ms
9 * * *
10 8.8.8.8 77.494 ms 61.110 ms 61.874 ms


Можно конечно с помощью DHCP-клиента назначать маршрут… но тогда не возможно проверить живой ли канал…
Интерфейс можно назначать только для PPP соединений, но не для ethernet. :(
Это я читал… Этот вариант только для статического адреса. GW1 и GW2 это не переменные. Как написано в статье — в первом варианте скрипта подставлялась переменная в маршрут по умолчанию, но проявлялось много проблем с RouterOS.
У меня раньше было похожим образом настроено — отваливается 1 канал и микротик автоматом на второй переключает.
Затем наткнулся на ЭТУ статью и теперь у меня просто напросто одновременно работают оба канала. Если один ложится — второй все равно активен.
Юзаю недели 3 — проблем не встречал вообще.

P.S.: 1 канал на 20 Мб/с, второй — 10 Мб/с.
Запускаем торрент с большим количеством сидов — на входе в комп скорость 30 Мб/с.
Да, это здорово, но как я ответил выше, эта команда не работает
/ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=isp1
а если добавлять маршрут dhcp-клиентом в нем нельзя указать routing-mark. Из-за этого пришлось придумывать костыли. Хотя ниже предложили VRF, возможно это и будет более оптимальным решением.
Затестил ЭТУ тему. Мои наблюдения:

Качать с торрентов — ДА!. Скорость с обоих каналов по максимуму.
Работа с онлайн банками — НЕТ! — через каждые 5-120 секунд теряется сигнал, а именно, открыв тот же 2ip.ru и тупо обновляя страницу через каждые 3-5 секунд, станет видно отображение внешнего IP-адреса то с одного провайдера, то с другого.
Хотя, костыль вставил тем, что в роутах жестко прописал, мол, если идем в банк, то только через конкретного провайдера.
В общем, схема полурабочая. К массовой реализации не рекомендую.
Ех, молодежжь. Берете засовываете WAN интерфейсы в VRF(Ip-routes-VRF) и вешаем роутмарк нужный. Теперь же нам остается по нужному критерию(например пинги пропали на 8,8,8,8) нетвотчем всему исходящему трафику вешать нужный марк роутинга в манглах. так мы сможем направлять в нужный аплинк трафик.
В общем если у вас есть динамический внешний адрес и вам надо с ним работать(например направлять туда некоторых клиентов то локалки) то самый простой выход это юзать VRF
Спасибо за совет! Сейчас почитаю…
Почитал, сделать конфигурацию с помощью VRF… те же проблемы…
1) С горем по-полам настроил! Форвардинг работает, но сам роутер не хочет видеть интернет (проблема назначения в маршруте по-умолчанию шлюза. Можно назначить только используя ip адрес, а не название интерфейса, можно использовать скрипт из статьи, но зачем тогда врф. С помощью лупбека тоже не работает)
2) Если переключать с помощью Нетвотч: конечно один раз он переключит, когда пропадет пинг, а так как нельзя указать интерфейс через который пинговать, линк останется на втором интерфейсе, пока он не прервется…

А скрипт проверяет постоянно оба интерфейса! И как только оживает первый интерфейс, сразу переключается…
А вот и нет, нетвочу можно указать через какой интерфейс пинговать. Во-первых, добавив статичный маршрут до требуемого хвоста через требуемый интерфейс, во-вторых, заблочив icmp-трафик до хвоста через ненужный интерфейс.
Раньше нельзя было назначить маршрут указав интерфейс в broadcast среде, только NBMA или статика. Возможно за два года этот баг наконец-то исправили ))
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории