Для создания грамотных, и тем более сложных конфигураций, необходимы знания.
В том числе очень важно понимать, каким образом трафик проходит через Mikrotik.
Chains
Chains имеют отношение к Firewall.
Mikrotik Firewall работает с Firewall rules, которые обрабатывают собственно Traffic Flow.
Firewall rules обрабатываются по порядку: сверху вниз. Firewall rules могут включать различные conditions, и первое совпадение обработку прекращает.
Firewall rules группируются в Firewall chains.
Firewall chain определяет характер трафика.
Можно определить следующие Chains:
ROUTING DECISION (BRIDGE DECISION), TTL, ROUTING ADJUSTMENT являются автоматизированными процессами.
Остальные объекты являются настраиваемыми объектами.
Итак, в зависимости от того, какой Chain проходит пакет, этот пакет будет обработан Mangle, Firewall, NAT в следующем порядке:
Как уже было сказано, при работе с Traffic Flow у нас рассматривается два интерфейса.
INPUT INTERFACE - входная точка Traffic Flow. Может быть физическим интерфейсом, или виртуальным (например точка входа VPN)
OUTPUT INTERFACE - выходная точка Traffic Flow.
Здесь следует понимать разницу интерфейсов.
Например, при работе с пользовательским трафиком в интернет, мы будем работать с физическими интерфейсами.
А при работе с трафиком VPN мы будет работать с виртуальными туннельными интерфейсами, хотя физические также есть в наличии.
Также при работе с Chain Input и Chain Prerouting нет понятия OUTPUT INTERFACE.
А при работе с Chain Ouput и Chain Postrouting нет понятия INPUT INTERFACE.
В примере будем использовать схему:
Клиент запускает непрерывный пинг на 8.8.4.4
Мы увидим соответствующее Connections:
Создадим два правила:
/ip firewall mangle add action=mark-connection chain=prerouting new-connection-mark=ping1 passthrough=yes protocol=icmp add action=mark-connection chain=prerouting new-connection-mark=ping2 passthrough=yes protocol=icmp
Оба правила настроены в Prerouting Chain.
Первое правило маркирует соединение как ping1, а второе правило его перемаркирует как ping2. Это происходит, поскольку второе правило обрабатывается после первого.
Но достаточно первое правило поместить в Forward Chain или в Postrouting Chain, картина изменится.
/ip firewall mangle add action=mark-connection chain=forward new-connection-mark=ping1 passthrough=yes protocol=icmp add action=mark-connection chain=prerouting new-connection-mark=ping2 passthrough=yes protocol=icmp
Поскольку Forward Chain или Postrouting Chain обрабатываются позже Prerouting Chain, маркировка соединения станет ping1.
Данный пример показывает важность не только взаимного расположения правил Mangle, но и принадлежности правила к той и или иной Chain. Ведь разные Chain выполняются в определённом порядке.
В предыдущем примере мы отслеживали соединения с помощью Connections.
Данный инструмент снимает информацию на этапе CONNECTION TRACKING.
В схеме Traffic Flow Diagram это располагается в Chain Prerouting.
Каким образом CONNECTION TRACKING видит маркировки Mangle?
Connection – это двунаправленная связь. Что-то вроде поезда, который ездит по кольцу. Поэтому про первый пакет Connection Tracker может быть и не узнает, а про всё Connection будет знать.
Что будет, если одновременно настроить Queue Tree и Simple Queue с параметрами:
- Queue Tree = 10Мбит
- Simple Queue = 5Мбит
Поскольку Simple Queue расположена после Queue Tree, она будет перебивать предыдущие правила, и сузит скорость до 5 мбит.
Добавить комментарий