Небольшая вводная по сетям, в применении к Mikrotik

Как ходит трафик в Микротик

Представьте комп с двумя сетевыми картами. Будем называть его ШЛЮЗ. В одну карту входит интернет. Со второй выходит к свичу. А к свичу подключены другие компы. За этими компами люди в интернете сидят. Так вот. Трафик идущий от людей в интернет и обратно - это для шлюза транзитный-проходящий трафик FORWARD. Это левая диаграмма. Как раз наш случай с Микротик. А если на самом шлюзе запускаются браузер, почта и пр. То это уже Входящий и Исходящий трафик для шлюза. Не транзитный. INPUT и OUTPUT. Т.к. конечная точка всех пакетов - это сам шлюз, а не компы за шлюзом. Это левая и правая диаграмма, только без центрального блока FORWARD. В Микротике правая практически никогда не задействована. Так что про INPUT-OUTPUT забудьте) Только для блокировки входящих пакетов.

«И на кой черт мне это нужно?» Спросите Вы. Все просто. Зайдите в IP → Firewall. Там есть 3 вкладки Filter, NAT и Mangle. В Filter и Mangle есть все 3 цепочки - Prerouting, Forward и Postrouting. И еще 2 цепочки Input и Output. В NAT есть только цепочки DstNat и SrcNat.

  • Filter - разрешает-запрещает пакеты, совпадающие по условию записи в Filter.
  • NAT - это чаще всего правило SrcNat-Masquerade - чтоб люди могли ходить в интернет.
  • И DstNat-DstNat - чтоб с интернета можно было добраться до компьютеров и роутеров в вашей сети.
  • Mangle - продвинутый маркировщик пакетов.

Предположим клиент вашей сети имеет адрес локальный 192.168.0.2, а IP Микротика 80.80.80.1 - это интернет адрес. Когда клиент запрашивает веб-страницу, к нему сыплятся пакеты. Но не на его адрес, а на адрес Микротика. Потому как адрес 192.168.0.2 локальный, и само собой напрямую на этот адрес прийти ничего не может. Т.е. Микротику приходит пакет с Dst.Address - 80.80.80.1

  1. Mangle Prerouting, Nat Prerouting - правила в этих 2 цепочках Самые первые обрабатывают пакет. Никаких локальных адресов в пакете нет, только внешний адрес Микротика!
  2. Далее срабатывает Firewall - NAT. Происходит подмена (из таблицы NAT) для входящих пакетов внешнего IP на локальный или DstNat (это для тех, кто пытается достучаться до локальных IP-адресов из интернета). Т.е. теперь Dst.Address пакета не 80.80.80.1, а уже локальный адрес клиента - 192.168.0.2.
  3. Теперь срабатывают правила в цепочках Mangle Forward и Filter Forward. Тут уже можно фильтровать клиентов вашей сети.
  4. Далее снова срабатывает NAT. Здесь создаются записи в таблице NAT для исходящих пакетов. Т.е. срабатывает SRC-NAT. По этим записям будет происходить обратная замена IP, когда придут ответные пакеты. И для исходящих пакетов происходит подмена локального IP 192.168.0.2 на IP Микротика 80.80.80.1.
  5. И последний этап - Mangle Postrouting, Nat Postrouting. Никаких локальных адресов в пакете нет, только внешний адрес Микротика!

Далее все это направляется в шейпер. Queue Tree и Simple Queue. Для Транзитного траффика: сеть → mangle PREROUTING → nat PREROUTING → mangle FORWARD → filter FORWARD → mangle POSTROUTING → nat POSTROUTING → сеть

Firewall Filter — блокируем и разрешаем.

Здесь создаются блокирующие и разрешающие правила. Если записей никаких нет - то все разрешено. Порядок записей имеет значение.

Проверка правил происходит сверху вниз. Если пакет соответствует правилу, то дальнейшая проверка не происходит, если конечно не стоит галка PassTrugh Есть 2 варианта.

  1. Мягкий - Добавлять только запрещающие правила. Все остальное разрешать.
  2. Жесткий - поставить запрещающее правило на все. А сверху добавлять разрешающие.

