Несколько ISP и туннели.

Обсуждение ПО и его настройки
u3max
Сообщения: 26
Зарегистрирован: 10 дек 2014, 07:58

vqd писал(а): 23 янв 2019, 04:19
u3max писал(а): 22 янв 2019, 11:49
Направьте или ткните? :)
Спасибо!
оу, классная задача. Прямо одна из любимых ибо прямо пришлось потратить пару часов времени. Когда я столкнулся с той же ситуацией (на ГРЕ правда) я не мог понять че не так то, че оно как то странно работает а т.к. это все же был заказ то клиента подвести нельзя.

В общем направляю

Лучше всего эту проблему разбирать на ГРЕ, оно там удобнее, потом полученный опыт на ипсек перенесете. В общем поднимайте гре (парочку) и смотрите ip - firewall - connections Весьма занятная картина но если в нее вникнуть то появляется а голове и решение данной проблемы

PS: ну и не забываем отключить fasttrack connections
Спасибо за подсказку ;)
С балансировкой лучше не связываться? Рекомендуете использовать резервирование с разным distance по разным ISP?


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

u3max писал(а): 23 янв 2019, 06:05
Спасибо за подсказку ;)
С балансировкой лучше не связываться? Рекомендуете использовать резервирование с разным distance по разным ISP?
Балансировка и проблема с тоннелями - это прямо совсем разные вещи и они практически не пересекаются

Балансировка нормально работает на микротик, есть проблемы с защищенными ресурсами типа банк клиенты но это PCC решается довольно быстро ну и не забываем про скрипты которые мониторят каналы


Есть интересная задача и бюджет? http://mikrotik.site
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Vlad-2 писал(а): 23 янв 2019, 05:54 прошу показать, провести мастер-класс и научить... :smu:sche_nie: :a_g_a:
Я часов в 10 - 11 по МСК вернусь и скидаю стенд. Сейчас допиваю кофе и уеду


Есть интересная задача и бюджет? http://mikrotik.site
Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

vqd писал(а): 23 янв 2019, 06:21 Я часов в 10 - 11 по МСК вернусь и скидаю стенд. Сейчас допиваю кофе и уеду
Спасибо, буду ждать, но сегодня я наверно слегка задержусь,
буду не раньше 12 по МСКе, а то и после...
Так что можно не спешить....



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Такс ну начнем. Имеем следующий стенд собранный на MetaROUTER
MR1 имеет 2х операторов
MR2 имеет одного оператора

Задача поднять 2 GRE тоннеля

Изображение

т.к. GRE это тоннель типа точка-точка то обе железки шлют друг другу пакетики и соответсвено для начала нам надо понять с какова оператора пришел пакет на MR1 размечаем трафик

Конфиг MR1 (исходный)
 
/interface ethernet
set [ find ] name=ether1_isp1
set [ find ] name=ether2_isp2
set [ find ] name=ether3
/interface gre
add allow-fast-path=no clamp-tcp-mss=no local-address=10.0.0.2 name=gre-mr2-isp1 remote-address=10.0.2.2
add allow-fast-path=no clamp-tcp-mss=no local-address=10.0.1.2 name=gre-mr2-isp2 remote-address=10.0.2.2
/interface list
add name=wan
/interface list member
add interface=ether1_isp1 list=wan
add interface=ether2_isp2 list=wan
/ip address
add address=10.0.0.2/30 interface=ether1_isp1 network=10.0.0.0
add address=10.0.1.2/30 interface=ether2_isp2 network=10.0.1.0
/ip firewall mangle
add action=mark-connection chain=input in-interface=ether1_isp1 new-connection-mark=in_isp1 passthrough=yes
add action=mark-routing chain=output connection-mark=in_isp1 new-routing-mark=isp1_route passthrough=yes
add action=mark-connection chain=input in-interface=ether2_isp2 new-connection-mark=in_isp2 passthrough=yes
add action=mark-routing chain=output connection-mark=in_isp2 new-routing-mark=isp2_route passthrough=yes
/ip firewall nat
add action=masquerade chain=srcnat out-interface-list=wan
/ip route
add distance=1 gateway=10.0.0.1 routing-mark=isp1_route
add distance=1 gateway=10.0.1.1 routing-mark=isp2_route
add distance=1 gateway=10.0.0.1
/ip route rule
add action=lookup-only-in-table routing-mark=isp1_route table=isp1_route
add action=lookup-only-in-table routing-mark=isp2_route table=isp2_route
/system identity
set name=mr1
На MR2 один оператор и потому ничего там размечать не надо пусть работает как есть

Конфиг MR2
 
/interface ethernet
set [ find ] name=ether1_isp
set [ find ] name=ether2
/interface gre
add allow-fast-path=no clamp-tcp-mss=no local-address=10.0.2.2 name=gre-mr1-isp1 remote-address=10.0.0.2
add allow-fast-path=no clamp-tcp-mss=no local-address=10.0.2.2 name=gre-mr1-isp2 remote-address=10.0.1.2
/ip address
add address=10.0.2.2/30 interface=ether1_isp network=10.0.2.0
/ip cloud
set update-time=no
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1_isp
/ip route
add distance=1 gateway=10.0.2.1
/system identity
set name=mr2
Роутер по середине просто роутер и все, ничего там нет, типа глобальный роутер всея Интернет

Сходу запускаем с двух сторон GRE и видим жесть. Видим, что тоннели как то неправильно поднялись. Данная картина может меняться как ей угодно и в зависимости от того как вы настроили резервирование и как разметили трафик. В общем хаос.
[admin@mr2] > /interface gre print
Flags: X - disabled, R - running
0 R name="gre-mr1-isp1" mtu=auto actual-mtu=1476 local-address=10.0.2.2
remote-address=10.0.0.2 keepalive=10s,10 dscp=inherit clamp-tcp-mss=no
dont-fragment=no allow-fast-path=no

