Mikrotik. Типичные проблемы и их решения

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

Это нужно знать наизусть. Иначе можно многое напутать…

Представьте компьютер с двумя сетевыми картами. Будем называть его ШЛЮЗ.

В одну карту входит интернет. Со второй выходит к свитчу.

А к свитчу подключены другие компы.

За этими компьютерами люди в интернете выходят.

Так вот. Трафик идущий от людей в интернет и обратно – это для шлюза транзитный-проходящий трафик FORWARD

Это левая диаграмма. Как раз наш случай с Микротик.

А если на самом шлюзе запускаются браузер, почта и пр.

То это уже Входящий и Исходящий трафик для шлюза. Не транзитный. INPUT и OUTPUT.

Т.к. конечная точка всех пакетов – это сам шлюз, а не компы за шлюзом.

Это левая и правая диаграмма, только без центрального блока FORWARD.

В Микротике правая практически никогда не задействована.

Так что про INPUT-OUTPUT забудьте.

Только для блокировки входящих пакетов.

Netfilter-diagram-rus

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 -> сеть

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

Здесь создаются блокирующие и разрешающие правила.

Если записей никаких нет – то все разрешено.

Порядок записей имеет значение.

Проверка правил происходит сверху вниз.

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

Есть 2 варианта.

Мягкий – Добавлять только запрещающие правила. Все остальное разрешать.

Жесткий – поставить запрещающее правило на все. А сверху добавлять разрешающие.

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

Важно!

1. Никогда не пытайтесь одним правилом блокировать входящие и исходящие пакеты одновременно.

Это ошибка.

Просто создайте при необходимости 2 правила – на входящие и исходящие пакеты.

А лучше блокировать только исходящие пакеты еще на взлете. Входящих пакетов само собой уже не будет.

Да и Роутер разгрузится от лишнего входящего трафика.

2. Есть 2 типа пакетов – входящие и исходящие.

Важно! Src.Address и Dst.Address в правилах меняются местами. В зависимости от направления движения пакета.

Входящие – это из интернета к нам.

Src.Address – это интернет-адрес отправителя (сервера в интернете).

Dst.Address – это интернет-адрес Микротика (получателя). Если это правило в цепочке PreRouting. или

Dst.Address – это локальный адрес клиента (получателя). Если это правило в цепочке Forward или PostRouting.

Исходящие – это от нас в интернет.

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.
3. 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.

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

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

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

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

Кроме того, правила Mangle – сами могут добавлять IP адреса в определенный Address List.

Например, добавить в Address List “ICQ” – те IP, которые пользуются ICQ.

Чрезвычайно удобная штука!

6. Нарезаем скорость. Simple Queues.

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

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

Добавляем 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 – Весь диапазон, не попавший в верхние правила.

По функциональности он гораздо шире. Этот шейпер срабатывает раньше 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.

Все кто в Адрес лист 1M – получат скорость 1M

Все кто в Адрес лист 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).

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

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

Графики включаются в Tools – Graphing.

Просто добавьте нужные позиции.

Посмотреть графики можно на Веб-странице Микротика.

При перезагрузке графики сохраняются.

При прошивки графики сбрасываются.
9. IPTV настройка.

Скачиваем версию пакетов под ваш Микротик

Вместо 5.16 ставим – вашу версию Router OS.

Важно! Версия пакета должна совпадать с версией вашей Router OS!

Распаковываем. Перетаскиваем multicast…npk на WinBox.

Перезагружаем.

Далее идем в System-Packages. Там должен быть multicast пакет.

Идем в 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 включить

mikrotik IPTV2

10. Резервирование 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 – можно отключить

11. Балансировка 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 – можно отключить

Важно! При каналах сильно отличающихся по скорости он мало эффективен.

В таком случае советую использовать резервирование каналов по п. 6.10.

Слабый канал погоды все-равно не сделает. А скоростному мешать будет.

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

Открываем 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 – удалите

13. Определяем у кого стоят роутеры по 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

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

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

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 – блокируется фаерволом.

Вы же не хотите, что бы Ваш провайдер Вам закрывал порты? Или хотите?

15. Настройка Static DNS.

Static DNS
нужен чтобы к любому компу в сети обращаться не по IP адресу, а по придуманному имени. Что очень удобно.

IP – DNS – Static DNS – [+] Добавляем пару к примеру IP-адрес – и DNS-имя. 192.168.0.1 – myrouter.net

Таперь на наш роутер можно заходить по myrouter.net

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

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

1. Ускорения интернет. Особенно Эффективно при медленном интернете.

Часто запрашиваемые файлы хранятся на флеш-памяти или винте.

При повторном запросе – эти файлы не закачиваются с интернета, а берутся из кеша Микротика

2. Для экономии траффика. Хорошо при платном траффике.

3. Для котроля – кому какие сайты разрешать и пр.

Весь трафик проходит через прокси микротика.

На прокси ставиться порт 8080.

И затем включается прозрачный прокси.

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

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

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

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 – это Ваша страница напоминалка.

Или вариант №2 – сделать страницу 404.php и включить ее в .htaccess.

А в 404.php сделать include вашей страницы напоминалки.

Или просто скопировать ее содержимое.

Все.

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

Вот так все просто.

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

Данный метод режет все торренты. И шифрованные в том числе. И он не ресурсоёмкий для Микротика.

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 клиента.

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

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