Два провайдера: отказоустойчивость и распределение нагрузки

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Закрыто
KARaS'b
Сообщения: 1197
Зарегистрирован: 29 сен 2011, 09:16

Хотелось бы немного прояснить ситуацию и по возможности получить тычок носом ибо сам не нашел.
При настройке балансера, на первой же странице многоуважаемый podarok66 интересуется: "А как быть тем, кто получает канал по средствам DHCP?" (думаю так же сюда подойдет вариант с PPPoE) и получает ответ на этот вопрос, от не менее уважаемого, Barvinok: " отключать автосоздание деф.роута и вместо гетвея провайдера просто указать интерфейс, аля / ip route add dst-address=0.0.0.0/0 gateway=ether1,ether2,usblan check-gateway=ping", и потом это вроде тож упоминается, более того, в тырнетах, в различных манах поступаю и советуют, в таких случаях, поступать так же. И сначала я обрадовался, а потом попробовал и сильно расстроился, данный вариант не работает, пробовал и на PPPoE и на простом DHCP. И тут встает извечный вопрос, "как жить?", или что я делаю не так, быть может я чего то недопонял?


gmx
Модератор
Сообщения: 3378
Зарегистрирован: 01 окт 2012, 14:48

Так ведь если не eher1 указывать, а именно PPPoE интерфейс должно работать.

Я правда не сильный спец по балансировкам. У мена что-то туго с несколькими каналами у клиентов. Нету средств...


KARaS'b
Сообщения: 1197
Зарегистрирован: 29 сен 2011, 09:16

gmx писал(а):Так ведь если не eher1 указывать, а именно PPPoE интерфейс должно работать.

Я правда не сильный спец по балансировкам. У мена что-то туго с несколькими каналами у клиентов. Нету средств...

Да это понятно, вроде не совсем балбес :hi_hi_hi:, именно PPPoE интерфейс и указываю, но не работает и дело не в PPPoE, рядом второй линк, билайновский, обычное DHCP, тоже не прокатывает и это печально :-(


KARaS'b
Сообщения: 1197
Зарегистрирован: 29 сен 2011, 09:16

А можно понаглеть?) Я бы даже сказал больше поинтересоваться.
В поисках решения проблемы с балансировкой при DHCP подключениях наткнулся на очень полезный скрипт который позволяет избавится от add def. route

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

:global ispgw [ip dhcp-client get [/ip dhcp-client find interface=ether1] gateway];
:global ispgwstat [ip route get  [/ip route find comment="GGW"] gateway];
#:log info ("$ispgw")
#:log info ("$ispgwstat")
:if ($ispgw = $ispgwstat) do={:log info ("ISP GW OK")} else={ip route set [/ip route find comment="GGW"] gateway=$ispgw;  :log info ("ISP GW COMPLETE")}

И вот при помощи этой прелести замечтательно реализуется резервирование, но!...
Если в него тупо дописать вторую переменную , допустим "ispgw2" от допустим второго dhcp клиента, то возможно ли потом как то легко сравнить переменные "ispgw" и "ispgw2" с переменной "ispgwstat" в маршруте и при необходимости добавить только изменившуюся часть, или хотя бы переписать все, но только если ispgw или ispgw2 изменились? Или для этого надо ваять другую "партянку" со значительным увеличением кода и совершенно иной логикой?


KARaS'b
Сообщения: 1197
Зарегистрирован: 29 сен 2011, 09:16

З.Ы. Кстати, насчет PPPoE и невозможности указать в маршруте тупо интерфейс, обманул, с пппое такое возможно, просто пробовал удаленно под "сейф модом", которому не нравился разрыв подключения при замене маршрута) Когда попробовал дома, то все срослось, но вот при DHCP к сожалению вариант не прокатывает.


Аватара пользователя
podarok66
Модератор
Сообщения: 4376
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

KARaS'b писал(а):И вот при помощи этой прелести замечтательно реализуется резервирование, но!...

Не то, чтобы все прелести. Уже не единожды упоминалось, что такой подход не учитывает тот вариант, когда провайдер адрес вашему роутеру выдал, а канал в интернет у него отсутствует. О проверке внешних ресурсов я бы не стал забывать...


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
KARaS'b
Сообщения: 1197
Зарегистрирован: 29 сен 2011, 09:16

podarok66 писал(а):
KARaS'b писал(а):И вот при помощи этой прелести замечтательно реализуется резервирование, но!...

Не то, чтобы все прелести. Уже не единожды упоминалось, что такой подход не учитывает тот вариант, когда провайдер адрес вашему роутеру выдал, а канал в интернет у него отсутствует. О проверке внешних ресурсов я бы не стал забывать...

