amper Опубликовано 25 февраля, 2015 · Жалоба Микротик с каналами от двух провайдеров (основной и бэкап), переключение осуществляется через netwatch (пинг 8.8.8.8) и последующим запуском скрита, который меняет маршрут на 0.0.0.0 + пристреливает UDP сессии в NAT (т.к. они в отличии от TCP не убиваются, при изменении шлюза). Проблемы 3: - при однократной потере пинга, присходит переключение (вкупе с пристреливанием сессий это негативно отражается на VoIP) - отсутствует возможность работы с двух провайдеров одновременно (т.е. достучаться к роутеру можно только по одному активному маршруту) - доступ к роутеру только удаленный, экспериментировать опасно, локап сложно исправить, safe mode работает не так безупречно как хотелось бы Собственно был бы благодарен за проверенную инструкцию по настройке мангла, чтобы работало 2 канала одновременно (как я понимаю надо маркировать трафик, пришедший на определенный интерфейс и в него же его возвращать) и совет по настройке автоматического переключения таким образом, чтобы переключение осуществлялось, например, если более 5 пакетов подряд потеряно, или несколько хостов не ответили, видимо тут нужна некая системная переменная, которая будет меняться после замены маршрута (чтобы понапрасу не убивать активные соединения). Например: - переход на бэкап, как только на пинг не ответил 8.8.8.8 (netwatch) запускаем внешний скрипт, он проверяет значение переменной backup, если 0 то пингуем (условно) 1.2.3.4, если НЕТ ответа, то меняем значение переменной backup=1, и запускаем скрипт замены шлюза если 0 то пингуем (условно) 1.2.3.4, если ЕСТЬ ответ, то ничего не делаем если 1 то ничего не делаем - возврат на основной канал, как только на пинг ответил 8.8.8.8 (netwatch) запускаем внешний скрипт, он проверяет значение переменной backup, если 1 то пингуем (условно) 1.2.3.4, если НЕТ ответа, то ничего не делаем если 1 то пингуем (условно) 1.2.3.4, если ЕСТЬ ответ, то меняем значение переменной backup=0, и запускаем скрипт замены шлюза если 0 то ничего не делаем Разумеется, пинги должны ходить только через основной шлюз. Но думаю такой вариант тоже не безупречен... может кто подскажет надежнее? И как быть со шлюзом на 0.0.0.0, в случае с двумя активными каналами и манглом, просто менять шлюз уже не получится... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shader Опубликовано 25 февраля, 2015 · Жалоба Ecmp? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Lxndr.Ya Опубликовано 25 февраля, 2015 (изменено) · Жалоба отсутствует возможность работы с двух провайдеров одновременно (т.е. достучаться к роутеру можно только по одному активному маршруту) Это решается: /ip firewall mangle add action=mark-connection chain=prerouting comment=Incoming_LN_connection connection-state=new in-interface=ether5-gateway new-connection-mark=LN_Route passthrough=no add action=mark-connection chain=prerouting comment=Incoming_KS_connection connection-state=new in-interface=ether1-gateway new-connection-mark=KS_Route passthrough=no add action=mark-routing chain=output comment=Mark_Out_LN_routing connection-mark=LN_Route new-routing-mark=LN_Route passthrough=no add action=mark-routing chain=output comment=Mark_Out_KS_routing connection-mark=KS_Route new-routing-mark=KS_Route passthrough=no /ip route add distance=1 gateway="ln_gw" routing-mark=LN_Route add distance=1 gateway="ks_gw" routing-mark=KS_Route (1 и 5 порты на разных провайдеров) при однократной потере пинга, присходит переключение (вкупе с пристреливанием сессий это негативно отражается на VoIP) /ip firewall mangle add action=mark-connection chain=postrouting comment=Outgoing_LN_connection connection-state=new new-connection-mark=LN_Route out-interface=ether5-gateway passthrough=no add action=mark-connection chain=postrouting comment=Outgoing_KS_connection connection-state=new new-connection-mark=KS_Route out-interface=ether1-gateway passthrough=no add action=mark-routing chain=prerouting comment=Mark_from_bridge_LN_routing connection-mark=LN_Route in-interface=bridge-local new-routing-mark=LN_Route passthrough=no add action=mark-routing chain=prerouting comment=Mark_from_bridge_KS_routing connection-mark=KS_Route in-interface=bridge-local new-routing-mark=KS_Route passthrough=no /ip route add comment="yandex test route LN" distance=1 dst-address=213.180.193.3/32 gateway="ln_gw" add comment="yandex blackhole" distance=20 dst-address=213.180.193.3/32 type=unreachable add comment="yandex test route KS" distance=1 dst-address=213.180.204.3/32 gateway="ks_gw" add comment="yandex blackhole" distance=20 dst-address=213.180.204.3/32 type=unreachable /tool netwatch add comment="yandex 213.180.193.3 over LN route" down-script="/system script run router0_down" host=213.180.193.3 interval=10s timeout=5s up-script="/system script run router0_up" add comment="yandex 213.180.203.3 over KS route" down-script="/system script run router1_down" host=213.180.204.3 interval=10s timeout=5s up-script="/system script run router1_up" /system script add name=router1_down policy=ftp,read,write,policy,test,password source=" \n:if ([/ping 213.180.204.3 count=5] = 0) do={\ \n:log warning (\"KS router \$KSgateway DOWN, route is BAD, change route!!! :-(\");\ \n/tool sms send usb1 +xxx message=\"\$[/system clock get date]_\$[/system clock get time] :-( KS router \$KSgateway DOWN, route is BAD, change route!!! :-(\"\ \n:global router1 \"Down\";\ \n/ip dhcp-client set 0 default-route-distance=20;\ у меня маршруты по dhcp, у вас может быть статическим, тогда вы на нем меняете distance \n:foreach i in=[/ip firewall connection find connection-mark=\"KS_Route\"] do={/ip firewall connection remove \$i};\ пристреливаются все сессии \n/ip dhcp-client renew 0;\ \n:if ([:pick [/system clock get time] 0 2]>7) do={\ \n:beep frequency=900 length=200ms;\ \n:delay 200ms;\ \n:beep frequency=600 length=200ms;\ \n:delay 200ms;\ \n:beep frequency=300 length=200ms;\ \n}}" аналогично скрипты router0_down router0_up router1_up Изменено 25 февраля, 2015 пользователем Lxndr.Ya Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
amper Опубликовано 2 марта, 2015 · Жалоба add distance=1 gateway="ln_gw" routing-mark=LN_Route а тут не надо IP шлюза указывать, если статика? add comment="yandex blackhole" distance=20 dst-address=213.180.193.3/32 type=unreachable страхуемся от физического падения линка (отключения порта)? Правильно ли я понял логику? Хост А пингуем через канал А, хост Б через канал Б. По умолчанию у маршрута 0.0.0.0 на канале А дистанс меньше, чем на канале Б. Как только А перестает отвечать на пинг, запускаем скрипт, который проверяет доступность хоста А еще 5 раз, если подтверждается, то увеличиваем дистанс на 0.0.0.0 через А, убиваем все соединения, начинаем работать через Б. Как только А поднимается, уменьшаем дистанс на 0.0.0.0 через А, убиваем все соединения, работаем через А. А какова задача пингования Б через Б? Просто формально отследить состояние канала? Или если Б лежит, то дистанс на нем будет еще больше и не позволит его использовать, если вдруг А упадет? \n:global router1 \"Down\";\ - это просто переменная для наглядности и контроля текущего статуса? Это как я понимаю звуковое уведомление, в зависимости от времени суток? \n:if ([:pick [/system clock get time] 0 2]>7) do={\ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ARtisT Опубликовано 3 марта, 2015 · Жалоба Вот бы сделать, чтобы пакет ушёл на тот некстхоп, через который rtt до dst-ip меньше. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
amper Опубликовано 3 марта, 2015 · Жалоба Если, например, канал сильно нагружен, а узкий бэкап простаивает, то может быть ложное переключение. Кстати, по поводу ширины бэкапа, можно ли к нему прикрутить шейперы по виду трафика (например приоретизировать трафик от ip voip сервера)? Или очереди с приоритетами, но будет ли это нормально работать, если нет поддержки со стороны провайдера? (Бэкап 2мегабита, при переключении начинаются затыки на IP телефонии) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Lxndr.Ya Опубликовано 3 марта, 2015 · Жалоба add distance=1 gateway="ln_gw" routing-mark=LN_Route Да, ln_gw и ks_gw указываются нужные шлюзы А какова задача пингования Б через Б? Просто формально отследить состояние канала? Или если Б лежит, то дистанс на нем будет еще больше и не позволит его использовать, если вдруг А упадет? Тогда дистанс Б увеличится и все заработает через 3G modem (в моем случае). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Lxndr.Ya Опубликовано 3 марта, 2015 · Жалоба Если, например, канал сильно нагружен, а узкий бэкап простаивает, то может быть ложное переключение Если происходят ложные срабатывания можно увеличить ping-и до 10, но это уж должна быть большая полка. Кстати, по поводу ширины бэкапа, можно ли к нему прикрутить шейперы по виду трафика (например приоретизировать трафик от ip voip сервера)? Или очереди с приоритетами, но будет ли это нормально работать, если нет поддержки со стороны провайдера? (Бэкап 2мегабита, при переключении начинаются затыки на IP телефонии) Можно попробовать значительно урезать качальщиков, чтобы не было полки. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
amper Опубликовано 3 марта, 2015 · Жалоба А как-то приоретизировать нельзя? При ширине бэкапа 2мбит-а и отсутствия активных телефонных звонков не хотелось бы просто так затыкать всем кислород. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Lxndr.Ya Опубликовано 4 марта, 2015 · Жалоба А как-то приоретизировать нельзя? При ширине бэкапа 2мбит-а и отсутствия активных телефонных звонков не хотелось бы просто так затыкать всем кислород. если нет поддержки со стороны провайдера? Только для исходящего трафика можно приоритезировать. По входу - только шейпер для всех (2мбит-а минус 100кбит на кол-во звонков для G.711), оставляя запас для VoIP (чуть больше нужной полосы). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Lxndr.Ya Опубликовано 10 марта, 2015 · Жалоба Хотя, по входу можно настроить равномерное распределение очередями как написано тут PCQ На микротик мне не надо было, а вот на ipfw dummynet нормально когда-то работало. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
amper Опубликовано 14 марта, 2015 (изменено) · Жалоба Lxndr.Ya Правильно понимаю логику скриптов поднятия маршрута? Проверяем, что удаленный хост начал отвечать на пинг, а переменная router1 подтверждает, что ранее маршрут был отключен (а не просто netwatch запустил скрипт поднятия) ([/ping 77.88.8.8 count=5] = 5 and $router1 = Down) do={ Но потом встает задача очистить таблицу соединений, и вот тут логика не совсем ясна, при поднятии основного интерфейса убиваем все соединения на запасном, а вот при падении\поднятии запасного, что делать? Или ничего не делать? Значение переменной global, которую создал другой скрипт при своей работе как долго должно просуществовать? До перезагрузки? Кстати, а что если пинговать хосты не через статичные маршруты (связка хост+шлюз), а через команду ping 8.8.8.8 interface=ether1-gw ? Насколько надежно это будет работать? P.S. Кстати, почему-то UDP соединения в таблице ip firewall connection не имеют connection mark. Изменено 14 марта, 2015 пользователем amper Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
amper Опубликовано 15 марта, 2015 · Жалоба Хотя, по входу можно настроить равномерное распределение очередями как написано тут PCQ На микротик мне не надо было, а вот на ipfw dummynet нормально когда-то работало. А можно ли использовать те же router-mark'и, которые используются для одновременной работы двух каналов для PCQ? И как быть с пакетами input\output (на микротике живет openvpn сервер)? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kinord Опубликовано 16 марта, 2015 · Жалоба что бы не плодить новую тему спрошу здесь с позволения топикстартера: У меня на микротик приходит два канала от одного провайдера по l2tp с разных физич. мест. разрулил маршрутами с маркировкой, что исходящий трафик идет по разным туннелям l2tp, а вот входящий почему-то идет только через один туннель, а точнее трафик бегает в обоих туннелях, но по физической линии приходит только по одной. В чём загвоздка может быть? Может быть вообще не будет так работать, т.к. нужны еще определенные правила со стороны оператора? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Lxndr.Ya Опубликовано 16 марта, 2015 · Жалоба два канала от одного провайдера по l2tp с разных физич. мест. трафик бегает в обоих туннелях, но по физической линии приходит только по одной оба l2tp строится с одного ip? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kinord Опубликовано 16 марта, 2015 · Жалоба Просмотр сообщенияkinord (Сегодня, 12:07) писал: два канала от одного провайдера по l2tp с разных физич. мест. трафик бегает в обоих туннелях, но по физической линии приходит только по одной оба l2tp строится с одного ip? нет ip разные используются, т.е. я полагаю, что это даже разные сервера со стороны провайдера Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Lxndr.Ya Опубликовано 16 марта, 2015 · Жалоба оба l2tp строится с одного ip? нет ip разные используются, т.е. я полагаю, что это даже разные сервера со стороны провайдера не сторона провайдера, твоя сторона 2 ip адреса? А можно ли использовать те же router-mark'и, которые используются для одновременной работы двух каналов для PCQ? И как быть с пакетами input\output (на микротике живет openvpn сервер)? input\output по моим правилам и так маркируется. Я с PCQ не игрался, но думаю, что те же можно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kinord Опубликовано 16 марта, 2015 (изменено) · Жалоба оба l2tp строится с одного ip? нет ip разные используются, т.е. я полагаю, что это даже разные сервера со стороны провайдера не сторона провайдера, твоя сторона 2 ip адреса? Да, адреса разные, причем присваиваются они по dhcp сначала серые при физическом подключении, потом два разных паблика, когда происходит подключение по l2tp Изменено 16 марта, 2015 пользователем kinord Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Lxndr.Ya Опубликовано 16 марта, 2015 (изменено) · Жалоба Да, адреса разные, причем присваиваются они по dhcp сначала серые при физическом подключении, потом два разных паблика, когда происходит подключение по l2tp И как тогда на разные серые ip полученые с разных mac-ов через разные порты по dhcp пакеты прилетают через один порт? Тогда не через разные порты работают серые ip. Изменено 18 марта, 2015 пользователем Lxndr.Ya Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...