Блокируется или входящие пакеты или исходящие. Важно!

  1. Никогда не пытайтесь одним правилом блокировать входящие и исходящие пакеты одновременно. Это ошибка. Просто создайте при необходимости 2 правила - на входящие и исходящие пакеты. А лучше блокировать только исходящие пакеты еще на взлете. Входящих пакетов само собой уже не будет. Да и Роутер разгрузится от лишнего входящего траффика.
  2. Есть 2 типа пакетов - входящие и исходящие. Src.Address и Dst.Address в правилах меняются местами. В зависимости от направления движения пакета.
    1. Входящие - это из интернета к нам.
      1. Src.Address - это интернет-адрес отправителя (сервера в интернете).
      2. Dst.Address - это интернет-адрес Микротика (получателя). Если это правило в цепочке PreRouting или Dst.Address - это локальный адрес клиента (получателя). Если это правило в цепочке Forward или PostRouting.
    2. Исходящие - это от нас в интернет.
      1. Src.Address - это интернет-адрес отправителя (Микротика) . Если это правило в цепочке PostRouting или Src.Address - это локальный адрес клиента (отправителя). Если это правило в цепочке Forward или Prerouting Dst.Address - это интернет-адрес получателя (сервера в интернете).
  3. В правилах всегда указывайте Out. Interface или In. Interface. Причем, если указываете In. Interface - LAN1, то это исходящий трафик. Значит Dst.Address - это должен быть адрес интернет-ресурса. А Src.Address - это адрес вашей локалки или Микротика если указываете Out. Interface - LAN1, то это входящий трафик. Значит Dst.Address - это должен быть адрес вашей локалки или Микротика. А Src.Address - адрес интернет-ресурса. Это очень важно!

То же самое (п. 1 и 2) касается и Mangle.

NAT. Проброс портов.

/ip firewall nat add action=dst-nat chain=dstnat disabled=no dst-port=10010 protocol=tcp to-addresses=192.168.88.10 to-ports=80

В данном случае на компе с адресом 192.168.88.10 запущен веб сервер. Если внутри вашей сети набрать в браузере 192.168.88.10 - то откроется локальный сайт. А если с другого компа в интернете набрать в браузере 80.80.80.1:10010 (80.80.80.1 - это Ваш внешний_IP_адрес_Микротика) то Вы попадете на свой сайт, который на ходится на компе 192.168.88.10.

Маркировщик Mangle. Следим и помечаем трафик.

Это очень мощное средство. Позволяет маркировать пакеты по любым правилам. Подчиняется тем же правилам, что описаны в разделе про фильтры Но Мангле ничего не запрещает и не разрешает. Он просто помечает трафик, соединения, пакеты, маршруты и пр. Умеет также добалять в AddressList, Менять TTL пакетов, приоритет, порядок цепочек и пр. пр. Это для дальнейшей обработки в файрволле или шейпере.

Address List. Для чего он?

Это в основном для того, чтоб не указывать кучу однотипных правил для разных IP, а кинуть эти IP в один Address List. И затем создать только одно правило на этот Address List.

Кроме того, правила Mangle - сами могут добавлять IP адреса в определенный Address List. Например, добавить в Address List «ICQ» - те IP, которые пользуются ICQ. Чрезвычайно удобная штука!

Нарезаем скорость

Простой шейпер

Важно! Проверка правил шейпера происходит сверху вниз. Если какое-то правило шейпа сработало, то дальнейшая проверка уже не производится!

Добавляем IP или список IP, для которых в сумме можно выставить максимальну скорость Max Limit. Отдельно входящую и исходящую скорость. Можно также выставить гарантированную скорость - Limit At. Но с этим будьте осторожны! Если у Вас канал плавающий по скорости - лучше отключить.

