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

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

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Закрыто
Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

Spiller писал(а):Vlad-2, а в чем отличие списка !LocalNet от LocalNet ?
не понятно это в 3 правиле:
Src-Addr-List: to_ISP1, Dst-Addr-List: !LocalNet

! = это значит отрицание, то есть !LocalNet - понимать как НЕ равное списку ЛокалНет

в 3-ем правиле так это читается так,
что во второй закладке выбираем в SRC-ADDRESS-LIST список to_ISP (его надо сделать)
там же во второй закладке сразу в поле DST-ADDRESS-LIST выбираем список LocalNet и между
полем DST и полем выбора есть кнопка квадратная маленькая - отрицания (туда надо щёлкнуть) и появиться !



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

Спасибо за то, что отвечаете, тяжело с нуля начать изучать логику интерфейса микротика :-):
Адрес может быть сразу в 2 списках
Не забывает также описать NAT (для каждого провайдера)
srcnat out. interface: isp1 action: masquerade ?

Изображение
Почему второй маршрут такого цвета?

Один и тот же адрес может быть сразу в 2х листах?


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

Spiller писал(а):Спасибо за то, что отвечаете, тяжело с нуля начать изучать логику интерфейса микротика :-):

Сложную Вы задачу ставите для себя,как для начинающего, хотя бы 3-6 месяцев бы по-изучали бы интерфейс, попривыкли бы...
сделали бы пару тестовых задач,...но это так, советы....
Spiller писал(а): Адрес может быть сразу в 2 списках

Да, конечно! и даже в 3-4х
Spiller писал(а):srcnat out. interface: isp1 action: masquerade ?

В целом правильно написали, повторюсь: Маскарадинг или НАТ описывается в файрволле, закладка NAT.
Просто если у Вас провайдер по рррое работает, значит НАТ надо сделать через этот рррое, если статика, значит через ether1
Ну и естественно, в будущем (по-началу это не надо), правила НАТ надо иногда делать общие (когда попадают туда почти все клиенты,
а когда нужно правило НАТ сузить, для более корретной работы, имейте это тоже ввиду).
Spiller писал(а):Почему второй маршрут такого цвета?

1) цвет означает что второй маршрут (второй условно) является не активным,запасным.
2) скорректируйте только чуть-чуть для правильности: Третье правило сверху, дистанция должна быть 1, второй провайдер 2, или так скажу..тот провайдер что по дефолту,
должен иметь дистанцию 1, тот что не главный, 2.
Третий провайдер условно будет с дистанцией три....и так далее!
ВНИМАНИЕ: Корректировки ВСЕ справедливы только для маршрутов без Роутинг-Марк, там где РОУТИНГ-Марк пока всё вроде правильно.



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

блин, машина из списка to_ISP1 работает правильно и выходит через нужного провайдера, компьютер из to_ISP2 вообще никуда не выходит...

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

/interface ethernet
set [ find default-name=ether1 ] comment="ISP 1"
set [ find default-name=ether2 ] comment="ISP 2"
set [ find default-name=ether3 ] comment="ISP 3 (traf)"
set [ find default-name=ether5 ] arp=reply-only
set [ find default-name=ether6 ] arp=reply-only
/ip pool
add name=dhcp_pool1 ranges=192.168.55.100-192.168.55.200
add name=dhcp_pool2 ranges=192.168.55.20-192.168.55.30
/ip dhcp-server
add address-pool=dhcp_pool2 disabled=no interface=ether5 name=dhcp1
/dude
set enabled=yes
/interface bridge port
add interface=ether6
add interface=ether5
/ip address
add address=192.168.55.1/24 interface=ether5 network=192.168.55.0
add address=195.96.167.212/29 interface=ether2 network=195.96.167.208
/ip arp
add address=1.1.1.1 comment="\CA\CC \CB\F3\EA" interface=ether6 mac-address=\
    00:01:02:03:04:05
add address=192.168.55.2 comment="\CA\CC \C3\F0\E8\E1\E5\ED\FE\EA\EE\E2 \CC." \
    interface=ether6 mac-address=C4:12:F5:32:F7:53
add address=192.168.55.15 interface=ether5 mac-address=BC:5F:F4:68:F4:0B
/ip cloud
set ddns-enabled=yes
/ip dhcp-client
add default-route-distance=0 dhcp-options=hostname,clientid disabled=no \
    interface=ether1
/ip dhcp-server lease
add address=192.168.55.15 client-id=1:bc:5f:f4:68:f4:b mac-address=\
    BC:5F:F4:68:F4:0B server=dhcp1
