Два провайдера и ограничение ширины канала пользователям.

Обсуждение оборудования и его настройки
Ответить
spider
Сообщения: 3
Зарегистрирован: 13 окт 2017, 08:13

Приветствую.

Имею Mikrotik RB750, в него воткнуто 2 провайдера и настроена их одновременная работа путём создания основного маршрута сразу на 2 шлюза и маркировка соединений в Mangle-prerouting чтобы соединения продолжали ходить в том "провайдере" где были созданы. Всё работает. Но встала задача создать очереди с ограничением ширины и приоритетами. Для чего снова надо маркировать соединения и пакеты. И вот тут опять вопрос, ведь соединения уже промаркированны "направленим на провайдера", а если я снова начну их "перемаркировывать" начнётся хаос. Так? И как быть?


Аватара пользователя
podarok66
Модератор
Сообщения: 4360
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

У меня в своё время не получилась подобная муть. Видимо недостало терпения, внимания и знаний.
Чисто теоретически можно допустить допустить, что соединения промаркированы (mark connection) и мы эти марки не будем трогать. А вот дальше...
В маршрутизации мы используем маркированные маршруты (mark routing).
В шейпере можно попробовать использовать маркированные пакеты (mark packet).
На этом можно попробовать сыграть и умудрится прописать исполнение обоих задач на одном роутере. Если что, я подпишусь на тему и сделаю одну из железок подопытной.
Господа с законченными курсами, прошу вас откомментировать и поучаствовать!!!!
ТС, Вашу маркировку и роуты в студию, будем исходить из нее.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
spider
Сообщения: 3
Зарегистрирован: 13 окт 2017, 08:13

Ух. Попробую изложить что имею как умею..

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

/system routerboard> print
       routerboard: yes
             model: 750
     serial-number: 566204B1B3CF
     firmware-type: ar7240
  factory-firmware: 3.17
  current-firmware: 3.33
  upgrade-firmware: 3.33


 interfaces

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

interface export 
# oct/27/2017 14:51:59 by RouterOS 6.39.2
# software id = D12V-GEBL
#
/interface ethernet
set [ find default-name=ether1 ] name=lan
set [ find default-name=ether2 ] name=clients
set [ find default-name=ether3 ] name=couriers
set [ find default-name=ether4 ] name=domru
set [ find default-name=ether5 ] name=ttk
/interface pppoe-client
add add-default-route=yes default-route-distance=2 disabled=no interface=domru name=dom-ru password=******** use-peer-dns=yes user=********
/interface list
add name=internet
/interface list member
add interface=ttk list=internet
add interface=dom-ru list=internet

 IP Адреса

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

ip address export 
# oct/27/2017 14:49:48 by RouterOS 6.39.2
# software id = D12V-GEBL
#
/ip address
add address=192.168.0.120/24 interface=lan network=192.168.0.0
add address=192.168.2.254/24 interface=couriers network=192.168.2.0
add address=192.168.3.254/24 interface=clients network=192.168.3.0
add address=80.XXX.XXX.XXX/30 interface=ttk network=80.XXX.XXX.XXX

В маршрутизации все немного неоднозначно. т.к. соединение с dom.ru происходит по ppp, то шлюз выдаётся там "динамически", но по сути их всего 2 варианта, поэтому я добавил ОБА в основной маршрут, какой-то да заработает.
Предполагаю, что стек роутера это понимает когда пишет unreachable напротив "не правильного". Как это сделать "красиво" не знаю. Разве что создать monitor скрипт на интерфейс в котором изменять маршрут. НО IMHO и так работает пока.
 IP Маршрутизация

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

ip route export 
# oct/27/2017 14:54:20 by RouterOS 6.39.2
# software id = D12V-GEBL
#
/ip route
add distance=1 gateway=80.XXX.XXX>XXX routing-mark=route-ttk
add distance=1 gateway=10.87.255.254,10.87.255.126 routing-mark=route-domru
add distance=1 gateway=10.87.255.254,10.87.255.126,80.XXX.XXX.XXX

Кстати что такое fasttrack и с чем его едят? :)
 Собственно сам firewall

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

/ip firewall address-list
add address=192.168.0.0/24 list=local-net
add address=192.168.2.1 list=local-net
add address=192.168.3.0/24 list=clients-net
add address=192.168.3.2 list=local-net
add address=192.168.3.1 list=local-net