1 name="gre-mr1-isp2" mtu=auto actual-mtu=1476 local-address=10.0.2.2
remote-address=10.0.1.2 keepalive=10s,10 dscp=inherit clamp-tcp-mss=no
dont-fragment=no allow-fast-path=no

[admin@mr1] > /interface gre print
Flags: X - disabled, R - running
0 name="gre-mr2-isp1" mtu=auto actual-mtu=1476 local-address=10.0.0.2
remote-address=10.0.2.2 keepalive=10s,10 dscp=inherit clamp-tcp-mss=no
dont-fragment=no allow-fast-path=no

1 R name="gre-mr2-isp2" mtu=auto actual-mtu=1476 local-address=10.0.1.2
remote-address=10.0.2.2 keepalive=10s,10 dscp=inherit clamp-tcp-mss=no
dont-fragment=no allow-fast-path=no
А в логе можно увидеть еще более интересную картину
01:00:30 firewall,info output: in:(unknown 0) out:ether1_isp1, proto 47, 10.0.1.2->10.0.2.2, NAT (10.0.1.2->10.0.0.2)->10.0.2.2, len 48
Вроде начинает прояснятся. Микротик отправляет GRE запрос который должен идти через ISP2 отправляет через основной маршрут и в результате каша. Обратимся к схемке

Изображение

И что видим, оказывается пакет сначала попадает в mangle output потом фильтры и потом пошла в маршрутизацию в Мир, собственно при нашем конфиге понятно по какой причине пакет c MR1 на MR2 для второго тоннеля ушел через ISP1 надо заставить его уйти через ISP2 т.к. микротик сам по себе не понимает че с ним делать и пихает в main таблицу

Заставляем:
/ip firewall mangle
add action=mark-routing chain=output new-routing-mark=isp1_route passthrough=yes src-address=10.0.0.2
add action=mark-routing chain=output new-routing-mark=isp2_route passthrough=yes src-address=10.0.1.2
И т.к. я MetaROUTER использую то оно все маленько лагает и вынужден отправить все в перезагрузку что бы сбросились все соединения, в нормальной ситуации их достаточно сбросить в connections

Далее запускаем тоннели и радуемся жизни и в логах порядок. Правда есть еще один подводный камень. В случае если вы используете несколько таблиц маршрутизации то в момент когда все маршруты в ней отвалились, микротик начинает пихать соединения в main таблицу и GRE у вас упадет (к стати это основа для нормального резервирования и агрегации, но это отдельная песня), поэтому обращаем внимание на ip – route - rules

как то так :nez-nayu:


Есть интересная задача и бюджет? http://mikrotik.site
Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

Пока очень очень огромное СПАСИБО.
У меня вечер, я буду переваривать, может чтобы не испортить, на выходные по-тестирую или в ближайшее время.

Я понимал и знал что надо метить на выходе, но мне страшно было маркировать исходящий трафик роутера,
боялся я зацикливания...тем более я не для всех каналов использую ip route rule (хитрю местами).

(мысли)
А можно явно ТОЛЬКО gre протокол так сделать(пометить) при выходе ?
Чтобы правильно именно туннели заработали, по идеи да....остальной трафик пусть работает как сейчас....

СПАСИБО, но предлагаю тему пока не закрывать.
Мож и у коллег или у меня апосля будут мелкие вопросы.

P.S.
Ещё и на метаРоутере -- сделали..... :bra_vo: :bra_vo:



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
u3max
Сообщения: 26
Зарегистрирован: 10 дек 2014, 07:58

Я сам настроил, только сейчас Ваш труд увидел. Но, спасибо, как говорится, потомки скажут :)


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

u3max писал(а): 23 янв 2019, 13:10 Я сам настроил, только сейчас Ваш труд увидел. Но, спасибо, как говорится, потомки скажут :)
Вы же просили направления только, я указал, а дальше все просто


Есть интересная задача и бюджет? http://mikrotik.site
u3max
Сообщения: 26
Зарегистрирован: 10 дек 2014, 07:58

vqd писал(а): 23 янв 2019, 13:21
u3max писал(а): 23 янв 2019, 13:10 Я сам настроил, только сейчас Ваш труд увидел. Но, спасибо, как говорится, потомки скажут :)
Вы же просили направления только, я указал, а дальше все просто
Да, когда туннели рандомом начали устанавливаться (буква R появлялась там, где не должна была быть), я понял что маркировать надо. Обожаю микротик :-):

Можете подсказать, Вы написали:
/ip route rule
add action=lookup-only-in-table routing-mark=isp1_route table=isp1_route
add action=lookup-only-in-table routing-mark=isp2_route table=isp2_route

Я никак не могу понять эту конструкцию. Я без неё сделал, через prerouting. Чую что так не совсем правильно...
И ещё, если в свойствах GRE указываем IPSEC secret, то это и есть шифрование? Ничего ДОшифровывать больше не надо?
И как, всё-таки, поступить с балансировкой?

Спасибо.


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

u3max писал(а): 23 янв 2019, 13:27 Можете подсказать, Вы написали:
Этими правилами вы говорите микротику что бы для routing-mark=isp1_route все шло ТОЛЬКО через table=isp1_route и даже если эта таблица станет неактивна то в main он не перейдет.

В разрезе данного случая пригодится когда 1 канал отвалится и тоннель упадет, а не будет пытаться через main соединиться вызывая выше описанный хаос

В GRE когда поставили галчку IPSec он сам создал пир и полиси в ip - ipsec Так что да это можно назвать шифрованием

по балансировке не понял вопроса.


Есть интересная задача и бюджет? http://mikrotik.site
Ответить