Также можно включить дополнительные колонки, которые показывают входящую и исходящую скорости - Total Tx Bytes, Total Rx Bytes (Правой кнопкой мыши по окну Queue. Затем Showcolumns и крутим ниже… ). А также потребленный входящий и исходящий трафик(Rx Avg. Rate и Tx Avg. Rate ) Начиная с момента последней перезагрузки роутера. Можно скорости писать в виде 500K, 2M, а также можно указать скорости Burst Limit (с Burst TreshHold, Burst Time) Это взрывная кратковременная скорость.

Очень эффективно при низкоскоростных тарифах и если Вас качальщики задрали. Веб сайты открываются тогда моментом на Burst скорости, а закачки идут на обычной скорости.

Если у Вас Dual Access, то можно для каждого клиента создать еще одну дополнительную запись с высокой скоростью на локальные ресурсы. Только нужно дополнительно указать Dst. Address 10.0.0.0/8 - это Ваши локальные ресурсы. Эту запись нужно поставить выше основной записи клиента.

Если Вы скорость на локальные ресурсы не хотите подрезать вообще, то можно создать только одну общую запись с Dst. Address - 10.0.0.0/8, Target Address - пустой, скорость Tx, Rx указать по максимуму - например 1G и поместить ее на самый верх.

Важно! Очень советую в самый конец добавлять правило END. Все, что не сработало по любому из шейпером - будет шейпится в правиле END. На этом правиле будет учитываться, подрезаться или блокироваться весь неучтенный трафик. Ну например Вы по невнимательности забыли кого-то добавить в шейпер. И человек получит всю доступную скорость без любых огранечиний! Тем самым может положить канал!

Правило END для учета и подрезки неучтенного траффика:

add interface=all max-limit=100k/100k name=END target-addresses=192.168.0.0/16 
  • Для учета без подрезки - ставим max-limit=100M/100M
  • Для подрезки под 0 - ставим max-limit=10/10
  • 192.168.0.0/16 - Весь диапазон, не попавший в верхние правила.

Tree Queues

По функциональности он гораздо продвинутее. Этот шейпер срабатывает раньше Simple Queue. Эффективен особенно при методе PCQ. И большом количестве клиентов 100 и более. В нем входящая и исходящая скорости нарезаются отдельными правилами. Он работает только в связке с Мангле.

Итак, 6 шагов. Придумаем несколько Адрес листов - например 1M и 5M. Это тарифные планы.

  1. В IP-Firewaal-Address List Добавляем IP юзеров - и вписываем им 1М или 5М.
  2. Далее в IP-Firewall-Mangle маркируем Connection-ы. Создаем правило forwad. Action - mark connection (New Connection Mark называем к примеру Conn-5M или Conn-1M, Passtrough - включаем), Ставим Connection State - new, Out. Interface - LAN1, а также наш Dst. Address List - 1M или 5M.
  3. Затем ниже создаем правило forward. Action - mark packet. (New Packet Mark называем к примеру p-5M или p-1M, Passtrough - включаем) Connection Mark - ставим Conn-5M или Conn-1M соответственно.
  4. Далее в Queue Types создаем PCQ-правило к примеру PCQ-Download, в нем Dst. Address - включаем.
  5. Затем в Queue Tree - создаем родителя, называем его Download, а Parent - наш LAN1 интерфейс.
  6. Создаем еще два правила в Queue Tree Называем правило к примеру Speed-5M, указываем родителя Download, Queue Type - PCQ-Download, Packet Marks - p-5M и указываем нашу скорость Max Limit - 5M (а второе правило то же самое, только имя правила Speed-1M, Packet Marks - p-1M, а скорость Max Limit - 1M )Все.

Эти два правила будут будут нарезать трафик всем клиентам.Достаточно адрес IP клиента добавить в нужный Adrress List.

  1. Все кто в Адрес лист 1M - получат скорость 1M
  2. Все кто в Адрес лист 5M - получат скорость 5M

Чтобы изменить скорость всем 5M на 10M - достаточно только в QueueTree поменять одну строчку - Max Limit. Т.е. скоростя каждому в отдельности не прописываются, а прописываются тарифные планы - т.е. Packet Mark. На исходящий тарафик нужно создать нового родителя с parent - наш WAN1. Также создать в Queue Type - PCQ-Upload, в нем Src. Address - включаем. Все остальное аналогично. Графики для Queue Tree - недоступны.