/ip firewall filter
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related disabled=yes
add action=drop chain=input dst-port=23 in-interface=!lan protocol=tcp
add action=drop chain=input dst-port=22 in-interface=!lan protocol=tcp
add action=drop chain=input dst-port=53 in-interface=!lan protocol=udp
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward connection-state=new dst-address=192.168.0.0/24 src-address=192.168.2.0/24 comment="Подсетка для Курьерского Hotspot"
add action=drop chain=forward connection-state=new dst-address=192.168.0.0/24 src-address=192.168.3.0/24 comment="Подсетка для Клиентского Hotspot"
add action=accept chain=forward
add action=accept chain=forward comment="defconf: accept established,related" connection-state=established,related disabled=yes
add action=drop chain=forward comment="defconf:  drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new disabled=yes in-interface=lan
add action=accept chain=input
add action=accept chain=input connection-state=established
add action=accept chain=input connection-state=related

/ip firewall mangle
add action=mark-connection chain=prerouting connection-state=established,related,new dst-port=!8291 in-interface=ttk log-prefix=IN1 new-connection-mark=conn-TTK passthrough=no protocol=tcp src-address=<my_home_ip_addres>
add action=mark-connection chain=prerouting connection-mark=!conn-TTK connection-state=established,related,new dst-port=!8291 in-interface=ttk log-prefix=IN2 new-connection-mark=conn-TTK passthrough=no protocol=tcp src-address=<my_home_ip_addres>
add action=mark-connection chain=prerouting connection-state=established,related,new in-interface=dom-ru log-prefix=IN new-connection-mark=conn-DOM  passthrough=no protocol=tcp src-address=<my_home_ip_addres>
   
add action=mark-connection chain=prerouting in-interface=ttk new-connection-mark=conn-TTK passthrough=no
add action=mark-connection chain=prerouting in-interface=dom-ru new-connection-mark=conn-DOM passthrough=no
add action=mark-connection chain=forward connection-state=new connection-type="" in-interface=ttk log-prefix=FWD new-connection-mark=conn-TTK passthrough=yes
add action=mark-connection chain=forward connection-state=new in-interface=dom-ru new-connection-mark=conn-DOM passthrough=yes

add action=mark-routing chain=prerouting dst-address=<my_home_ip_addres> log-prefix=OUT new-routing-mark=route-ttk passthrough=no protocol=tcp
add action=mark-routing chain=prerouting connection-mark=conn-TTK log-prefix=OUT new-routing-mark=route-ttk passthrough=no
add action=mark-routing chain=prerouting connection-mark=conn-DOM new-routing-mark=route-domru passthrough=no

add action=mark-connection chain=input connection-state=new in-interface=ttk log-prefix=IN new-connection-mark=conn-TTK passthrough=yes
add action=mark-connection chain=input connection-state=new in-interface=dom-ru new-connection-mark=conn-DOM passthrough=yes
add action=mark-routing chain=output connection-mark=conn-TTK log-prefix=OUT new-routing-mark=route-ttk passthrough=no
add action=mark-routing chain=output connection-mark=conn-DOM new-routing-mark=route-domru passthrough=no

