PCC на 3 провайдера
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: PCC на 3 провайдера
Да, всё верно. Для проверки ситуаций вроде "пакеты пропадают внутри провайдера" можно использовать дополнительные скрипты или https://wiki.mikrotik.com/wiki/Advanced ... _Scripting
-
- Сообщения: 10
- Зарегистрирован: 24 янв 2020, 17:57
Re: PCC на 3 провайдера
Посмотрите, пожалуйста, правильно ли я применил рекурсивные маршруты к данному примеру?
Код: Выделить всё
add dst-address=77.88.8.1 gateway=82.1.1.125 scope=10
add dst-address=77.88.8.2 gateway=82.2.2.117 scope=10
add dst-address=77.88.8.3 gateway=pppoe-out1_ByFly scope=10
add distance=1 gateway=77.88.8.1 routing-mark=ISP1-WAN1 check-gateway=ping
add distance=2 gateway=77.88.8.2 routing-mark=ISP1-WAN1 check-gateway=ping
add distance=3 gateway=77.88.8.3 routing-mark=ISP1-WAN1 check-gateway=ping
add distance=1 gateway=77.88.8.2 routing-mark=ISP1-WAN2 check-gateway=ping
add distance=2 gateway=77.88.8.3 routing-mark=ISP1-WAN2 check-gateway=ping
add distance=3 gateway=77.88.8.1 routing-mark=ISP1-WAN2 check-gateway=ping
add distance=1 gateway=77.88.8.3 routing-mark=ISP1-WAN3 check-gateway=ping
add distance=2 gateway=77.88.8.1 routing-mark=ISP1-WAN3 check-gateway=ping
add distance=3 gateway=77.88.8.2 routing-mark=ISP1-WAN3 check-gateway=ping
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: PCC на 3 провайдера
Эх, идея правильная, реализация, к сожалению, в случае с ByFly не сработает из-за "особенностей" RouterOS Там надо сделать так: создать PPP Profile (скопировать текущий), указать ему в Remote Address 77.88.8.3, навесить на подключение pppoe-out1_ByFly и убрать маршрут "add dst-address=77.88.8.3 gateway=pppoe-out1_ByFly scope=10"
-
- Сообщения: 10
- Зарегистрирован: 24 янв 2020, 17:57
Re: PCC на 3 провайдера
Ясно, спасибо. Из Вашего опыта - одного узла на линк в рекурсивном маршруте достаточно для определения "мёртвого" провайдера? И вообще, что лучше - использовать рекурсивные маршруты с несколькими узлами на линк или использовать дополнительные скрипты?
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: PCC на 3 провайдера
Для определения "мёртвого" - определённо достаточно. Больше одного надо для определения "живого", когда пингуемый узел недоступен по своей собственной причине, и провайдер не виноват Вы поработайте в таком режиме, если что-то не понравится - тогда и будете доделывать, согласно новым требованиям.
-
- Сообщения: 10
- Зарегистрирован: 24 янв 2020, 17:57
Re: PCC на 3 провайдера
Спасибо, буду пробовать.
К L2TP это тоже относится?
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
-
- Сообщения: 10
- Зарегистрирован: 24 янв 2020, 17:57
Re: PCC на 3 провайдера
В моём случае 3-го провайдера пока не подключили, поэтому тренируюсь на 2-х имеющихся. Проблема заключается в том, что проверить работоспособность на практике могу только несколько часов в неделю. Вроде PCC работает, но "меня терзают смутные сомнения"... Посмотрите, пожалуйста, конфиг:
Вот в таком виде, если с Тика сделать ping до любого внешнего узла, получаю в ответ "no route to host". Проблема решается добавлением следующих маршрутов:
Так и должно быть? Или у меня где-то ошибка с маркировкой в mangle?
Код: Выделить всё
/ip address
add address=192.168.11.1/24 comment="Local Area" interface=LAN-Bridge network=192.168.11.0
add address=87.*.*.19/28 comment="ISP1" interface=ether6-ISP1 network=87.*.*.16
add address=178.*.*.216/26 comment="ISP2" interface=ether7-ISP2 network=178.*.*.192
Код: Выделить всё
/ip firewall mangle
add action=mark-connection chain=prerouting comment=ISP1 in-interface=ether6-ISP1 new-connection-mark=from-ISP1 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=from-ISP1 new-routing-mark=to-ISP1 passthrough=yes
add action=mark-routing chain=output connection-mark=from-ISP1 new-routing-mark=to-ISP1 passthrough=yes
add action=mark-routing chain=output new-routing-mark=to-ISP1 passthrough=yes src-address=87.*.*.19
add action=mark-connection chain=prerouting comment=ISP2 in-interface=ether7-ISP2 new-connection-mark=from-ISP2 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=from-ISP2 new-routing-mark=to-ISP2 passthrough=yes
add action=mark-routing chain=output connection-mark=from-ISP2 new-routing-mark=to-ISP2 passthrough=yes
add action=mark-routing chain=output new-routing-mark=to-ISP2 passthrough=yes src-address=178.*.*.216
add action=mark-connection chain=prerouting comment="PCC 2/0" connection-state=new dst-address-type=!local new-connection-mark=ISP1-conn passthrough=yes \
per-connection-classifier=both-addresses-and-ports:2/0
add action=mark-connection chain=prerouting comment="PCC 2/1" connection-state=new dst-address-type=!local new-connection-mark=ISP2-conn passthrough=yes \
per-connection-classifier=both-addresses-and-ports:2/1
add action=mark-routing chain=prerouting comment=PCC connection-mark=ISP1-conn new-routing-mark=ISP1 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=ISP2-conn new-routing-mark=ISP2 passthrough=yes
Код: Выделить всё
/ip route rule
add src-address=87.*.*.19/32 table=to-ISP1
add src-address=178.*.*.216/32 table=to-ISP2
add dst-address=192.168.0.0/16 table=main
add dst-address=172.16.0.0/12 table=main
add dst-address=10.0.0.0/8 table=main
add routing-mark=ISP1 table=to-ISP1
add routing-mark=ISP2 table=to-ISP2
Код: Выделить всё
/ip route
add distance=1 gateway=172.29.9.9 routing-mark=ISP1
add distance=2 gateway=172.28.8.8 routing-mark=ISP1
add distance=1 gateway=172.28.8.8 routing-mark=ISP2
add distance=2 gateway=172.29.9.9 routing-mark=ISP2
add distance=1 dst-address=1.0.0.1/32 gateway=178.*.*.193 scope=10
add distance=1 dst-address=77.88.8.1/32 gateway=87.*.*.17 scope=10
add distance=1 dst-address=77.88.8.2/32 gateway=87.*.*.17 scope=10
add distance=1 dst-address=77.88.8.3/32 gateway=178.*.*.193 scope=10
add check-gateway=ping distance=1 dst-address=172.28.8.8/32 gateway=77.88.8.3 scope=10
add check-gateway=ping distance=1 dst-address=172.28.8.8/32 gateway=1.0.0.1 scope=10
add check-gateway=ping distance=1 dst-address=172.29.9.9/32 gateway=77.88.8.1 scope=10
add check-gateway=ping distance=1 dst-address=172.29.9.9/32 gateway=77.88.8.2 scope=10
Код: Выделить всё
/ip route
add check-gateway=ping distance=1 gateway=87.*.*.17
add check-gateway=ping distance=2 gateway=178.*.*.193
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: PCC на 3 провайдера
Так должно быть. Особенность маршрутизации локальных пакетов (например, пинг с роутера): сначала происходит route lookup в таблице main (а в ней у вас сейчас нет маршрутов, поэтому no route to host), а затем в Mangle Output делается routing adjustment (по свеженавешенной routing mark) - и пакет уходит уже в новом направлении.c0v0x писал(а): ↑10 фев 2020, 18:03 Вот в таком виде, если с Тика сделать ping до любого внешнего узла, получаю в ответ "no route to host". Проблема решается добавлением следующих маршрутов:Так и должно быть? Или у меня где-то ошибка с маркировкой в mangle?Код: Выделить всё
/ip route add check-gateway=ping distance=1 gateway=87.*.*.17 add check-gateway=ping distance=2 gateway=178.*.*.193
-
- Сообщения: 10
- Зарегистрирован: 24 янв 2020, 17:57
Re: PCC на 3 провайдера
Кстати, недавно убрали эту статью из Wiki, почему-то...Chupaka писал(а): ↑28 янв 2020, 12:45 Да, всё верно. Для проверки ситуаций вроде "пакеты пропадают внутри провайдера" можно использовать дополнительные скрипты или https://wiki.mikrotik.com/wiki/Advanced ... _Scripting
Применил Ваши рекомендации другому участнику под себя. Посмотрите, пожалуйста, всё ли правильно?Chupaka писал(а): ↑14 ноя 2019, 19:52 А вы так не делайте Вы сделайте так, как я написал: connection-mark=no-mark, а не new-connection-mark=no-mark. Т.е. не снимать метку, а НЕ обрабатывать коннекшены, на которых уже есть метка. Ну и routing-mark оставить просто ISP2-WAN2, не надо создавать никаких 80_443-ISP2-WAN2
Код: Выделить всё
/ip firewall mangle
add action=mark-connection chain=prerouting comment=ISP1 in-interface=ether6-ISP1 new-connection-mark=from-ISP1 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=from-ISP1 new-routing-mark=to-ISP1 passthrough=yes
add action=mark-routing chain=output connection-mark=from-ISP1 new-routing-mark=to-ISP1 passthrough=yes
add action=mark-routing chain=output new-routing-mark=to-ISP1 passthrough=yes src-address=87.*.*.19
add action=mark-connection chain=prerouting comment=ISP2 in-interface=ether7-ISP2 new-connection-mark=from-ISP2 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=from-ISP2 new-routing-mark=to-ISP2 passthrough=yes
add action=mark-routing chain=output connection-mark=from-ISP2 new-routing-mark=to-ISP2 passthrough=yes
add action=mark-routing chain=output new-routing-mark=to-ISP2 passthrough=yes src-address=178.*.*.216
add action=mark-connection chain=prerouting comment="PCC HTTP HTTPS 2/0" connection-state=new dst-address-type=!local dst-port=80,443 new-connection-mark=\
ISP1-conn passthrough=yes per-connection-classifier=src-address:2/0 protocol=tcp
add action=mark-connection chain=prerouting comment="PCC HTTP HTTPS 2/1" connection-state=new dst-address-type=!local dst-port=80,443 new-connection-mark=\
ISP2-conn passthrough=yes per-connection-classifier=src-address:2/1 protocol=tcp
add action=mark-connection chain=prerouting comment="PCC 2/0" connection-mark=no-mark connection-state=new dst-address-type=!local new-connection-mark=\
ISP1-conn passthrough=yes per-connection-classifier=both-addresses-and-ports:2/0
add action=mark-connection chain=prerouting comment="PCC 2/1" connection-mark=no-mark connection-state=new dst-address-type=!local new-connection-mark=\
ISP2-conn passthrough=yes per-connection-classifier=both-addresses-and-ports:2/1
add action=mark-routing chain=prerouting comment=PCC connection-mark=ISP1-conn new-routing-mark=ISP1 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=ISP2-conn new-routing-mark=ISP2 passthrough=yes
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: PCC на 3 провайдера
Какашки они потому что... Забрали доступ для не-сотрудников к редактированию статей, вот я и попросил удалить, пока перенёс на https://forum.mikrotik.com/viewtopic.php?f=23&t=157048, думаю, где лучше оставить на перманентное место дислокации...
Тут всё просто: если работает так, как ожидается - значит, всё правильно Пока, к сожалению, нет времени вычитывать...
-
- Сообщения: 10
- Зарегистрирован: 24 янв 2020, 17:57
-
- Сообщения: 10
- Зарегистрирован: 24 янв 2020, 17:57
Re: PCC на 3 провайдера
Chupaka, конфигурация, которую я приводил выше, у меня в работе. Сегодня провайдер ISP1 приостанавливал доступ к услугам связи из-за неуплаты. При этом в листе маршрутизации была такая картина:
Попытка пингануть из консоли терминала любой узел, заканчивалась таймаутом. Но если я выключал интерфейс ether6-ISP1, или вручную менял дистанцию на маршруте через шлюз 178.*.*.193 (интерфейс ether7-ISP2) с 2 на 1, то этот маршрут становился активным и всё начинало работать. Почему переключение не происходило автоматически?
Попытка пингануть из консоли терминала любой узел, заканчивалась таймаутом. Но если я выключал интерфейс ether6-ISP1, или вручную менял дистанцию на маршруте через шлюз 178.*.*.193 (интерфейс ether7-ISP2) с 2 на 1, то этот маршрут становился активным и всё начинало работать. Почему переключение не происходило автоматически?
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: PCC на 3 провайдера
В вашей конфигурации никак не регламентируются исходящие от роутера соединения, поэтому они шли в таблице main - а там нет failover'а. При этом пакеты от клиентов (маркированные как ISP1/2) должны были нормально идти через ISP2, судя по скриншоту.
-
- Сообщения: 10
- Зарегистрирован: 24 янв 2020, 17:57
Re: PCC на 3 провайдера
Подскажите, пожалуйста, как нужно правильно регламентировать исходящие соединения? Может какие-то примеры есть?
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: PCC на 3 провайдера
Например, так:
Это отправит весь непомеченный трафик роутера через таблицу ISP1.
Код: Выделить всё
/ip firewall mangle
add chain=output connection-mark=no-mark action=mark-routing new-routing-mark=ISP1
-
- Сообщения: 10
- Зарегистрирован: 24 янв 2020, 17:57
Re: PCC на 3 провайдера
Правильно ли я понимаю, что это правило должно быть самым последним в mangle?
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: PCC на 3 провайдера
Скорее, оно должно быть последним в output, но и тут лучше посмотреть на другие правила output. Относительно других цепочек mangle оно может быть где угодно.
-
- Сообщения: 1
- Зарегистрирован: 06 май 2024, 12:08
Re: PCC на 3 провайдера
Нужно добавлять дополнительное правило в роутинг, добавлять дополнительный Netwatch, а также дополнительное правило фаервола. Иначе работать не будет корректно!
Здесь более детально расписано как это сделать - https://t.me/wifibog либо же здесь - https://m.olx.ua/d/uk/obyavlenie/nastro ... HaucZ.html
Здесь более детально расписано как это сделать - https://t.me/wifibog либо же здесь - https://m.olx.ua/d/uk/obyavlenie/nastro ... HaucZ.html