Два провайдера, два туннеля
Добавлено: 24 июл 2018, 17:05
Вроде все работает, но не могу понять почему... :)
Попробую кратенько. Есть два офиса, в каждом два провайдера. Офисы не очень далеко друг от друга, и по этому один провайдера (назовем его ПровайдерА) присутствует в обоих офисах, так же ПровайдерБ в первом и ПровайдерВ во втором.
В обоих офисах настроил балансировку по вики https://wiki.mikrotik.com/wiki/Manual:PCC
Дополнительно настроил Failover по вики https://wiki.mikrotik.com/wiki/Advanced ... _Scripting
Дополнительно создал в Mangle правило, что бы веб трафик шел через второго провайдера (там анлим)
Все работает, все хорошо, на сколько мог потестить, отключая попеременно интерфейсы ether1-isp1 и ether2-isp2.
Далее, создаю два GRE over IPSec туннеля между офисам:
GRE1: ПровайдерА - ПровайдерА
GRE2: ПровайдерБ - ПровайдерВ
Смысл такой, что первый туннель на одном провайдере, трафик в этом случае не считает, скорость высокая, пинг минимальный, канал по оптике - он должен быть основным!
Второй туннель выдает не очень хорошие показатели, по этому он должен работать в случае падения ПровайдерА
Создал Address Lists из перечня IP-адресов (isp-networks-gre1) всех трех провайдеров, используя этот лист, создал в начале Mangle правила:
То есть, трафик между провайдерами по указанным протоколам будет принят без маркировки (ну я так понял... я пока в стадии изучения и подобную схему делаю первый раз)
Далее я создал в IP Routes Rules правила:
Соответственно маршруты (пример из первого офиса):
Опять погонял проверкой, отключал интерфейсы на которых висят провайдеры, туннели на этих провайдеров падали, связь между офисами переходит на второй тунель.
Включаю обратно - туннель восстанавливается. Вроде все нормально, но:
(удалил из списка коннектов лишнее...)
Откуда и почему берутся коннекты #2 и #5, это соединения ПровайдерА - ПровайдерБ и ПровайдерА - ПровайдерВ которых в принципе не должно быть согласно IP Routes Rules?
Попробую кратенько. Есть два офиса, в каждом два провайдера. Офисы не очень далеко друг от друга, и по этому один провайдера (назовем его ПровайдерА) присутствует в обоих офисах, так же ПровайдерБ в первом и ПровайдерВ во втором.
В обоих офисах настроил балансировку по вики https://wiki.mikrotik.com/wiki/Manual:PCC
Дополнительно настроил Failover по вики https://wiki.mikrotik.com/wiki/Advanced ... _Scripting
Дополнительно создал в Mangle правило, что бы веб трафик шел через второго провайдера (там анлим)
Код: Выделить всё
chain=prerouting action=mark-routing new-routing-mark=to_ISP2 passthrough=no protocol=tcp
dst-address-type=!local connection-mark=no-mark in-interface=ether6-lan1 dst-port=80,443
Далее, создаю два GRE over IPSec туннеля между офисам:
GRE1: ПровайдерА - ПровайдерА
GRE2: ПровайдерБ - ПровайдерВ
Смысл такой, что первый туннель на одном провайдере, трафик в этом случае не считает, скорость высокая, пинг минимальный, канал по оптике - он должен быть основным!
Второй туннель выдает не очень хорошие показатели, по этому он должен работать в случае падения ПровайдерА
Создал Address Lists из перечня IP-адресов (isp-networks-gre1) всех трех провайдеров, используя этот лист, создал в начале Mangle правила:
Код: Выделить всё
chain=prerouting action=accept protocol=udp src-address-list=isp-networks-gre1 dst-address-list=isp-networks-gre1
chain=prerouting action=accept protocol=gre src-address-list=isp-networks-gre1 dst-address-list=isp-networks-gre1
chain=prerouting action=accept protocol=ipsec-esp src-address-list=isp-networks-gre1 dst-address-list=isp-networks-gre1
Далее я создал в IP Routes Rules правила:
Код: Выделить всё
src-address=<IP_ISP1_OFFICE1> dst-address=<IP_ISP1_OFFICE2> action=lookup-only-in-table table=to_GRE1
src-address=<IP_ISP1_OFFICE2> dst-address=<IP_ISP1_OFFICE1> action=lookup-only-in-table table=to_GRE1
src-address=<IP_ISP2_OFFICE1> dst-address=<IP_ISP2_OFFICE2> action=lookup-only-in-table table=to_GRE2
src-address=<IP_ISP2_OFFICE2> dst-address=<IP_ISP2_OFFICE1> action=lookup-only-in-table table=to_GRE2
Код: Выделить всё
dst-address=0.0.0.0/0 pref-src=<IP_ISP1_OFFICE1> gateway=<GW_ISP1_OFFICE1>
gateway-status=<GW_ISP1_OFFICE1> reachable via ether1-isp1 distance=3 scope=30 target-scope=10
routing-mark=to_GRE1
dst-address=0.0.0.0/0 pref-src=<IP_ISP2_OFFICE1> gateway=<GW_ISP2_OFFICE1>
gateway-status=<GW_ISP2_OFFICE1> reachable via ether2-isp2 distance=3 scope=30 target-scope=10
routing-mark=to_GRE2
Включаю обратно - туннель восстанавливается. Вроде все нормально, но:
Код: Выделить всё
[admin@MikroTik] > /ip firewall connection print
# PROTOCOL SRC-ADDRESS DST-ADDRESS
0 SAC gre <IP_ISP1_OFFICE2> <IP_ISP1_OFFICE1>
1 SAC gre <IP_ISP2_OFFICE2> <IP_ISP2_OFFICE1>
2 SAC udp <IP_ISP1_OFFICE2>:500 <IP_ISP2_OFFICE1>:500
3 SAC udp <IP_ISP1_OFFICE2>:500 <IP_ISP1_OFFICE1>:500
4 SAC udp <IP_ISP2_OFFICE2>:500 <IP_ISP2_OFFICE1>:500
5 SAC udp <IP_ISP2_OFFICE2>:500 <IP_ISP1_OFFICE1>:500
6 S C ipsec-esp <IP_ISP2_OFFICE2> <IP_ISP2_OFFICE1>
7 S C ipsec-esp <IP_ISP1_OFFICE2> <IP_ISP1_OFFICE1>
Откуда и почему берутся коннекты #2 и #5, это соединения ПровайдерА - ПровайдерБ и ПровайдерА - ПровайдерВ которых в принципе не должно быть согласно IP Routes Rules?