А как же смотреть, кто сколько скачал и на какой скорости и кто качает?

Все просто. Добавляем в IP→Firewall→Mangle - на каждый IP - свою запись: Chain → forward Out. Interface → LAN1. Dst. Address - наш IP. Action -Passtrouh. Эти записи ставим ниже записей mark-connection и mark-packet.

Включаем дополнительную колонку - Rate. Это и есть текущая скорость. (Правой кнопкой мыши по окну Mangle. Затем Showcolumns и крутим в самый низ, пока не найдем Rate ). Колонка Bytes - это потребленный трафик Download (Rx).

Включаем Графики.

Графики траффика доступны для всех интерфейсов, и Simple Queue. А также доступны графики загрузки процессора, памяти, флеш-памяти. За сутки, за неделю, за месяц, за год.

Графики включаются в Tools → Graphing. Просто добавьте нужные позиции. Посмотреть графики можно на Веб-странице Микротика. При перезагрузке графики сохраняются. При перепрошивке графики обнуляются.

IPTV настройка

Скачиваем версию пакетов под ваш Микротик Вместо 5.16 ставим - вашу версию Router OS.

Важно! Версия пакета должна совпадать с версией вашей Router OS! http://download2.mikrotik.com/all_packages-mipsbe-5.16.zip. Распаковываем. Перетаскиваем multicast…npk на WinBox. Перезагружаемся.

Далее идем в System→Packages. Там должен быть multicast пакет.Идем в Route→IGMP Proxy.

  1. Route→IGMP Proxy - 1-я запись.
  2. Route→IGMP Proxy - 2-я запись.
  3. IP→Route - добавляем маршрут на локалку
  4. IP→Firewall→Filter - разрешающее правило на локалку. Или пока все отключить.
  5. IP→Firewal→NAT - Out Interface пустой
  6. WiFi→WMM support включить

Резервирование 2 и более каналов.

По умолчанию пакеты идут через WAN1. Если WAN1 отвалится - все пакеты пойдут на WAN2.

/ip route
add check-gateway=arp dst-address=0.0.0.0/0 gateway=80.80.80.1 routing-mark=r1 distance=1
add check-gateway=arp dst-address=0.0.0.0/0 gateway=90.90.90.1 routing-mark=r2  distance=2 

В NAT→Out. Inteface - пустой.

В IP→DHCP Client→Add Default Route - можно отключить

Балансировка 2+ каналов.

Балансировка через маршруты.

Соединения вперемежку будут идти через WAN1 или WAN2. Метод хорошо работает при каналах приблизительно равных по скорости. Разница по скорости каналов не должна отличаться более чем в 2 раза. В Мангле - эти правила поднимите наверх.

/ip firewall mangle
add act=mark-connection ch=prerouting connection-state=new new-connection-mark=c1 nth=2,1 passthrough=yes
add act=mark-connection ch=prerouting connection-state=new new-connection-mark=c2 nth=2,2 passthrough=yes

add act=mark-routing ch=prerouting connection-mark=c1 new-routing-mark=r1 passthrough=yes
add act=mark-routing ch=prerouting connection-mark=c2 new-routing-mark=r2 passthrough=yes

/ip route
add check-gateway=arp dst-address=0.0.0.0/0 gateway=80.80.80.1 routing-mark=r1 scope=255
add check-gateway=arp dst-address=0.0.0.0/0 gateway=90.90.90.1 routing-mark=r2 scope=255

Можно добавить еще маршрут без маркировки на всякий пожарный:

add disabled=no dst-address=0.0.0.0/0 gateway=80.80.80.1 scope=255

В NAT - Out. Inteface - пустой.

В IP - DHCP Client - Add Default Route - можно отключить

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

Запрет определенных сайтов по имени

Открываем New Terminal. И вставляем наше правило. Не забудьте поднять его наверх.

Можете также вручную кнопкой [+] создать это правило.

