Перейти к содержимому
Калькуляторы

Mikrotik не могу нормально настроить 3 провайдера с балансировкой

Добрый день.

Не могу никак побороть проблему работы 3х провайдеров одновременно.

Имеем, 3 канала (30/90/500) Mbit/s от разных провайдеров.

Статические белые IP, роутер Mikrotik CCR1009

 

До появления 500Mbit/s всё работало и было настроено ECMP load balancing with masquerade. https://wiki.mikrotik.com/wiki/ECMP_loa ... masquerade

А именно Промаркированы input и output для 2х провайдеров.

Исходя из инструкции WIKI, для каждого канала для своего routing_mark и общий, где я казала 1:3 шлюзы что бы распаралелить нагрузку. / ip route add dst-address=0.0.0.0/0 gateway=1.1.1.1,1.1.1.1,1.1.1.1,2.2.2.2 check-gateway=ping

 

Добавляю 3й провайдер, прописываю аналогично 2м в Mangle правила, добавляю маршрут с маркировкой. Всё работает, но если добавить в эту конструкцию шлюз 500Mbit/s / ip route add dst-address=0.0.0.0/0 gateway=1.1.1.1,1.1.1.1,2.2.2.2,3.3.3.3,3.3.3.3,3.3.3.3,3.3.3.3 check-gateway=ping тоже всё работает, исходящие соеденения паралелятся по разным маршрутам, но вот все внутренние ресурсы сети (сайты, приложения, сервисы) перестают быть доступны из мира. Подскажите куда копать?

 

p.s пробывал настраивать роутер https://wiki.mikrotik.com/wiki/Manual:PCC

то же самое, всё работает, но доступ из мира на внутренние ресурсы, или очень долго заходит или не заходит вовсе.

 

пример проброса портов у меня

;;; ftp

chain=dstnat action=dst-nat to-addresses=192.168.101.85 to-ports=21 protocol=tcp dst-address=!192.168.101.0/24

dst-address-type=local dst-port=21 log=no log-prefix=""

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

sensor, у Вас, скорее всего, перемаркировываются маршруты. Посмотрите в "connections".

Маркировку делать надо по соединениям, для новых еще не маркированых соединений - критерий "connection state = new" и "connection mark = no-mark". Затем маркировать маршруты для пакетов принадлежащие этим соединениям.

Промаркированы input и output для 2х провайдеров

Если у вас внутренние ресурсы проброшены через NAT (проброшены порты), то маркировать нужно не input и output, а prerouting и output. Prerouting для входящих извне.

Изменено пользователем nkusnetsov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот мой MANGLE я делал всё по вики или инструкциям в сети.

 

0 chain=input action=mark-connection new-connection-mark=gic_conn passthrough=yes in-interface=gic log=no log-prefix=">

 

1 chain=input action=mark-connection new-connection-mark=datagroup_conn passthrough=yes in-interface=datagroup log=no

log-prefix=""

 

2 chain=input action=mark-connection new-connection-mark=triolan_conn passthrough=yes in-interface=triolan log=no

log-prefix=""

 

3 chain=output action=mark-routing new-routing-mark=to_gic passthrough=yes connection-mark=gic_conn log=no

log-prefix=""

 

4 chain=output action=mark-routing new-routing-mark=to_datagroup passthrough=yes connection-mark=datagroup_conn log=no

log-prefix=""

 

5 chain=output action=mark-routing new-routing-mark=to_triolan passthrough=yes connection-mark=triolan_conn log=no

log-prefix=""

 

6 chain=prerouting action=accept dst-address=1.1.1.0/23 in-interface=NLT_BRIDGE log=no log-prefix=""

 

7 chain=prerouting action=accept dst-address=2.2.2.2/30 in-interface=NLT_BRIDGE log=no log-prefix=""

 

8 chain=prerouting action=accept dst-address=3.3.3.3/24 in-interface=NLT_BRIDGE log=no log-prefix=""

 

9 chain=prerouting action=accept dst-address=192.168.101.0/24 in-interface=NLT_BRIDGE log=no log-prefix=""

 

10 chain=prerouting action=mark-connection new-connection-mark=datagroup_conn passthrough=yes dst-address-type=!local

