Ребята, уже давно пытаюсь настроить хороший QoS на своём роутере Mikrotik дома и на работе. Я понимаю, что Mikrotik может показаться страшным, когда ты с ним только знакомишься, и иногда просто хочется быстро всё завести, а вокруг — только: читай это, читай то, да ещё времени уйдёт куча. Поэтому, после множества туториалов и прочтения, я придумал ОЧЕНЬ простой QoS, который отлично работает, легко настраивается и хорошо подходит для разных конфигураций. Решил поделиться, чтобы те, кто хочет потратить всего 5 минут на копирование двух небольших кусочков кода и тут же наслаждаться работающим QoS, могли это сделать. Это мой первый образовательный пост, так что не судите строго (обычно я только вопросы задаю). Если хотите сразу всё запустить, следуйте шагам ниже.
Все команды вводятся в терминале. (Обратите внимание: при копировании каждая функция должна быть на одной строке, если переносить на вторую — не сработает правильно. Знаю, что на форуме такое бывает. Если что, приложу .txt с кодом.) На моём экране всё нормально.
Шаг 1: введите:
/ip firewall mangle
Шаг 2: скопируйте и вставьте (используйте правый клик — копировать и правый клик — вставить, а не Ctrl+C + Ctrl+V):
add chain=prerouting action=mark-packet new-packet-mark=http-total passthrough=yes protocol=tcp port=80
add chain=prerouting action=mark-packet new-packet-mark=https-total passthrough=yes protocol=tcp port=443
add chain=prerouting action=mark-packet new-packet-mark=voip-sip-total passthrough=yes dscp=26
add chain=prerouting action=mark-packet new-packet-mark=icmp-total passthrough=yes protocol=icmp
add chain=prerouting action=mark-packet new-packet-mark=voip-rtp-total passthrough=yes dscp=46
add chain=prerouting action=mark-packet new-packet-mark=smtp-tx passthrough=yes protocol=tcp dst-port=25
add chain=prerouting action=mark-packet new-packet-mark=imap-rx passthrough=yes protocol=tcp src-port=143
add chain=prerouting action=mark-packet new-packet-mark=imap-rx passthrough=yes protocol=udp src-port=143
add chain=prerouting action=mark-packet new-packet-mark=imap-rx passthrough=yes protocol=tcp src-port=993
add chain=prerouting action=mark-packet new-packet-mark=pop3-rx passthrough=yes protocol=tcp src-port=995
add chain=prerouting action=mark-packet new-packet-mark=smtp-tx passthrough=yes protocol=tcp dst-port=465
add chain=prerouting action=mark-packet new-packet-mark=voip-sip-total passthrough=yes connection-type=sip
add chain=prerouting action=mark-packet new-packet-mark=p2p_tota passthrough=yes p2p=all-p2p
add chain=prerouting action=mark-packet new-packet-mark=pop3-rx passthrough=yes protocol=tcp src-port=110
add chain=prerouting action=mark-packet new-packet-mark=imap-rx passthrough=yes protocol=tcp src-port=585
add chain=prerouting action=mark-packet new-packet-mark=smtp-tx passthrough=yes protocol=tcp dst-port=465
add chain=prerouting action=mark-packet new-packet-mark=dns_total passthrough=yes protocol=tcp port=53
add chain=prerouting action=mark-packet new-packet-mark=dns_total passthrough=yes protocol=udp port=53
add chain=prerouting action=mark-packet new-packet-mark=ftp_total passthrough=yes protocol=tcp port=20,21
add chain=prerouting action=mark-packet new-packet-mark=rdp_total passthrough=yes protocol=tcp port=3389
add chain=prerouting action=mark-packet new-packet-mark=ssh_total passthrough=yes protocol=tcp port=22
Шаг 3: введите:
/queue tree
Шаг 4: скопируйте и вставьте (тоже через правый клик):
add name="Global_In" parent=global-in limit-at=0 priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="pop3-rx" parent=Global_In packet-mark=pop3-rx limit-at=0 queue=default priority=4 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="imap-rx" parent=Global_In packet-mark=imap-rx limit-at=0 queue=default priority=4 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="Globall_Out" parent=global-out packet-mark=smtp-tx limit-at=0 priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="Global_Total" parent=global-total limit-at=0 priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="voip-rtp-total" parent=Global_Total packet-mark=voip-rtp-total limit-at=0 queue=default priority=1 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="icmp-total" parent=Global_Total packet-mark=icmp-total limit-at=0 queue=default priority=4 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="http-total" parent=Global_Total packet-mark=http-total limit-at=0 queue=default priority=3 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="https-total" parent=Global_Total packet-mark=https-total limit-at=0 queue=default priority=3 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="voip_sip_total" parent=Global_Total packet-mark=voip-sip-total limit-at=0 queue=default priority=1 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="smtp_tx" parent=Globall_Out packet-mark=smtp-tx limit-at=0 queue=default priority=7 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="p2p_total" parent=Global_Total packet-mark=p2p_total limit-at=0 queue=default priority=7 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="dns_total" parent=Global_Total packet-mark=dns_total limit-at=0 queue=default priority=2 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="ftp_total" parent=Global_Total packet-mark=ftp_total limit-at=0 queue=default priority=5 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="rdp_total" parent=Global_Total packet-mark=rdp_total limit-at=0 queue=default priority=2 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="ssh_total" parent=Global_Total packet-mark=ssh_total limit-at=0 queue=default priority=2 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
Вот и всё, теперь должно просто работать (УРА!). Для обычного NAT-роутера с маскарадингом, и при условии, что ваши другие правила mangle не конфликтуют с этими.
Извиняюсь, но комментарии в правилах mangle не копируются, поэтому код выглядит немного грязно. Приоритеты я настроил под себя, но вы легко можете их изменить: откройте очередь, очередь дерева в Winbox, кликайте по каждой очереди и меняйте приоритет. (8 — самый низкий, 1 — самый высокий).
Обновления будут — я буду выкладывать по мере новых идей и улучшений, но цель была дать всем простой базовый пример, с которого можно стартовать. Экспериментируйте и добавляйте что хотите. Если чувствуете, что идентификация QoS недостаточно точная, просто добавляйте новые правила mangle с тем же маркером пакета, но с разными классификаторами — например, у вас порт 25 для smtp с packet mark: smtp_total, и если хотите добавить ещё порты или классифицировать по IP-адресам — создаёте правило с тем же packet mark: smtp_total. Так весь smtp-трафик будет иметь одинаковый приоритет. (Если нужно, могу объяснить подробнее.)
Все команды вводятся в терминале. (Обратите внимание: при копировании каждая функция должна быть на одной строке, если переносить на вторую — не сработает правильно. Знаю, что на форуме такое бывает. Если что, приложу .txt с кодом.) На моём экране всё нормально.
Шаг 1: введите:
/ip firewall mangle
Шаг 2: скопируйте и вставьте (используйте правый клик — копировать и правый клик — вставить, а не Ctrl+C + Ctrl+V):
add chain=prerouting action=mark-packet new-packet-mark=http-total passthrough=yes protocol=tcp port=80
add chain=prerouting action=mark-packet new-packet-mark=https-total passthrough=yes protocol=tcp port=443
add chain=prerouting action=mark-packet new-packet-mark=voip-sip-total passthrough=yes dscp=26
add chain=prerouting action=mark-packet new-packet-mark=icmp-total passthrough=yes protocol=icmp
add chain=prerouting action=mark-packet new-packet-mark=voip-rtp-total passthrough=yes dscp=46
add chain=prerouting action=mark-packet new-packet-mark=smtp-tx passthrough=yes protocol=tcp dst-port=25
add chain=prerouting action=mark-packet new-packet-mark=imap-rx passthrough=yes protocol=tcp src-port=143
add chain=prerouting action=mark-packet new-packet-mark=imap-rx passthrough=yes protocol=udp src-port=143
add chain=prerouting action=mark-packet new-packet-mark=imap-rx passthrough=yes protocol=tcp src-port=993
add chain=prerouting action=mark-packet new-packet-mark=pop3-rx passthrough=yes protocol=tcp src-port=995
add chain=prerouting action=mark-packet new-packet-mark=smtp-tx passthrough=yes protocol=tcp dst-port=465
add chain=prerouting action=mark-packet new-packet-mark=voip-sip-total passthrough=yes connection-type=sip
add chain=prerouting action=mark-packet new-packet-mark=p2p_tota passthrough=yes p2p=all-p2p
add chain=prerouting action=mark-packet new-packet-mark=pop3-rx passthrough=yes protocol=tcp src-port=110
add chain=prerouting action=mark-packet new-packet-mark=imap-rx passthrough=yes protocol=tcp src-port=585
add chain=prerouting action=mark-packet new-packet-mark=smtp-tx passthrough=yes protocol=tcp dst-port=465
add chain=prerouting action=mark-packet new-packet-mark=dns_total passthrough=yes protocol=tcp port=53
add chain=prerouting action=mark-packet new-packet-mark=dns_total passthrough=yes protocol=udp port=53
add chain=prerouting action=mark-packet new-packet-mark=ftp_total passthrough=yes protocol=tcp port=20,21
add chain=prerouting action=mark-packet new-packet-mark=rdp_total passthrough=yes protocol=tcp port=3389
add chain=prerouting action=mark-packet new-packet-mark=ssh_total passthrough=yes protocol=tcp port=22
Шаг 3: введите:
/queue tree
Шаг 4: скопируйте и вставьте (тоже через правый клик):
add name="Global_In" parent=global-in limit-at=0 priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="pop3-rx" parent=Global_In packet-mark=pop3-rx limit-at=0 queue=default priority=4 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="imap-rx" parent=Global_In packet-mark=imap-rx limit-at=0 queue=default priority=4 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="Globall_Out" parent=global-out packet-mark=smtp-tx limit-at=0 priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="Global_Total" parent=global-total limit-at=0 priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="voip-rtp-total" parent=Global_Total packet-mark=voip-rtp-total limit-at=0 queue=default priority=1 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="icmp-total" parent=Global_Total packet-mark=icmp-total limit-at=0 queue=default priority=4 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="http-total" parent=Global_Total packet-mark=http-total limit-at=0 queue=default priority=3 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="https-total" parent=Global_Total packet-mark=https-total limit-at=0 queue=default priority=3 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="voip_sip_total" parent=Global_Total packet-mark=voip-sip-total limit-at=0 queue=default priority=1 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="smtp_tx" parent=Globall_Out packet-mark=smtp-tx limit-at=0 queue=default priority=7 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="p2p_total" parent=Global_Total packet-mark=p2p_total limit-at=0 queue=default priority=7 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="dns_total" parent=Global_Total packet-mark=dns_total limit-at=0 queue=default priority=2 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="ftp_total" parent=Global_Total packet-mark=ftp_total limit-at=0 queue=default priority=5 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="rdp_total" parent=Global_Total packet-mark=rdp_total limit-at=0 queue=default priority=2 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="ssh_total" parent=Global_Total packet-mark=ssh_total limit-at=0 queue=default priority=2 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
Вот и всё, теперь должно просто работать (УРА!). Для обычного NAT-роутера с маскарадингом, и при условии, что ваши другие правила mangle не конфликтуют с этими.
Извиняюсь, но комментарии в правилах mangle не копируются, поэтому код выглядит немного грязно. Приоритеты я настроил под себя, но вы легко можете их изменить: откройте очередь, очередь дерева в Winbox, кликайте по каждой очереди и меняйте приоритет. (8 — самый низкий, 1 — самый высокий).
Обновления будут — я буду выкладывать по мере новых идей и улучшений, но цель была дать всем простой базовый пример, с которого можно стартовать. Экспериментируйте и добавляйте что хотите. Если чувствуете, что идентификация QoS недостаточно точная, просто добавляйте новые правила mangle с тем же маркером пакета, но с разными классификаторами — например, у вас порт 25 для smtp с packet mark: smtp_total, и если хотите добавить ещё порты или классифицировать по IP-адресам — создаёте правило с тем же packet mark: smtp_total. Так весь smtp-трафик будет иметь одинаковый приоритет. (Если нужно, могу объяснить подробнее.)