Не-не-не, вы меня не поняли, этой штукой я избавляюсь от add def. route в DHCP клиенте, что бы создать маршрут руками и при изменение адреса и шлюза скрипт бы заменил этот самый шлюз в роуте, а дальше "нетвоч" с пингом например до 8.8.8.8, или аналогичным хостом в инете и пара команда на "пинг есть и пинга нет", который вырубают и поднимает нужные маршруты. Да я понимаю, что при таком раскладе не ответь мне 8.8.8.8 и канал переключится, но это проще чем писать мега скрипты или использовать кем то написанный под себя и переписывать его для меня.
Самоег главное что меня сейчас интересует, возможно л данный скрипт адаптировать для сбора GW с двух DHCP клиентов и склеивании их в одном маршруте с проверкой, ну вобщем то что выше написал, а это как я понимаю может сказать только наш vqd =)


Аватара пользователя
podarok66
Модератор
Сообщения: 4376
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Так я не понял, что там у вас, проблема в склеивании или в проверке?
Склеить вообще не проблема:

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

ip route set [/ip route find comment="GGW"] gateway="$ispgw,$ispgw2";

С проверкой мне немного веселее, я как обычно на коленке сляпал, ну посмотрите:

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

:if (([:find [/ip route get [find comment="GGW"] gateway] $ispgw]>=0)&&([:find [/ip route get [find comment="GGW"] gateway] $ispgw2]>=0)) do={:put "Ok"} else={/ip route set [/ip route find comment="GGW"] gateway="$ispgw,$ispgw2";}

Уверен, есть более изящное решение, может кто и подскажет.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
KARaS'b
Сообщения: 1197
Зарегистрирован: 29 сен 2011, 09:16

podarok66 писал(а):С проверкой мне немного веселее, я как обычно на коленке сляпал, ну посмотрите:

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

:if (([:find [/ip route get [find comment="GGW"] gateway] $ispgw]>=0)&&([:find [/ip route get [find comment="GGW"] gateway] $ispgw2]>=0)) do={:put "Ok"} else={/ip route set [/ip route find comment="GGW"] gateway="$ispgw,$ispgw2";}

Уверен, есть более изящное решение, может кто и подскажет.

Спасибо за предложенный вариант, в итоге отказался от этой идеи и в принципе все уже реализовал как и хотел при помощи ECMP, но правда, на мой взгляд с костылями, причем с костылями для костылей!)
Но пока меня очень интересует вопрос, за что отвечает строка "scope" в маршрутах, не понимаю я этих буржуйских описаний, а случаи с примерами, что бы хотя бы интуитивно понять, найти не смог.
За основу были взяты вот эти строки
 

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

###Обеспечение failover c более глубоким анализом канала###
#с помощью параметра scope укажем рекурсивные пути к узлам 8.8.8.8 и 8.8.4.4
/ip route add dst-address=8.8.8.8 gateway=10.100.1.254 scope=10
/ip route add dst-address=8.8.4.4 gateway=10.200.1.254 scope=10
# укажем 2 default gateway через узлы путь к которым указан рекурсивно
/ip route add dst-address=0.0.0.0/0 gateway=8.8.8.8 distance=1 check-gateway=ping
/ip route add dst-address=0.0.0.0/0 gateway=8.8.4.4 distance=2 check-gateway=ping

Причем единственное что по этому поводу пишет автор это
остановимся подробнее на втором. Он подразумевает не совсем корректное использование параметра scope, но поможет нам прощупать канал провайдера глубже, чем до шлюза. Принцип прост: Вместо традиционного указания default gateway=шлюз провайдера, мы скажем роутеру что default gateway это какой-то из всегда_доступных_узлов (например 8.8.8.8 или 8.8.4.4) и он в свою очередь доступен через шлюз провайдера.

И вот хотелось бы понять, для чего scope в принципе нужен и что с ним сделал автор текста.


Аватара пользователя
algerka
Сообщения: 407
Зарегистрирован: 14 дек 2011, 12:31

KARaS'b писал(а):Хотелось бы немного прояснить ситуацию и по возможности получить тычок носом ибо сам не нашел.
При настройке балансера, на первой же странице многоуважаемый podarok66 интересуется: "А как быть тем, кто получает канал по средствам DHCP?" (думаю так же сюда подойдет вариант с PPPoE) и получает ответ на этот вопрос, от не менее уважаемого, Barvinok: " отключать автосоздание деф.роута и вместо гетвея провайдера просто указать интерфейс, аля / ip route add dst-address=0.0.0.0/0 gateway=ether1,ether2,usblan check-gateway=ping", и потом это вроде тож упоминается, более того, в тырнетах, в различных манах поступаю и советуют, в таких случаях, поступать так же. И сначала я обрадовался, а потом попробовал и сильно расстроился, данный вариант не работает, пробовал и на PPPoE и на простом DHCP. И тут встает извечный вопрос, "как жить?", или что я делаю не так, быть может я чего то недопонял?

На pppoe должен работать (у меня по крайне мере на ростелекоме работает), как и на ppptp & l2tp, на dhcp действительно не работает.
Для dhcp я использую скрипт, который периодически берет адрес шлюза с dhcp клиента и меняет для маршрута.


Александр
Закрыто