in-interface=NLT_BRIDGE per-connection-classifier=both-addresses-and-ports:7/0 log=no log-prefix=""

 

11 chain=prerouting action=mark-connection new-connection-mark=gic_conn passthrough=yes dst-address-type=!local

in-interface=NLT_BRIDGE per-connection-classifier=both-addresses-and-ports:7/1 log=no log-prefix=""

 

12 chain=prerouting action=mark-connection new-connection-mark=gic_conn passthrough=yes dst-address-type=!local

in-interface=NLT_BRIDGE per-connection-classifier=both-addresses-and-ports:7/2 log=no log-prefix=""

 

13 chain=prerouting action=mark-connection new-connection-mark=triolan_conn passthrough=yes dst-address-type=!local

in-interface=NLT_BRIDGE per-connection-classifier=both-addresses-and-ports:7/3 log=no log-prefix=""

 

14 chain=prerouting action=mark-connection new-connection-mark=triolan_conn passthrough=yes dst-address-type=!local

in-interface=NLT_BRIDGE per-connection-classifier=both-addresses-and-ports:7/4 log=no log-prefix=""

 

15 chain=prerouting action=mark-connection new-connection-mark=triolan_conn passthrough=yes dst-address-type=!local

in-interface=NLT_BRIDGE per-connection-classifier=both-addresses-and-ports:7/5 log=no log-prefix=""

 

16 chain=prerouting action=mark-connection new-connection-mark=triolan_conn passthrough=yes dst-address-type=!local

in-interface=NLT_BRIDGE per-connection-classifier=both-addresses-and-ports:7/6 log=no log-prefix=""

 

17 chain=prerouting action=mark-routing new-routing-mark=to_gic passthrough=yes connection-mark=gic_conn

in-interface=NLT_BRIDGE log=no log-prefix=""

 

18 chain=prerouting action=mark-routing new-routing-mark=to_datagroup passthrough=yes connection-mark=datagroup_conn

in-interface=NLT_BRIDGE log=no log-prefix=""

 

19 chain=prerouting action=mark-routing new-routing-mark=to_triolan passthrough=yes connection-mark=triolan_conn

in-interface=NLT_BRIDGE log=no log-prefix=""

 

 

РОУТЫ Я прописал так

/ip routeA

add dst-address=0.0.0.0/0 gateway=1.1.1.1 routing-mark=to_gic check-gateway=ping

add dst-address=0.0.0.0/0 gateway=2.2.2.2 routing-mark=to_datagroup check-gateway=ping

add dst-address=0.0.0.0/0 gateway=3.3.3.3 routing-mark=to_triolan check-gateway=ping

 

add dst-address=0.0.0.0/0 gateway=1.1.1.1 distance=1 check-gateway=ping

add dst-address=0.0.0.0/0 gateway=2.2.2.2 distance=2 check-gateway=ping

add dst-address=0.0.0.0/0 gateway=3.3.3.3 distance=3 check-gateway=ping

 

на этих настройках у меня всё работае, но доступ из мира к локальным ресурсам проимходит очень долго, к примеру сайт может открыватся 15 секунд.

Изменено пользователем sensor

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

sensor, покажите NAT (srcnat+dstnat) тоже пожалуйста.

А если добавите forward - будет вообще замечательно.

Изменено пользователем nkusnetsov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

0 ;;; NAT

chain=srcnat action=masquerade src-address=192.168.101.0/24 log=no

log-prefix=""

 

1 ;;; mai

chain=dstnat action=dst-nat to-addresses=192.168.101.24 protocol=tcp

dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=25,111,143,587 log=no log-prefix=""

 

2 ;;; ftp

chain=dstnat action=dst-nat to-addresses=192.168.101.85 to-ports=21

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=21 log=no log-prefix=""

 

3 chain=dstnat action=dst-nat to-addresses=192.168.101.85

to-ports=45450-45500 protocol=tcp dst-address=!192.168.101.0/24

dst-address-type=local dst-port=45450-45500 log=no log-prefix=""

 

4 ;;; http/https

chain=dstnat action=dst-nat to-addresses=192.168.101.29 to-ports=80

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=80 log=no log-prefix=""

 

5 chain=dstnat action=dst-nat to-addresses=192.168.101.29 to-ports=443

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=443 log=no log-prefix=""

 