/ip firewall filter add act=drop chain=forward cont="Host: mikrotik.org" prot=tcp src-address=192.168.0.2 in-int=LAN1

Все. сайт mikrotik.org больше не откроется) Тем самым Вы блокируете только исходящие запросы еще на взлете. Роутеру уже не нужно фильтровать входящие пакеты от этого сайта, потому как Входящих пакетов само собой дальше уже не будет. А исходящий трафик обычно в 10-20 раз меньше входящего.

Да и фильтруются только исходящие TCP запросы. Кроме того сами исходящие GET-запросы копеечные по траффику - до 200-500 байт. Они помещаются в один пакет. Т.к. что нагрузка на правило content - мизерная.

Кроме того не будут блокироваться сайты, содержащие строчку Host: mikrotik.org и будут проходить get-запросы содержащие строчку mikrotik.org. Что есть очень хорошо.

  • src-address - ставим IP компьютера-жертвы.
  • content=«Host: mikrotik.org» - блокируемый сайт

Если нужно блокировать доступ к сайту для всех компов, убираем строчку src-address. Если нужно блокировать только определенным компьютерам - то создайте во вкладке address-list, записи с IP блокируемых компьютеров. И назовите эти записи к примеру block-website. А вот Этот адрес-лист укажите уже в записи Src.Address List. Src-address - удалите

Определяем у кого стоят роутеры по TTL.

Все IP адреса, которые сидят за роутерами, попадут в Address-List Router Как это применить - есть куча вариантов.

/ip fi ma 
add ac=add-src-to-address-list ch=prerouting in-i=LAN1  ttl=equal:63   address-list=Router
add ac=add-src-to-address-list ch=prerouting in-i=LAN1 ttl=equal:127  address-list=Router

И наоборот, можно спрятать вашу сеть от фильтра TTL провайдера.

/ip firewall mangle add action=change-ttl chain=prerouting new-ttl=increment:1 passthrough=yes 

Это правило поднимите на самый верх.

Блокируем порты спамеров

  1. Блокируем порты спамеров и зараженных троянами-вирусами компов.
    / ip firewall filter
    add chain=forward prot=tcp dst-port=25 src-address-list=spammer act=drop
    
  2. Добавляем в address-list=spammer наших спамеров на 30 дней :
    / ip firewall filter
    add chain=forward prot=tcp dst-port=25 connection-limit=30,32 limit=50,5 src-address-list=!spammer action=add-src-to-address-listaddress-list=spammer address-list-timeout=30d
    

    При большом количестве соединиений на 25 порт - IP юзера заносится в *address-list=spammer. А Этот address-list=spammer - блокируется файрволлом.

Настройка Static DNS

Static DNS нужен чтобы к любому компу в сети обращаться не по IP адресу, а по придуманному имени. Что очень удобно. IP→DNS→Static DNS→[+] Добавляем пару к примеру 192.168.0.1 - myrouter.net Теперь на наш роутер можно заходить по myrouter.net

Кешируем с помощью Web-Proxy.

Кеширование используется для:

  1. Ускорения интернет. Особенно Эффективно при медленном интернете. Часто запрашиваемые файлы хранятся на флеш-памяти или винте. При повторном запросе - эти файлы не закачиваются с интернета, а берутся из кеша Микротика
  2. Для экономии траффика. Хорошо при платном траффике.
  3. Для контроля - кому какие сайты разрешать и пр.

Весь трафик проходит через прокси микротика. На прокси ставиться порт 8080. И затем включается прозрачный прокси.

Редирект на страницу-напоминалку

Очень эффективно не просто отключать пользователей, а напоминать им - почему они отключены!

К примеру у Вас есть комп в сети 192.168.0.10. Там находится Веб-сервер и страница-напоминалка-пополнялка-личный кабинет. Она доступна по адресу 192.168.0.10