/ip dhcp-server network
add address=192.168.55.0/24 dns-server=8.8.8.8 gateway=192.168.55.1
/ip dns
set servers=8.8.8.8
/ip firewall address-list
add address=192.168.55.1-192.168.55.10 list=to_ISP1
add address=192.168.55.11-192.168.55.20 list=to_ISP2
add address=192.168.55.21-192.168.55.100 list=LocalNet
/ip firewall filter
add action=drop chain=input comment="drop ftp brute forcers" dst-port=21 \
    protocol=tcp src-address-list=ftp_blacklist
add action=accept chain=output content="530 Login incorrect" dst-limit=\
    1/1m,9,dst-address/1m protocol=tcp
add action=add-dst-to-address-list address-list=ftp_blacklist \
    address-list-timeout=3h chain=output content="530 Login incorrect" \
    protocol=tcp
add action=drop chain=input comment="drop ssh brute forcers" dst-port=22 \
    protocol=tcp src-address-list=ssh_blacklist
add action=add-src-to-address-list address-list=ssh_blacklist \
    address-list-timeout=1w3d chain=input connection-state=new dst-port=22 \
    protocol=tcp src-address-list=ssh_stage3
add action=add-src-to-address-list address-list=ssh_stage3 \
    address-list-timeout=1m chain=input connection-state=new dst-port=22 \
    protocol=tcp src-address-list=ssh_stage2
add action=add-src-to-address-list address-list=ssh_stage2 \
    address-list-timeout=1m chain=input connection-state=new dst-port=22 \
    protocol=tcp src-address-list=ssh_stage1
add action=add-src-to-address-list address-list=ssh_stage1 \
    address-list-timeout=1m chain=input connection-state=new dst-port=22 \
    protocol=tcp
add action=drop chain=forward comment="drop ssh brute downstream" dst-port=22 \
    protocol=tcp src-address-list=ssh_blacklist
/ip firewall mangle
add action=mark-connection chain=input in-interface=ether1 new-connection-mark=\
    isp1_in passthrough=yes
add action=mark-connection chain=input in-interface=ether2 new-connection-mark=\
    isp2_in passthrough=yes
add action=mark-connection chain=forward in-interface=ether1 \
    new-connection-mark=isp1_for passthrough=yes
add action=mark-routing chain=prerouting connection-mark=isp1_for \
    new-routing-mark=isp1_rout passthrough=yes src-address-list=LocalNet
add action=mark-connection chain=forward in-interface=ether2 \
    new-connection-mark=isp2_for passthrough=yes
add action=mark-routing chain=prerouting connection-mark=isp2_for \
    new-routing-mark=isp2_rout passthrough=yes src-address-list=LocalNet
add action=mark-routing chain=prerouting connection-mark=no-mark \
    dst-address-list=!LocalNet new-routing-mark=isp1_rout passthrough=yes \
    src-address-list=to_ISP1
add action=mark-routing chain=prerouting connection-mark=no-mark \
    dst-address-list=!LocalNet new-routing-mark=isp2_rout passthrough=yes \
    src-address-list=to_ISP2
add action=mark-routing chain=output connection-mark=isp1_in new-routing-mark=\
    isp1_rout passthrough=yes
add action=mark-routing chain=output connection-mark=isp2_in new-routing-mark=\
    isp2_rout passthrough=yes
/ip firewall nat
add action=dst-nat chain=dstnat dst-address=192.168.10.88 dst-port=3389 \
    protocol=tcp to-addresses=192.168.55.21
add action=masquerade chain=srcnat out-interface=ether1
add action=masquerade chain=srcnat out-interface=ether2
/ip route
add check-gateway=ping distance=1 gateway=192.168.0.1 routing-mark=isp1_rout
add check-gateway=ping distance=1 gateway=195.96.167.209 routing-mark=isp2_rout
add check-gateway=ping distance=1 gateway=192.168.0.1
add distance=2 gateway=195.96.167.209
/ip service
set telnet disabled=yes
set ftp disabled=yes
set www disabled=yes
set ssh disabled=yes
set api disabled=yes
set api-ssl disabled=yes
/lcd
set time-interval=hour
/system clock
set time-zone-name=Europe/Moscow


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

Spiller писал(а):блин, машина из списка to_ISP1 работает правильно и выходит через нужного провайдера, компьютер из to_ISP2 вообще никуда не выходит...