6 ;;; redmine_old

chain=dstnat action=dst-nat to-addresses=192.168.101.113 to-ports=80

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=12000 log=no log-prefix=""

 

7 XI chain=dstnat action=dst-nat to-addresses=192.168.101.113 to-ports=80

protocol=tcp dst-address-type=local dst-port=12000 log=no log-prefix=""

 

8 ;;; IIS_for_VOVA

chain=dstnat action=dst-nat to-addresses=192.168.101.29 to-ports=8890

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=8890 log=no log-prefix=""

 

9 ;;; NIK_UBUNTU_SERVER

chain=dstnat action=dst-nat to-addresses=192.168.101.140 to-ports=80

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=9000 log=no log-prefix=""

 

10 ;;; RTMP

chain=dstnat action=dst-nat to-addresses=192.168.101.244 to-ports=80

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=8899 log=no log-prefix=""

 

11 chain=dstnat action=dst-nat to-addresses=192.168.101.154 to-ports=80

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=7999 log=no log-prefix=""

 

12 ;;; Andrey_Kursenko_project

chain=dstnat action=dst-nat to-addresses=192.168.101.20 to-ports=8080

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=8080 log=no log-prefix=""

 

13 chain=dstnat action=dst-nat to-addresses=192.168.101.20 to-ports=8888

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=8888 log=no log-prefix=""

 

14 ;;; redmine_new

chain=dstnat action=dst-nat to-addresses=192.168.101.178 to-ports=80

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=13000 log=no log-prefix=""

 

15 XI chain=dstnat action=dst-nat to-addresses=192.168.101.178 to-ports=80

protocol=tcp dst-address-type=local dst-port=13000 log=no log-prefix=""

 

16 ;;; iBroker

chain=dstnat action=dst-nat to-addresses=192.168.101.221 to-ports=80

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=14000 log=no log-prefix=""

 

17 chain=dstnat action=dst-nat to-addresses=192.168.101.221 to-ports=80

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=16000 log=no log-prefix=""

 

18 ;;; tfb

chain=dstnat action=dst-nat to-addresses=192.168.101.184 to-ports=80

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=20000 log=no log-prefix=""

 

19 chain=dstnat action=dst-nat to-addresses=192.168.101.184 to-ports=443

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=20001 log=no log-prefix=""

 

20 ;;; FTP_EM

chain=dstnat action=dst-nat to-addresses=192.168.101.29 to-ports=7000

protocol=tcp dst-address=!192.168.101.0/24 dst-address-type=local

dst-port=7000 log=no log-prefix=""

 

21 ;;; RUST_SERVER

chain=dstnat action=dst-nat to-addresses=192.168.101.15 protocol=tcp

dst-address=!192.168.101.0/24 dst-address-type=local dst-port=28025

log=no log-prefix=""

 

22 chain=dstnat action=dst-nat to-addresses=192.168.101.15 protocol=udp

dst-address=!192.168.101.0/24 dst-address-type=local dst-port=28025

log=no log-prefix=""

 

23 chain=dstnat action=dst-nat to-addresses=192.168.101.15 protocol=tcp

dst-address=!192.168.101.0/24 dst-address-type=local dst-port=28026

log=no log-prefix=""

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

sensor, у Вас лишний раз перемаркировываются соединения. Например, пришедшее извне через интерфейс GIC соединение, помеченное на входе получит маркировку "gic_conn". Ответный пакет из локалки попадет в mangle, и правила с 10по16 перемаркируют уже имеющееся соединение, новой меткой.

Изменено пользователем nkusnetsov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В написании я руководствовался офф. WIKI https://wiki.mikrotik.com/wiki/Manual:PCC

Мне нравиться вариант, который написан https://habrahabr.ru/post/313342/

но я пока не понимаю как в это действие, вложить балансировку по каналам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

sensor, балансировать вы можете только соединения инициированные из локалки, либо инициированные самим роутером. Соединения пришедшие извне должны быть обработаны тем интерфейсом, на который они пришли.

Поскольку у вас балансировка per-connection, то можно её сделать и через ECMP. Оно тоже per-connection. WiKi. Достаточно в ECMP маршруте указать один провайдерский gateway один раз, а более производительный несколько раз - пропорционально пропускной способности.

Еще одна хорошая статья на хабре. Там есть про обработку входящих.

 

sensor, попробуйте модифицировать правила mangle 10-16 примерно так:

10 chain=prerouting action=mark-connection connection-mark=no-mark new-connection-mark=datagroup_conn passthrough=yes dst-address-type=!local

in-interface=NLT_BRIDGE per-connection-classifier=both-addresses-and-ports:7/0 log=no log-prefix=""

Изменено пользователем nkusnetsov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Финалочка, я конечно опираясь на разные статьй немного не так всё делал.

Спасибо за помошь всем кто откликнулся.

 

Может будет интересно, вот финальный результат маркировок.

Всё проверил, из мира доступ ко всем ресурсам есть, PPTP и L2TP работают.

 

/ip firewall mangle

add action=accept chain=prerouting dst-address=1.1.1.0/23 in-interface=NLT_BRIDGE

add action=accept chain=prerouting dst-address=2.2.2.0/30 in-interface=NLT_BRIDGE

add action=accept chain=prerouting dst-address=3.3.3.0/24 in-interface=NLT_BRIDGE

add action=accept chain=prerouting dst-address=192.168.101.0/24 in-interface=NLT_BRIDGE

add action=mark-connection chain=prerouting in-interface=gic new-connection-mark=gic_conn passthrough=yes

add action=mark-connection chain=prerouting in-interface=datagroup new-connection-mark=datagroup_conn passthrough=yes

add action=mark-connection chain=prerouting in-interface=triolan new-connection-mark=triolan_conn passthrough=yes

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=NLT_BRIDGE new-connection-mark=datagroup_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:9/0

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=NLT_BRIDGE new-connection-mark=gic_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:9/1

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=NLT_BRIDGE new-connection-mark=gic_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:9/2

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=NLT_BRIDGE new-connection-mark=triolan_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:9/3

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=NLT_BRIDGE new-connection-mark=triolan_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:9/4

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=NLT_BRIDGE new-connection-mark=triolan_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:9/5

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=NLT_BRIDGE new-connection-mark=triolan_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:9/6

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=NLT_BRIDGE new-connection-mark=triolan_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:9/7

add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=NLT_BRIDGE new-connection-mark=triolan_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:9/8

add action=mark-routing chain=prerouting connection-mark=gic_conn in-interface=NLT_BRIDGE new-routing-mark=to_gic passthrough=yes

add action=mark-routing chain=prerouting connection-mark=datagroup_conn in-interface=NLT_BRIDGE new-routing-mark=to_datagroup passthrough=yes

add action=mark-routing chain=prerouting connection-mark=triolan_conn in-interface=NLT_BRIDGE new-routing-mark=to_triolan passthrough=yes

add action=mark-routing chain=output connection-mark=gic_conn new-routing-mark=to_gic passthrough=yes

add action=mark-routing chain=output connection-mark=datagroup_conn new-routing-mark=to_datagroup passthrough=yes

add action=mark-routing chain=output connection-mark=triolan_conn new-routing-mark=to_triolan passthrough=yes

Изменено пользователем sensor

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

что бы не плодить темы, такой вопрос. некторые пользователи сети жалуются, что из-за разных внешних IP адресов они не могут нормлаьно работать с внешними сервисами. Есть необходимость привязки конкретного пользователя к одному WAN адресу.

В начале я попробывал через Route Rules IP привязал к конкретной таблице - работает. но доступ к данному пользователю из сети пропадает.

Попробывал прописать так

add action=mark-routing chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=NLT_BRIDGE new-routing-mark=to_triolan passthrough=no src-address=192.168.101.10

Вроде работает, но как-то криво. Хотя доступ из сети уже к этому пользоват есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

sensor, вполне нормально, не криво. Если пользователей группа, то можно создать из их адресов address-list, и в приведенном правиле ссылаться не на "src-address", а на "src-address-list"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

sensor, вполне нормально, не криво. Если пользователей группа, то можно создать из их адресов address-list, и в приведенном правиле ссылаться не на "src-address", а на "src-address-list"

спасибо так и сделал:) удобно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день! Может кто помочь настроить настроить в маршрутизаторе микротик CCR1036-12G-4S второй канал от вышестоящего провайдера с балансировкой.