Итак 4 шага.

  1. Сначала добавляем в IP→Firewall→Address List - IP всех юзеров с записью ALLOW
  2. /ip firewall nat
    add act=dst-nat ch=dstnat dst-port=80 in-int=LAN1 protocol=tcp src-address-list=!ALLOW   to-addr=192.168.0.10  to-ports=80
    

    Это правило кинуть выше правила srcnat! Все. редирект работает.

  3. Но еще очень желательно 2 правила в IP→Firewall→Filter
    /ip firewall filter
    add act=accept ch=forward   out-int=!LAN1  dst-address=192.168.0.10
    add act=drop ch=forward out-int=!LAN1 src-address-list=!ALLOW 
    

    Эти правила кинуть вниз. Это для полной блокировки любой активности (а не только ВЕБ-серфиннг) юзеров, которые не в ALLOW.
    Затем юзеров - которых нужно перенаправить - просто отключаем крестом в Address List, вручную или скриптом при отрицательном баллансе из биллинга. Один клик и готово.
    Теперь, когда юзер наберет anysite.com - он автоматом попадет на Вашу странцу. Но когда он наберет - anysite.com/anypage.php - он увидит ошибку, а не Вашу страницу!
    Поэтому:

  4. На вебсервере в корне страницы-напоминалки добавляем файл .htaccess с редиректом :
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* /index.html [L,QSA,NC,R=302]
    

    где - /index.html - это Ваша страница напоминалка.

  5. Или вариант №2 - сделать страницу 404.php и включить ее в .htaccess. А в 404.php сделать include вашей страницы напоминалки. Или просто скопировать ее содержимое.

Все. Теперь куда бы пользователь не зашел - он всегда увидит Вашу страницу. Вот так все просто.

Шейпим торренты

Торренты задрали? Тогда Вам сюда. Данный метод режет все торренты. И шифрованные в том числе. И он нересурсоемкий для Микротика. Хотя его можно еще ускорить. Знаю как. Но не скажу

p2p=all-p2p- работает только для редких нешифрованных торрент-клиентов. Маркируем входящие торрент-пакеты по размерам, портам и протоколам:

/ip firewall mangle 
add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent p2p=all-p2p passthrough=no
add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent passthrough=no protocol=tcp  src-port=1024-65535 packet-size=576 
add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent passthrough=no protocol=tcp  src-port=1024-65535 packet-size=1240
add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent passthrough=no protocol=tcp  src-port=1024-65535 packet-size=1330
add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent passthrough=no protocol=tcp  src-port=1024-65535 packet-size=1400
add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent passthrough=no protocol=tcp  src-port=1024-65535 packet-size=1460

add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent passthrough=no protocol=udp src-port=1024-65535 packet-size=398 
add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent passthrough=no protocol=udp src-port=1024-65535 packet-size=748 
add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent passthrough=no protocol=udp src-port=1024-65535 packet-size=1430
add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent passthrough=no protocol=udp src-port=1024-65535 packet-size=1448
add act=mark-packet ch=prerouting in-i=WAN1 new-packet-mark=Torrent passthrough=no protocol=udp src-port=1024-65535 packet-size=1466

Если нужна обработка нижележащих цепочек - Укажите всюду passthrough=yes. Далее можно добавить новое правило Torrent-5M в раздел Queue Tree в родителя Download. Указав Packet Marks - Torrent. И желаемую скорость 5M. 5M - это скорость для каждого или для всех в сумме, в зависимости от выбора Queue Type в PCQ Dst. Address Mask 32 или 24.

Или добавить одно правило на самый верх в Simple Queue. Указав Packet Marks - Torrent. И желаемую Tx скорость 50M. 50M - это скорость общая на всех торрентов-клиентов. В Simple Queue можно каждому указать скорость на торрент в отдельности. Т.е. для каждого IP создать дополнительную запись. Эта запись должна быть выше основной записи IP клиента.

Или уже решайте на свое усмотрение, что с этими маркированными пакетами делать. Учитывайте, что сюда также могут иногда попасть пакеты из онлайн игр…

Других более эффективных методов маркировки торрентов нету. По крайней мере я не знаю таких…

nebolshaja_vvodnaja_po_setjam_v_primenenii_k_mikrotik.txt · Последние изменения: 2013/10/28 13:16 (внешнее изменение)
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика