@grey_fx
Мелкий сисадмин

Как сбалансировать два канала от одного провайдера?

Добрый день. В наш офис приходят 2 линии от одного провайдера (100 mbit + 50 mbit). С его стороны они включены в 2 порта одного свитча, с нашей - в 2 порта mikrotik rb750gr3. По каждой линии поднимается своё PPPoE подключение, mikrotik настроен на балансировку ECMP. Соответственно настройки от провайдера приходят на обе линии идентичные. Оба наших порта находятся в одной сети со стороны провайдера, у нас объединяются (вроде бы) только балансировкой.

На прошлой неделе, после перезагрузки Mikrotik (для удаления остатков от FastTrack правил из Fierwall), подключения обеих линий перестали подниматься, ответа от PPPoE сервера не было ни на одном кабеле. Через несколько часов удалось добиться информации от провайдера, что наш роутер образовал кольцо, "положившее" несколько ближайших домов, поэтому свитч с нашими линиями был выключен. Я оставил физически включенным 1 кабель, свитч разблокировали.

1) как такое могло произойти? Порты в Mikrotik (насколько я знаю) никак не связаны между собой, если не объединены через switch или bridge, а балансировка не должна вызывать таких последствий.

2) пока нас не заблокировали, всё работало хорошо, кроме сайта Вконтакте. Судя по всему, балансировка постоянно путала пакеты и соединения, у одних работало а у других не отправлялись сообщения и всё на сайте тупило. Были перепробованы все варианты с tcp-mss, но безрезультатно, пока есть 2 линии - есть глюки. По одному каналу всё ок. Где в настройках что-то пошло не так?

Выдержки из конфигурации
/interface bridge
add arp=reply-only fast-forward=no name=bridge1
add arp=reply-only name=bridge2_guest

/interface ethernet
set [ find default-name=ether5 ] name="lan1(5)"
set [ find default-name=ether4 ] master-port="lan1(5)" name="lan2(4)"
set [ find default-name=ether3 ] master-port="lan1(5)" name="lan3(3)"
set [ find default-name=ether1 ] advertise=100M-full name="wan1(1)"
set [ find default-name=ether2 ] advertise=100M-full name="wan2(2)"

/interface pppoe-client
add disabled=no interface="wan1(1)" keepalive-timeout=60 name=pppoe-out1 password=*** use-peer-dns=yes user=***
add disabled=no interface="wan2(2)" keepalive-timeout=60 name=pppoe-out2 password=*** use-peer-dns=yes user=***

/interface list
add name=wans
add name=lans

/ip pool
add name=dhcp ranges=192.168.1.50-192.168.1.250
add name=dhcp_pool2 ranges=192.168.100.30-192.168.100.254

/ip dhcp-server
add add-arp=yes address-pool=dhcp disabled=no interface="lan1(5)" lease-time=5h name=rv_dhcp
add add-arp=yes address-pool=dhcp_pool2 disabled=no interface=bridge2_guest lease-time=1h name=rv_dhcp_guest_wifi

/ppp profile
set *0 change-tcp-mss=no
set *FFFFFFFE change-tcp-mss=no

/interface list member
add interface="wan1(1)" list=wans
add interface="wan2(2)" list=wans
add interface="lan1(5)" list=lans
add interface="lan2(4)" list=lans
add interface="lan3(3)" list=lans
add interface=pppoe-out1 list=wans
add interface=pppoe-out2 list=wans

/ip address
add address=192.168.1.1/24 interface="lan1(5)" network=192.168.1.0
add address=192.168.100.1/24 interface=bridge2_guest network=192.168.100.0

/ip dhcp-server network
add address=192.168.1.0/24 comment="Rosvideo DHCP settings" dns-server=192.168.1.1 gateway=192.168.1.1 netmask=24
add address=192.168.88.0/24 comment=defconf gateway=192.168.88.1 netmask=24
add address=192.168.100.0/24 comment="Guest wifi" dns-server=192.168.100.1 gateway=192.168.100.1

/ip dns
set allow-remote-requests=yes servers=8.8.8.8,78.8.8.8

/ip dns static
add address=192.168.1.1 name=router

/ip firewall address-list
add address=0.0.0.0/8 list=bogon
add address=10.0.0.0/8 list=bogon
add address=100.64.0.0/10 list=bogon
add address=127.0.0.0/8 list=bogon
add address=169.254.0.0/16 list=bogon
add address=172.16.0.0/12 list=bogon
add address=192.0.0.0/24 list=bogon
add address=192.0.2.0/24 list=bogon
add address=192.168.0.0/16 list=bogon
add address=198.18.0.0/15 list=bogon
add address=198.51.100.0/24 list=bogon
add address=203.0.113.0/24 list=bogon
add address=224.0.0.0/4 list=bogon
add address=240.0.0.0/4 list=bogon