будем исходить что провайдер1 у вас по умолчанию, поэтому машину первую в первый список и не добавляйте, тогда сработает по умолчанию шлюз и она итак должна уйти по каналу провайдера1.
Spiller писал(а):passthrough=yes

А я разве говорил что надо эту опцию активизировать? С ней очень надо аккуратно!
Отключите пока её везде этот - "passthrough"

Ну и ещё совет, всякие блэклисты лучше в закладке Фильтрс в файрволле отключить(временно).
Сначала делается логика, получаем работающий сервис(ы) и отстроенную работу роутера в целом,
потом уже делаем защиту, ограничения и "косметику", периодически это "помешивая" бэкапами конфигов про запас.



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

Убрал passthrough везде, убрал arp=reply-only на локальном интерфейсе, убрал фильтры... ситуация не изменилась.
я если честно с машины to_ISP2 даже сам микротик пингонуть не могу... хотя может так оно и надо.

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

/interface ethernet
set [ find default-name=ether1 ] comment="ISP 1"
set [ find default-name=ether2 ] comment="ISP 2"
set [ find default-name=ether3 ] comment="ISP 3 (traf)"
set [ find default-name=ether6 ] arp=reply-only
/ip pool
add name=dhcp_pool1 ranges=192.168.55.100-192.168.55.200
add name=dhcp_pool2 ranges=192.168.55.20-192.168.55.30
/ip dhcp-server
add address-pool=dhcp_pool2 disabled=no interface=ether5 name=dhcp1
/dude
set enabled=yes
/interface bridge port
add interface=ether6
add interface=ether5
/ip address
add address=192.168.55.1/24 interface=ether5 network=192.168.55.0
add address=195.96.167.212/29 interface=ether2 network=195.96.167.208
/ip cloud
set ddns-enabled=yes
/ip dhcp-client
add default-route-distance=0 dhcp-options=hostname,clientid disabled=no interface=ether1
/ip dhcp-server lease
add address=192.168.55.15 client-id=1:bc:5f:f4:68:f4:b mac-address=BC:5F:F4:68:F4:0B server=dhcp1
/ip dhcp-server network
add address=192.168.55.0/24 dns-server=8.8.8.8 gateway=192.168.55.1
/ip dns
set servers=8.8.8.8
/ip firewall address-list
add address=192.168.55.1-192.168.55.10 list=to_ISP1
add address=192.168.55.11-192.168.55.20 list=to_ISP2
add address=192.168.55.21-192.168.55.100 list=LocalNet
/ip firewall mangle
add action=mark-connection chain=input in-interface=ether1 new-connection-mark=isp1_in passthrough=no
add action=mark-connection chain=input in-interface=ether2 new-connection-mark=isp2_in passthrough=no
add action=mark-connection chain=forward in-interface=ether1 new-connection-mark=isp1_for passthrough=no
add action=mark-routing chain=prerouting connection-mark=isp1_for new-routing-mark=isp1_rout passthrough=no src-address-list=LocalNet
add action=mark-connection chain=forward in-interface=ether2 new-connection-mark=isp2_for passthrough=no
add action=mark-routing chain=prerouting connection-mark=isp2_for new-routing-mark=isp2_rout passthrough=no src-address-list=LocalNet
add action=mark-routing chain=prerouting connection-mark=no-mark dst-address-list=!LocalNet new-routing-mark=isp1_rout passthrough=no src-address-list=to_ISP1
add action=mark-routing chain=prerouting connection-mark=no-mark dst-address-list=!LocalNet new-routing-mark=isp2_rout passthrough=no src-address-list=to_ISP2
add action=mark-routing chain=output connection-mark=isp1_in new-routing-mark=isp1_rout passthrough=no
add action=mark-routing chain=output connection-mark=isp2_in new-routing-mark=isp2_rout passthrough=no
/ip firewall nat
add action=dst-nat chain=dstnat dst-address=192.168.10.88 dst-port=3389 protocol=tcp to-addresses=192.168.55.21
add action=masquerade chain=srcnat out-interface=ether1
add action=masquerade chain=srcnat out-interface=ether2
/ip route
add check-gateway=ping distance=1 gateway=192.168.0.1 routing-mark=isp1_rout
add check-gateway=ping distance=1 gateway=195.96.167.209 routing-mark=isp2_rout
add check-gateway=ping distance=1 gateway=192.168.0.1
add distance=2 gateway=195.96.167.209
/ip service
set telnet disabled=yes
set ftp disabled=yes
set www disabled=yes
set ssh disabled=yes
set api disabled=yes
set api-ssl disabled=yes
/lcd
set time-interval=hour
/system clock
set time-zone-name=Europe/Moscow


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

Spiller писал(а):Убрал passthrough везде, убрал arp=reply-only на локальном интерфейсе, убрал фильтры... ситуация не изменилась.
я если честно с машины to_ISP2 даже сам микротик пингонуть не могу... хотя может так оно и надо.


1) машина должна пинговаться
2) в список локалнет должно входить вся сетка локальная или все сети локальные
3) на счёт арп-репли - я не трогал этот параметр..так что верните как было

и небольшой пример из моего конфига (вынудили меня всё же :-) (описание правил Мангл от начала и до конца моего только 3-его провайдера) - проверьте по логике с вашими записями!(но тупо не копируйте)!!!

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

1)add action=mark-connection chain=input comment=ISP3-in in-interface="pppoe-out1-SKTV1(Link-via-id811)" new-connection-mark=ISP3_in passthrough=no

2.1)add action=mark-connection chain=forward in-interface="pppoe-out1-SKTV1(Link-via-id811)" new-connection-mark=ISP3_for passthrough=no
2.2)add action=mark-routing chain=prerouting connection-mark=ISP3_for new-routing-mark=ISP3_rout passthrough=no src-address-list=LocalNet

3) add action=mark-routing chain=prerouting comment="GO-to-ISP3 (via AddrList)" connection-mark=no-mark dst-address-list=!LocalNet new-routing-mark=ISP3_rout passthrough=no src-address-list=to_ISP3

4) add action=mark-routing chain=output connection-mark=ISP3_in new-routing-mark=ISP3_rout passthrough=no



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

Vlad-2, не поверите :-):
Отключил "mark routing (PREROUTING), connection mark - isp1_for Src-Addr-List: LocalNet, new-routing mark: isp1_rout" и всё заработало :nez-nayu:
А с этим правилом даже на микротик зайти не мог по ип, и с машины локальной микротик не пинговался


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

Spiller писал(а):Vlad-2, не поверите :-):
Отключил "mark routing (PREROUTING), connection mark - isp1_for Src-Addr-List: LocalNet, new-routing mark: isp1_rout" и всё заработало :nez-nayu:
А с этим правилом даже на микротик зайти не мог по ип, и с машины локальной микротик не пинговался

Вы правы, не поверю!
В любом случаи Вы соберите весь "конструктор", то есть соберите всю логику воедино,
с двумя провайдерами, и проверяйте,

Примерно Вы должны получить такое:
а) что комп(ы) могут работать в сети (IP-адресация должна быть описано в списке LocalNet)
б) что БЕЗ добавления IP-компа в любой список "to_ISPN" - компьютер "уходит" по дефолтному(текущему) каналу (с дистанцией 1 обычно)
в) что БЕЗ добавления IP-компа в любой список "to_ISPN", но при пинговании/заходе на узлы и сети второго провайдера, они доступны через маршрут второго провайдера (через "синие" маршруты)
г) что ПРИ добавлении IP-компа в любой из списков "to_ISPN" - компьютер уходит только по этому каналу, не смотря ни на что, даже на сети других провайдеров будет идти только через "привязанного" провайдера.

Не забудьте отписаться, что получилось и ещё лучше потом сделать экспорт Мангл, и Таблицы Маршрутизации для других форумчан.



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

Spiller писал(а):/ip firewall address-list
add address=192.168.55.1-192.168.55.10 list=to_ISP1
add address=192.168.55.11-192.168.55.20 list=to_ISP2
add address=192.168.55.21-192.168.55.100 list=LocalNet

Я же иногда даже повторяюсь, в список LocalNet должны быть описаны все сети локальные,
а Вы что сделали? описали с 21 айпи, зато в первого провайдера начинаете с адреса 55.1
Как логика будет работать, когда глобальная переменная для него начинается с 21 адреса по 100 ?

В LocalNet опишите сеть, 192.168.55.0/24 и всё
а уже в ISP1 добавте скажем 192.168.55.1
и сев за компьютер с адресом 55.1 проверяйте трассертом куда ушли?

Зачем всё усложнять? и делать наполовину!

Spiller писал(а):/ip dhcp-server
add address-pool=dhcp_pool2 disabled=no interface=ether5 name=dhcp1

И вот ещё, у Вас в конфиге, пул адресов номер 2 привязан к DHCP серверу 1 ????
Вы сами не путаетесь то? :sh_ok:



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