На данный момент работает в тесте с одним входящим каналом и подключенным к нему билингом. не могу запустить в работу т.к. одного канала не хватает.

 

P.S.  вознаграждение гарантирую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

10 часов назад, a.polev сказал:

P.S.  вознаграждение гарантирую.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

11 часов назад, Saab95 сказал:

 

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

Не совсем то что мне надо, если я конечно всё правильно понял, У меня один НАТ с двумя входящими каналами. Нат управляется сервером с карбон блилинг 5 версии. Первый канал работает. т.е. все абоненты могут работать через первый канал, но его не хватает. Нужно что бы часть абонентов работали через второй канал. с автоматической балансировкой или ручной пока не сильно принципиально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

4 часа назад, a.polev сказал:

Не совсем то что мне надо, если я конечно всё правильно понял

Скорее всего не правильно поняли. Вот делаете так.

 

/ip address
add address=91.33.21.3/28 interface=ether1 - внешний адрес первого провайдера 
add address=91.33.21.4/28 interface=ether2 - внешний адрес второго провайдера

/ip firewall address-list
add address=10.0.0.0/8 list=Local-IP - ваша служебная серая сеть в которой адресуете свое оборудование (коммутаторы и т.п.)
add address=91.33.21.3 list=Local-IP - адрес одного провайдера
add address=91.33.21.4 list=Local-IP - адрес второго провайдера
add address=10.100.10.0-10.200.255.255 list=Local-ABON - адреса абонентов

Разделяем абонентов на 2 группы ровно пополам

/ip firewall mangle
add action=add-src-to-address-list address-list=NAT_2 address-list-timeout=1h chain=prerouting comment=NAT2 dst-address-list=!Local-IP per-connection-classifier=src-address:2/0 src-address-list=Local-ABON
add action=add-src-to-address-list address-list=NAT_3 address-list-timeout=1h chain=prerouting comment=NAT3 dst-address-list=!Local-IP per-connection-classifier=src-address:2/1 src-address-list=Local-ABON

/ip firewall nat
add action=src-nat chain=srcnat comment=NAT2 dst-address-list=!Local-IP src-address-list=NAT_2 to-addresses=91.33.21.3 - внешний адрес первого провайдера
add action=src-nat chain=srcnat comment=NAT3 dst-address-list=!Local-IP src-address-list=NAT_3 to-addresses=91.33.21.4 - внешний адрес второго провайдера

 

Тут у вас используется 2 ната по SRC адресам двух провайдеров. Балансировка по абонентам автоматическая - сколько идет запросов с IP абонентов, столько они и делятся пополам.

 

Карбон 5 использует какую-то свою плохую схему управлением оборудованием. Нормальная схема это когда биллинг только изменяет скорости, блокирует/разблокирует абонентов. Никаких других действий биллинг осуществлять не должен, в том числе не должен создавать разрешающие/запрещающие фильтры для абонентов, тогда и никаких проблем с балансировкой не будет.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 13.02.2018 в 16:22, Saab95 сказал:

Скорее всего не правильно поняли. Вот делаете так.

Да так, понятней. И походу даже работает.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Какой выход из этой ситуации??? Поделить всех в ручную в адрес листе и ли привязывать избранных абонентов к определённым каналам?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 21.02.2018 в 17:14, a.polev сказал:

при смене внешнего IP приложение перезапрашивает аунтификацию

В данном случае у абонентов IP адрес не меняется. Во многих местах используется такая схема и нет жалоб. У вас точно никакие другие фильтры/манглы не вмешиваются в работу оборудования?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 13.02.2018 в 11:22, Saab95 сказал:

Скорее всего не правильно поняли. Вот делаете так.

 


/ip address
add address=91.33.21.3/28 interface=ether1 - внешний адрес первого провайдера 
add address=91.33.21.4/28 interface=ether2 - внешний адрес второго провайдера

/ip firewall address-list
add address=10.0.0.0/8 list=Local-IP - ваша служебная серая сеть в которой адресуете свое оборудование (коммутаторы и т.п.)
add address=91.33.21.3 list=Local-IP - адрес одного провайдера
add address=91.33.21.4 list=Local-IP - адрес второго провайдера
add address=10.100.10.0-10.200.255.255 list=Local-ABON - адреса абонентов

Разделяем абонентов на 2 группы ровно пополам

/ip firewall mangle
add action=add-src-to-address-list address-list=NAT_2 address-list-timeout=1h chain=prerouting comment=NAT2 dst-address-list=!Local-IP per-connection-classifier=src-address:2/0 src-address-list=Local-ABON
add action=add-src-to-address-list address-list=NAT_3 address-list-timeout=1h chain=prerouting comment=NAT3 dst-address-list=!Local-IP per-connection-classifier=src-address:2/1 src-address-list=Local-ABON

/ip firewall nat
add action=src-nat chain=srcnat comment=NAT2 dst-address-list=!Local-IP src-address-list=NAT_2 to-addresses=91.33.21.3 - внешний адрес первого провайдера
add action=src-nat chain=srcnat comment=NAT3 dst-address-list=!Local-IP src-address-list=NAT_3 to-addresses=91.33.21.4 - внешний адрес второго провайдера

 

Тут у вас используется 2 ната по SRC адресам двух провайдеров. Балансировка по абонентам автоматическая - сколько идет запросов с IP абонентов, столько они и делятся пополам.

 

Карбон 5 использует какую-то свою плохую схему управлением оборудованием. Нормальная схема это когда биллинг только изменяет скорости, блокирует/разблокирует абонентов. Никаких других действий биллинг осуществлять не должен, в том числе не должен создавать разрешающие/запрещающие фильтры для абонентов, тогда и никаких проблем с балансировкой не будет.

 

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

Возникло пару вопросов.

1. Можно же будет разделить 67-33 если каналы неравноценные. Как с PCC для первого канала 3/0 и 3/1 и для второго канала 3/2.

2. Если один из каналов упадёт, получается часть пользователей останется без интернета. Возможно ли автоматически переключить их на рабочий канал? При использование src-nat я так понимаю это сделать нельзя, и тогда нужно использовать masquerade? (почему-то суппорт микротика не рекомендовал мне использовать masquerade).

3. Если поднять BGP с двумя соединениями (https://wiki.mikrotik.com/wiki/Manual:Simple_BGP_Multihoming), как можно сделать балансировку? и возможно ли сделать не только 50/50 (https://www.timigate.com/2018/01/dual-isp-ebgp-setup-with-load-balancing.html)?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Конечно можно как угодно делить, там же каждое правило просто разделение на одну часть от общего количества. Просто в примере 2 провайдера и деление пополам, так делают, когда есть свои белые адреса и натят всех абонентов например через 16 IP, разделив всех на 16 групп.

 

Если у вас сломался один провайдер, просто изменяете в правиле ната IP адрес, и эта группа так же идет через оставшегося в работе провайдера.

 

Если у вас будет BGP, то желательно получать сеть /23, тогда можете делить абонентов на группы и таким образом управлять трафиком. Часто бывает, что одну подсеть /24 нельзя нормально отбалансировать, т.к. изменение весов просто перекидывает входящий трафик с одного канала на другой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5 минут назад, Saab95 сказал:

Конечно можно как угодно делить, там же каждое правило просто разделение на одну часть от общего количества. Просто в примере 2 провайдера и деление пополам, так делают, когда есть свои белые адреса и натят всех абонентов например через 16 IP, разделив всех на 16 групп.

 

Если у вас сломался один провайдер, просто изменяете в правиле ната IP адрес, и эта группа так же идет через оставшегося в работе провайдера.

 

Если у вас будет BGP, то желательно получать сеть /23, тогда можете делить абонентов на группы и таким образом управлять трафиком. Часто бывает, что одну подсеть /24 нельзя нормально отбалансировать, т.к. изменение весов просто перекидывает входящий трафик с одного канала на другой.

Здравствуйте.

 

Большое спасибо за помощь.

"Если у вас сломался один провайдер, просто изменяете в правиле ната IP адрес, и эта группа так же идет через оставшегося в работе провайдера."

 

А как можно изменять правила ната автоматически? есть ли какое-то решение или скрипт?

 

/23 навряд ли дадут, будет /24. Но большинство пользователей под NAT. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.