• Быстрый переход
  • Рубрики
  • Свежие записи
  • Метки
  • Архивы
  • Реклама 1
  • Реклама 2
  • Рейтинг@Mail.ru

    Маркировка пакетов с помощью Mangle в Mikrotik


    Спецификации
    Требуемые пакеты: system
    Требуемый уровень лицензии: Level1
    Уровень подменю: /ip firewall mangle
    Стандарты и технологии: IP
    Аппаратное обеспечение: Зависит от количества правил mangle
    Mangle
    Уровень подменю: /ip firewall mangle
    Описание:
    Mangle это как бы "маркер" который маркирует паке ты специальными марками для дальнейшей обработки. Многие другие средства в RouterOS используют эти марки, например такие как деревья очередей и NAT. Они идентифицируют пакеты по их маркам и соответственно обрабатывая их. Марки mangle используются только маршрутизатором, они не передаются по сети.

    Описание свойств:

    action (accept | add-dst-to-address-list | add-src-to-address-list | change-dscp | change-mss |change-ttl | jump | log | mark-connection | mark-packet | mark-routing | passthrough | return | set priority | strip-ipv4 -options; по умолчанию: accept) - предпринимаемое действие, если пакет соответствует правилу

    Этот вид маркировки используется только для политики маршрутизации.

    address-list(name) - имя списка адресов в котором собранны IP адреса из правила действиями action=add-dst-to-address или action=add-src-to-address-list. Этот список адресов должен быть создан ранее.
    address-list-timeout(time; по умолчанию: 00:00:00) - интервал, по истечении которого адрес будет удален из списка адресов определенного параметром address-list. Используется в совокупности с дествием add-dst-to-address-list или add-src-to-addresslist

    chain (forward | input | output | postrouting | prerouting) - цепочка для добавления в нее определенного правила. Так как определенный трафик идет через определенные цепочки, будьте осторожны в выборе цепочки для нового правила. Даже если правило не имеет смысла или оно уже было созда но ранее оно все равно будет создано.
    comment(text) свободная форма текстового комментария для правила. Комментарий может быть использован для обращение к сценарию.
    connection-bytes(integer-integer) - соответствие пакетов только если определенное кол-во байт было передано через определенное соединение

    connection-limit(integer, netmask) - ограничивать соединение лимитирование производить по адресу или заблокировать адрес.
    connection-mark(name) - соответствие пакетов промаркированных средством mangle определенному промаркированному соединению.
    connection-state (estabilished | invalid | new | related) - отслеживание состояния соединения

    connection-type (ftp | gre | h323 | irc | mms | pptp | quake3 | tftp) - информация о соответствии пакетов из связанных соединений, полученных из их вспомогательных трассировщиков соединений. Трассировщики должны быть включены в /ip firewall service-port
    content(text) - текст который должны содержат ь пакеты для соответствия правилу.
    dscp (integer: 0..63) - DSCP (ex-ToS) - значение полей заголовка IP пакета.
    dst-address (IP address/netmask | IP address -IP address) - определенный диапазон адресов которым может быть предназначен IP пакет. Примечание конс оль конвертирует ввод значения address/netmask в валидный адрес т.е 1.1.1.1/24 будет конвертирован в 1.1.1.0/24

    dst-address-list(name) - соответствие адресу назначения пакета определенному  пользователем в списке адресов.
    dst-address-type (unicast | local | broadcast | multicast) - соответствие адреса назначения IP пакета одному из типов:

    dst-limit (integer/time{0,1},integer,dst -address | dst-port | src-address{+},time{0,1}) - ограничение кол-ва пакетов в секунду идущих на IP адрес назначения или порт назначения. Как противоположность лимитирования пакетов, каждый адрес назначения / порт назначения использует это лимитирование. Опции перечислены ниже(в порядке появления):

    dst-port - (integer: 0..65535-integer: 0..65535{*}) - порт или диапазон портов назначения.
    fragment (yes | no) - является ли пакет фрагментом IP пакета. Стартовый пакет(т.е первый фрагмент) не считается. Примечание если включен трассировщик соединений, фрагментирования происходить не б удет так как система автоматически соберет каждый  пакет
    hotspot (multiple choice: auth | from-client | http | local-dst | to-client) - соответствие пакетов полученных от клиента условия HotSpot.

    icmp-options (integer.integer) - соответствие ICMP типа: кодовым полям
    in-bridge-port (name) - актуальный интерфейс на который заходит пакет следующий через маршрутизатор(если бридж,то это свойство соответствует актуальному порту бриджа, пока in-interface является бриджом) соответственно.
    in-interface (name) - интерфейс на который заходит пакет следующий через маршрутизатор(если интерфейс забриджован, то пакет будет определятся как пришедший с интерфейса бридж)
    ingress-priority (integer: 0..63) - INGRESS(полученный) приоритет пакета, если установлен(0 в другом случае). Приоритет может быть получен также от VLAN или WMM
    ipv4-options (any | loose-source-routing | no-record-route | no-router-alert | no-source-routing |no-timestamp | none | record-route | router-alert | strict-source-routing | timestamp) -соответствие заголовка опции ipv4

    jump-target (forward | input | output | postrouting | prerouting name) - название целевой цепочки для перехода в неё, если action=jump используется
    layer7-protocol (name) - Layer 7 название фильтра установленного в /ip firewall layer7-
    protocol меню. Предостережение: при использовании необходима большая вычислительная мощность
    limit (integer/time{0,1},integer) - ограничить пакет согласно взятому лимиту. Используется для уменьшения кол-ва записей в системном журнале.

    log-prefix (text) - определение нового значения маркированного соединения которое будет использоваться в паре с action=mark-connection
    new-dscp (integer: 0..63) - определение нового значения поля DSCP которое будет использоваться в паре с action=change-dscp
    new-mss (integer) - определение значения MSS которое будет использоваться в паре с action=change-mss
    new-packet-mark(name) - определение нового значения маркировки пакета которое будет использоваться в паре сaction-mark-packet
    new-priority (integer) - определение нового значения приритета пакета для включения приоритета интерфейса, используется в паре с action=set-priority

    new-routing-mark (name) - определение нового значения маркировки маршрута используется в паре с action=mark-routing
    new-ttl (decrement | increment | set:integer) - определение нового значения поля TTL используется в паре с action=change-ttl

    nth (integer,integer: 0..15,integer{0,1}) - соответствие пакету определенному Nth полученному из правила. Для подсчета пакетов может быть использован один из 16 доступных счетчиков

    out-bridge-port(name) - актуальный интерфейс через который транзитный пакет покидает маршрутизатор(если это бридж, то это свойство соответствует актуальному порту бриджа, до тех пор пока out-interface является бриджом)
    out-interface (name) - интерфейс через который транзитный пакет покидает маршрутизатор(если это бридж, то пакет будет является пакетом проходящим через бридж соответственно)
    p2p (all-p2p | bit-torrent | direct-connect | edonkey | fasttrack | gnutella | soulseek | warez | winmx) - соответствие пакетов соединениям принадлежащим одному из перечисленных протоколов P2P
    packet-mark (name) - соответствие пакетов маркам проставленным средствами mangle
    packet-mark
    packet-size (integer: 0..65535-integer: 0..65535{0,1})-соответствие пакета определенному размеру или диапазону указанному в байтах
    min - определяет нижнюю границу диапазона
    max - определяет верхнюю границу диапазона
    passthrough (yes | no; по умолчанию: yes) - разрешено ли пакету следовать далее после маркировки данной марки(свойство действительно только если действие маркирует пакет, соединение или маршрут)
    port (port{0-16}) - соответствует если другой(источник или назначение) порт  соответствует определенному в списку портов или диапазону портов(примечание при этом должен быть выбран протокол, также как и при использовании соответстви й src-port и dst-port)
    protocol (ddp | egp | encap | ggp | gre | hmp | icmp | idrp -cmtp | igmp | ipencap | ipip | ipsec -ah | ipsec-esp | iso-tp4 | ospf | pup | rdp | rspf | st | tcp | udp | vmtp | xns -idp | xtp | integer) - соответствие спецефичному проток олу определяемому по имени или по номеру. При использовании портов вам необходимо определять специфичный протокол.

    psd (integer,time,integer,integer) - попытка определения TCP и UDP сканеров. Это свойство применяется для присвоения более низкой значимости портам с высокими номерами, для уменьшения частоты негативных обращений, как например при пассивной FTP передачи

    random (integer: 1..99) - соответствие пакета взятого наугад.

    routing-mark (name) - соответствие пакетов промаркированных определенной маркой маршрута.

    src-address (IP address/netmask | IP address -IP address) - диапазон адресов, от которых  пришел IP пакет. Примечание консоль конвертирует ввод значение address/netmask в действительный адрес т.е 1.1.1..1/24 конвертируется в 1.1.1.0/24

    src-address-list (name) - соответствие адреса источника пакета значению определенному в списке адресов

    src-address-type (unicast | local | broadcast | multicast) - соответствие типа адреса источника IP пакета, одному из:

    src-mac-address (MAC address) - MAC адрес источника

    src-port (integer: 0..65535-integer: 0..65535{*}) - порт источника или диапазон портов

    tcp-flags (multiple choice: ack | cwr | ece | fin | psh | rst | syn | urg) ниже перечислены tcp флаги

    tcp-mss (integer: 0..65535) - соответствие IP пакета значению TCP MSS
    time (time-time,sat | fri | thu | wed | tue | mon | sun{+}) - принять создание фильтра в назначенное время или сгенерировать пакеты в исходное время

    Примечание

    Вместо маркировки двух правил если вы хотите например маркировать пакет - соединения или маршрут и больше не использовать таблицу mangle в данном действии(другими словами промаркировать и принять пакет), вы должны отключить установленное по умолчанию свойство passthrough промаркированного правила.
    Как правило маркировка маршрута не используется для P2P, так как маршрутизация P2P трафика всегда ведется через шлюз по умолчанию.

    Пример использования

    В следующей секции обсуждаются некоторые примеры использования средства mangle

    Peer-to-Peer Traffic Marking

    Для гарантированного улучшения качества работы сетевых соединений, интерактивный трафик такой как VoIP и HTTP должен быть приоритетен по отношению к неинтерактивному, такому как peer -to-peer. В RouterOS QOS использует для этого в первую очередь маркировку типа трафика, и затем помещает его в очереди с различными лимитами.

    Представленый ниже пример пр едоставляет P2P трафику не более чем 1 Mbps всей полосы, а всему остальному трафику разрешает использовать всю полосу:

    [admin@MikroTik] > /ip firewall mangle add chain=forward ... p2p=all-p2p action=mark-connection new-connection-mark=p2p_conn

    [admin@MikroTik] > /ip firewall mangle add chain =forward ... connection-mark=p2p_conn action=mark-packet new-packet-mark=p2p

    [admin@MikroTik] > /ip firewall mangle add chain=forward ... connection-mark=!p2p_conn action=mark-packet new-packet-mark=other

    [admin@MikroTik] > /ip firewall mangle print

    Flags: X - disabled, I - invalid, D - dynamic

    0 chain=forward p2p=all-p2p action=mark-connection new-connectionmark=p2p_conn 1 chain=forward connection-mark=p2p_conn action=mark-packet new-packetmark=p2p 2 chain=forward packet-mark=!p2p_conn action=mark-packet new-packetmark=other

    [admin@MikroTik] >

    [admin@MikroTik] > /queue tree add parent=Public packet -mark=p2p limitat=1000000 ... max-limit=100000000 priority=8

    [admin@MikroTik] > /queue tree add parent=Local packet-mark=p2p limitat=1000000 ... max-limit=100000000 priority=8

    [admin@MikroTik] > /queue tree add parent=Public packet -mark=other limitat=1000000 ... max-limit=100000000 priority=1

    [admin@MikroTik] > /queue tree add parent=Local packet-mark=other limitat=1000000 ... max-limit=100000000 priority=1

    Маркировка по MAC адресам

    Для маркировки трафика по известным МАС адресам которые проходят к/через маршрутизатор выполните следующее:

    [admin@MikroTik] > / ip firewall mangle add chain=prerouting ... src-mac-address=00:01:29:60:36:E7 action=mark -connection new-connectionmark=known_mac_conn

    [admin@MikroTik] > / ip firewall mangle add chain =prerouting ... connection-mark=known_mac_conn action=mark-packet new-packetmark=known_mac

    Смена MSS

    Всем известно что VPN соединения гоняют маленькие пакеты встроенные в заголовок. Большие пакеты с MSS который превышает MSS для VPN соединения может быть предварительно фрагментирован для посылки через данный вид соединения. Однако если в пакете установлен флаг DF, то он не может быть фрагментирован и быть удален. В соединениях которые имеют неверный MTU (PMTUD) это может создать ряд проблем, включая проблемы с FTP и HTTP соединениями а также почтовыми с ервисами. В случае соединений с потерянными PTUMD, уменьшение MSS пакетов проходящих через VPN соединения решает эту проблему. Приведенный ниже пример демонстрирует, как можно уменьшить значение MSS средствами mangle

    [admin@MikroTik] > /ip firewall mangle add out-interface=pppoe-out
    ... protocol=tcp tcp-flags=syn action=change-mss new-mss=1300 chain=forward
    [admin@MikroTik] > /ip firewall mangle print
    Flags: X - disabled, I - invalid, D - dynamic
    0 chain=forward out-interface=pppoe-out protocol=tcp tcp-flags=syn action=change-mss new-mss=1300
    [admin@MikroTik] >

    Автор: admin, 26 февраля 2010
    Рубрики: OS MikroTik Router, Новости
    Метки: , , , , , ,

    Последние статьи