add action=mark-connection chain=forward comment="SSH Queue Priority" dst-port=22 new-connection-mark=connection_ssh_upload passthrough=yes protoco
add action=mark-packet chain=forward connection-mark=connection_ssh_upload new-packet-mark=packet_ssh_upload passthrough=no
add action=mark-connection chain=forward new-connection-mark=connection_ssh_download passthrough=yes protocol=tcp src-port=22
add action=mark-packet chain=forward connection-mark=connection_ssh_download new-packet-mark=packet_ssh_download passthrough=no
add action=mark-connection chain=forward comment="RDP Queue Priority" connection-mark=no-mark dst-port=3389 new-connection-mark=conn_rdp_dest passthrough=yes protocol=tcp
add action=mark-packet chain=forward connection-mark=conn_rdp_dest new-packet-mark=pkt_rdp_dest passthrough=no
add action=mark-connection chain=forward connection-mark=no-mark new-connection-mark=conn_rdp_src passthrough=yes protocol=tcp src-port=3389
add action=mark-packet chain=forward connection-mark=conn_rdp_src new-packet-mark=pkt_rdp_src passthrough=no
add action=mark-connection chain=forward comment="SRC Local net Queue MARK" connection-mark=no-mark new-connection-mark=office-upload passthrough=yes src-address-list=local-net
add action=mark-packet chain=forward connection-mark=office-upload new-packet-mark=office-u passthrough=no
add action=mark-connection chain=forward comment="DST Local net Queue MARK" connection-mark=no-mark dst-address-list=local-net new-connection-mark=office-download passthrough=yes
add action=mark-packet chain=forward connection-mark=office-download new-packet-mark=office-d passthrough=no
add action=mark-connection chain=forward connection-mark=no-mark new-connection-mark=couriers-upload passthrough=yes src-address=192.168.2.0/24
add action=mark-packet chain=forward connection-mark=couriers-upload new-packet-mark=couriers-u passthrough=no
add action=mark-connection chain=forward connection-mark=no-mark dst-address=192.168.2.0/24 new-connection-mark=couriers-download passthrough=yes
add action=mark-packet chain=forward connection-mark=couriers-download new-packet-mark=couriers-d passthrough=no
add action=mark-connection chain=forward comment="SRC Clients Queue MARK" connection-mark=no-mark new-connection-mark=clients-upload passthrough=yes src-address-list=clients-net
add action=mark-packet chain=forward connection-mark=clients-upload new-packet-mark=clients-u passthrough=no
add action=mark-connection chain=forward comment="DST Clients Queue MARK" connection-mark=no-mark dst-address-list=clients-net new-connection-mark=clients-download passthrough=yes
add action=mark-packet chain=forward connection-mark=clients-download new-packet-mark=clients-d passthrough=no

/ip firewall nat
add action=masquerade chain=srcnat dst-address=192.168.3.0/24 out-interface=clients src-address=192.168.0.0/24
add action=masquerade chain=srcnat dst-address=192.168.2.0/24 out-interface=couriers src-address=192.168.0.0/24
add action=masquerade chain=srcnat dst-address=!192.168.0.0/24
add action=dst-nat chain=dstnat dst-port=33334 in-interface=!lan protocol=tcp to-addresses=192.168.0.1 to-ports=3389
add action=dst-nat chain=dstnat dst-port=33335 in-interface=!lan protocol=tcp to-addresses=192.168.0.33 to-ports=3389
add action=dst-nat chain=dstnat dst-port=33339 in-interface=!lan protocol=tcp to-addresses=192.168.0.102 to-ports=3389


Как-то так.
в mangle-prerouting входящие соединение маркируется соответствию куда оно вошло. при обратном потоке пакетов с этой маркировкой соединения маркируется маршрутизация тут же но в другом направлении, чтобы пакеты вылетели через него же. Это для "проходящих" пакетов, то же самое для входящих-исходящих, т.е. адресованных самому роутеру, что на самом деле большая редкость, но всё же (DNS никто не отменял).
А вот потом планировалось маркировать соединения для очередей, но они же уже маркированы...


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

spider писал(а):А вот потом планировалось маркировать соединения для очередей, но они же уже маркированы...

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

Цитата из статьи на Хабре (адрес https://habrahabr.ru/post/133244/)
=================================================================
Мы сначала будем маркировать соединения, а уж потом – пакеты, относящиеся к соединениям.
В таком случае раутер не перепроверяет содержимое заголовков пакетов, принадлежащих уже
промаркированным соединениям. Такой подход позволит не допустить излишнюю загрузку процессора раутера.
Если вы уверены, что раутер справится и с маркированием каждого пакета – соединения можно не маркировать.

=================================================================

И если я правильно понимаю суть, так как у Вас уже соединения отмаркированы, то осталось за малым,
отмаркировать только пакеты, из промаркированных соединений.



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

Дык у меня как -то так и есть...

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

add action=mark-connection chain=prerouting in-interface=ttk new-connection-mark=conn-TTK passthrough=no
add action=mark-connection chain=prerouting in-interface=dom-ru new-connection-mark=conn-DOM passthrough=no
add action=mark-connection chain=forward connection-state=new connection-type="" in-interface=ttk log-prefix=FWD new-connection-mark=conn-TTK passthrough=yes
add action=mark-connection chain=forward connection-state=new in-interface=dom-ru new-connection-mark=conn-DOM passthrough=yes


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


Ответить