/ip firewall filter
add action=drop chain=input connection-state=invalid in-interface-list=wans
add action=drop chain=input in-interface-list=wans src-address-list=bogon
add action=accept chain=input connection-state=established,related in-interface-list=wans
add action=accept chain=input protocol=icmp
add action=accept chain=forward protocol=icmp
add action=accept chain=input src-address=192.168.1.0/24
add action=drop chain=input in-interface-list=wans

/ip firewall mangle
add action=change-mss chain=forward new-mss=1436 out-interface=pppoe-out1 passthrough=no protocol=tcp tcp-flags=syn tcp-mss=1440-65535
add action=change-mss chain=forward new-mss=1436 out-interface=pppoe-out2 passthrough=no protocol=tcp tcp-flags=syn tcp-mss=1440-65535
add action=change-mss chain=forward in-interface=pppoe-out1 new-mss=1436 passthrough=no protocol=tcp tcp-flags=syn tcp-mss=1440-65535
add action=change-mss chain=forward in-interface=pppoe-out2 new-mss=1436 passthrough=no protocol=tcp tcp-flags=syn tcp-mss=1440-65535
add action=mark-connection chain=input in-interface=pppoe-out1 new-connection-mark=mts1 passthrough=no
add action=mark-connection chain=input in-interface=pppoe-out2 new-connection-mark=mts2 passthrough=no
add action=mark-connection chain=forward disabled=yes in-interface=pppoe-out1 new-connection-mark=mts1 passthrough=no
add action=mark-connection chain=forward disabled=yes in-interface=pppoe-out2 new-connection-mark=mts2 passthrough=no
add action=mark-routing chain=output connection-mark=mts1 new-routing-mark=mts1routing passthrough=no
add action=mark-routing chain=output connection-mark=mts2 new-routing-mark=mts2routing passthrough=no

/ip firewall nat
add action=masquerade chain=srcnat out-interface=pppoe-out1
add action=masquerade chain=srcnat out-interface=pppoe-out2

/ip route
add check-gateway=ping distance=1 gateway=pppoe-out1 routing-mark=mts1routing
add check-gateway=ping distance=1 gateway=pppoe-out2 routing-mark=mts2routing
add check-gateway=ping distance=1 gateway=pppoe-out2,pppoe-out1,pppoe-out1
add disabled=yes distance=1 gateway=192.168.1.1

/ip upnp
set enabled=yes

/ip upnp interfaces
add interface="wan1(1)" type=external
add interface="wan2(2)" type=external
add interface="lan1(5)" type=internal
  • Вопрос задан
  • 1182 просмотра
Решения вопроса 1
@Gansterito
Возможно, что RouterBoard (конкретно ваша модель) во время перезагрузки становится простым свичом.
Столкнулся с этим на RB1100AHx2. Он двумя портами уходит в один коммутатор. Во время перезагрузки запетлевал одним VLAN-ом, коммутатор петлю не поймал (причину не помню).
Задал вопрос "знатоку" микротиков Saab95 на forum.nag.ru, ответа не получил.
Думаю, Вам стоит проверить эту версию экспериментом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@yurapupan
Я отказался от подобных идей на Mikrotik, потому что его нет нет да и заглючит, использую только резервирование канала по netwatch. Лекарство на мой взгляд только одно, CISCO.
Ответ написан
Комментировать
p00h
@p00h
Фехтовальщик-стропальщик
Так как мы говорим о трафике из локальной сети, то ни одно из правил:
add action=mark-connection chain=input in-interface=pppoe-out1 new-connection-mark=mts1 passthrough=no
add action=mark-connection chain=input in-interface=pppoe-out2 new-connection-mark=mts2 passthrough=no
add action=mark-connection chain=forward disabled=yes in-interface=pppoe-out1 new-connection-mark=mts1 passthrough=no
add action=mark-connection chain=forward disabled=yes in-interface=pppoe-out2 new-connection-mark=mts2 passthrough=no
add action=mark-routing chain=output connection-mark=mts1 new-routing-mark=mts1routing passthrough=no
add action=mark-routing chain=output connection-mark=mts2 new-routing-mark=mts2routing passthrough=no

не повлияет ни ни один пакет из локальной сети, потому как правила в цепочке forward выключены, а цепочки input и output относятся только к пакетам, направляемым от самого роутера (или к самому роутеру).

Следовательно в цепочке маршрутов,
/ip route
add check-gateway=ping distance=1 gateway=pppoe-out1 routing-mark=mts1routing
add check-gateway=ping distance=1 gateway=pppoe-out2 routing-mark=mts2routing
add check-gateway=ping distance=1 gateway=pppoe-out2,pppoe-out1,pppoe-out1
add disabled=yes distance=1 gateway=192.168.1.1

работает только этот:
add check-gateway=ping distance=1 gateway=pppoe-out2,pppoe-out1,pppoe-out1
.
Каждое новое TCP соединение будет направлено по очереди в один из интерфейсов. Микротик отслеживает и не направит в другой шлюз только открытые (активные) соединения. Поэтому, очень возможна ситуация, когда авторизация в vk.com прошла через pppoe-out1, а следующей GET пошел через pppoe-out2. Не знаю насколько это важно для контакта, не разбирался.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы