Всем привет, я новичок в Mikrotik. Пользуюсь Chat GPT, чтобы научиться настраивать Mikrotik-роутеры. Это здорово, потому что можно задавать бесконечное количество вопросов, и он не злюсь и не смеётся надо мной XD. В общем, после нескольких дней изучения написания скриптов и понимания, как правила влияют на сеть, мы сделали такой скрипт, который приведён ниже. Цель скрипта — приоритизировать игровой трафик на PS5. Это важно для моего сына, чтобы у него дома был низкий пинг, он, кстати, очень хорош и участвует во множестве турниров, так что я полностью поддерживаю его. Значит, стараемся держать пинг ниже 10 мс насколько возможно.
Этот пост чтобы узнать мнение экспертов по Mikrotik — есть ли ошибки? противоречивые правила? И, возможно, самое важное — это самый правильный способ сделать такую приоритизацию?
Отредактировано [через 2 дня использования]: сталкиваюсь с проблемой в строке “add name=“GAMING_D” parent=“MASTER_DOWN” packet-mark=“GAMING” queue=default limit-at=75M max-limit=225M priority=1”. Все остальные правила очередей показывают трафик, а Gaming down постоянно 0. Интересно, может, где-то не хватает правила mangle для этой очереди?
Часть скрипта, сгенерированная частично AI:
/ip firewall mangle
# DNS-запросы. Отмечаем в двух местах, так как DNS отправляется и самим роутером.
add chain=prerouting action=mark-connection protocol=udp port=53 connection-state=new new-connection-mark="DNS" comment="DNS"
add chain=postrouting action=mark-connection protocol=udp port=53 connection-state=new new-connection-mark="DNS"
add chain=postrouting action=mark-packet passthrough=no connection-mark="DNS" new-packet-mark="DNS"
# Отмечаем весь VoIP трафик (настройте порты и протоколы под себя).
add chain=prerouting action=mark-connection protocol=tcp dscp=46 new-connection-mark="VOIP" comment="VOIP"
add chain=prerouting action=mark-connection protocol=udp dscp=46 new-connection-mark="VOIP"
add chain=prerouting action=mark-packet passthrough=no connection-mark="VOIP" new-packet-mark="VOIP"
# Отмечаем игровой трафик (настройте порты под вашу PS5).
add chain=prerouting action=mark-connection protocol=udp port=3074,9308 new-connection-mark="GAMING" comment="Gaming"
add chain=prerouting action=mark-packet passthrough=no connection-mark="GAMING" new-packet-mark="GAMING"
# Ответы на пинг. Отмечаем в двух местах, так как ICMP тоже отправляется роутером.
add chain=prerouting action=mark-connection protocol=icmp connection-state=new new-connection-mark="ICMP" comment="ICMP"
add chain=postrouting action=mark-connection protocol=icmp connection-state=new new-connection-mark="ICMP"
add chain=postrouting action=mark-packet passthrough=no connection-mark="ICMP" new-packet-mark="ICMP"
# Отмечаем всё остальное, что не помечено.
add chain=prerouting action=mark-connection connection-mark=no-mark new-connection-mark="OTHER" comment="OTHER"
add chain=prerouting action=mark-packet passthrough=no connection-mark="OTHER" new-packet-mark="OTHER"
/ip firewall filter
add chain=input action=accept connection-state=established,related comment="Разрешить установленные/связанные соединения"
add chain=input action=drop in-interface=ether1 comment="Блокировать некорректные соединения на WAN интерфейсе"
add chain=input action=accept in-interface=ether1 dst-port=53 protocol=udp comment="Разрешить DNS UDP"
add chain=input action=accept in-interface=ether1 dst-port=53 protocol=tcp comment="Разрешить DNS TCP"
add chain=input action=accept in-interface=ether1 dst-port=3074,9308 protocol=udp comment="Разрешить игровой UDP трафик (подстройте порты)"
add chain=input action=accept in-interface=ether1 protocol=icmp comment="Разрешить ICMP"
add chain=input action=accept in-interface=ether1 dst-port=80,443 protocol=tcp comment="Разрешить HTTP/HTTPS"
add chain=input action=drop in-interface=ether1 comment="Блокировать весь остальной входящий трафик на WAN интерфейсе"
add chain=forward action=fasttrack-connection connection-mark=GAMING comment="Фасттрек для игрового трафика"
add chain=forward action=fasttrack-connection connection-mark=DNS comment="Фасттрек для DNS"
add chain=forward action=accept connection-state=established,related comment="Разрешить установленные/связанные соединения"
add chain=forward action=accept connection-state=new in-interface=ether1 comment="Разрешить новые соединения из LAN в WAN"
add chain=forward action=drop connection-state=invalid comment="Блокировать некорректные соединения"
add chain=forward action=accept in-interface=bridge comment="Разрешить трафик из LAN в WAN"
add chain=forward action=drop comment="Блокировать весь остальной трафик из LAN в WAN"
/queue tree
add name="MASTER_UP" parent="ether1" queue=default max-limit=90M priority=8
add name="MASTER_DOWN" parent="ether2" queue=default max-limit=900M priority=8
# Приоритизация игрового трафика
add name="GAMING_U" parent="MASTER_UP" packet-mark="GAMING" queue=default limit-at=7500k max-limit=22500k priority=1
add name="GAMING_D" parent="MASTER_DOWN" packet-mark="GAMING" queue=default limit-at=75M max-limit=225M priority=1
# Приоритизация другого важного трафика
add name="VOIP_U" parent="MASTER_UP" packet-mark="VOIP" queue=default limit-at=7500k max-limit=22500k priority=2
add name="VOIP_D" parent="MASTER_DOWN" packet-mark="VOIP" queue=default limit-at=75M max-limit=225M priority=2
add name="DNS_U" parent="MASTER_UP" packet-mark="DNS" queue=default limit-at=7500k max-limit=22500k priority=3
add name="DNS_D" parent="MASTER_DOWN" packet-mark="DNS" queue=default limit-at=75M max-limit=225M priority=3
add name="ICMP_U" parent="MASTER_UP" packet-mark="ICMP" queue=default limit-at=7500k max-limit=22500k priority=4
add name="ICMP_D" parent="MASTER_DOWN" packet-mark="ICMP" queue=default limit-at=75M max-limit=225M priority=4
# Всё остальное с более низким приоритетом
add name="OTHER_U" parent="MASTER_UP" packet-mark="OTHER" queue=default limit-at=7500k max-limit=22500k priority=5
add name="OTHER_D" parent="MASTER_DOWN" packet-mark="OTHER" queue=default limit-at=75M max-limit=225M priority=5
Тест на bufferbloat: (имейте в виду, я не уверен, как проверить, влияет ли скрипт непосредственно на bufferbloat на PS5. Этот тест сделан на Mac через Ethernet, и Mac не оптимизирован в очередях, так что результаты могут быть не очень показательными)
Спасибо, что прочитали :]
Bufferbloat and Internet Speed Test - Waveform.pdf (235 KB)
Этот пост чтобы узнать мнение экспертов по Mikrotik — есть ли ошибки? противоречивые правила? И, возможно, самое важное — это самый правильный способ сделать такую приоритизацию?
Отредактировано [через 2 дня использования]: сталкиваюсь с проблемой в строке “add name=“GAMING_D” parent=“MASTER_DOWN” packet-mark=“GAMING” queue=default limit-at=75M max-limit=225M priority=1”. Все остальные правила очередей показывают трафик, а Gaming down постоянно 0. Интересно, может, где-то не хватает правила mangle для этой очереди?
Часть скрипта, сгенерированная частично AI:
/ip firewall mangle
# DNS-запросы. Отмечаем в двух местах, так как DNS отправляется и самим роутером.
add chain=prerouting action=mark-connection protocol=udp port=53 connection-state=new new-connection-mark="DNS" comment="DNS"
add chain=postrouting action=mark-connection protocol=udp port=53 connection-state=new new-connection-mark="DNS"
add chain=postrouting action=mark-packet passthrough=no connection-mark="DNS" new-packet-mark="DNS"
# Отмечаем весь VoIP трафик (настройте порты и протоколы под себя).
add chain=prerouting action=mark-connection protocol=tcp dscp=46 new-connection-mark="VOIP" comment="VOIP"
add chain=prerouting action=mark-connection protocol=udp dscp=46 new-connection-mark="VOIP"
add chain=prerouting action=mark-packet passthrough=no connection-mark="VOIP" new-packet-mark="VOIP"
# Отмечаем игровой трафик (настройте порты под вашу PS5).
add chain=prerouting action=mark-connection protocol=udp port=3074,9308 new-connection-mark="GAMING" comment="Gaming"
add chain=prerouting action=mark-packet passthrough=no connection-mark="GAMING" new-packet-mark="GAMING"
# Ответы на пинг. Отмечаем в двух местах, так как ICMP тоже отправляется роутером.
add chain=prerouting action=mark-connection protocol=icmp connection-state=new new-connection-mark="ICMP" comment="ICMP"
add chain=postrouting action=mark-connection protocol=icmp connection-state=new new-connection-mark="ICMP"
add chain=postrouting action=mark-packet passthrough=no connection-mark="ICMP" new-packet-mark="ICMP"
# Отмечаем всё остальное, что не помечено.
add chain=prerouting action=mark-connection connection-mark=no-mark new-connection-mark="OTHER" comment="OTHER"
add chain=prerouting action=mark-packet passthrough=no connection-mark="OTHER" new-packet-mark="OTHER"
/ip firewall filter
add chain=input action=accept connection-state=established,related comment="Разрешить установленные/связанные соединения"
add chain=input action=drop in-interface=ether1 comment="Блокировать некорректные соединения на WAN интерфейсе"
add chain=input action=accept in-interface=ether1 dst-port=53 protocol=udp comment="Разрешить DNS UDP"
add chain=input action=accept in-interface=ether1 dst-port=53 protocol=tcp comment="Разрешить DNS TCP"
add chain=input action=accept in-interface=ether1 dst-port=3074,9308 protocol=udp comment="Разрешить игровой UDP трафик (подстройте порты)"
add chain=input action=accept in-interface=ether1 protocol=icmp comment="Разрешить ICMP"
add chain=input action=accept in-interface=ether1 dst-port=80,443 protocol=tcp comment="Разрешить HTTP/HTTPS"
add chain=input action=drop in-interface=ether1 comment="Блокировать весь остальной входящий трафик на WAN интерфейсе"
add chain=forward action=fasttrack-connection connection-mark=GAMING comment="Фасттрек для игрового трафика"
add chain=forward action=fasttrack-connection connection-mark=DNS comment="Фасттрек для DNS"
add chain=forward action=accept connection-state=established,related comment="Разрешить установленные/связанные соединения"
add chain=forward action=accept connection-state=new in-interface=ether1 comment="Разрешить новые соединения из LAN в WAN"
add chain=forward action=drop connection-state=invalid comment="Блокировать некорректные соединения"
add chain=forward action=accept in-interface=bridge comment="Разрешить трафик из LAN в WAN"
add chain=forward action=drop comment="Блокировать весь остальной трафик из LAN в WAN"
/queue tree
add name="MASTER_UP" parent="ether1" queue=default max-limit=90M priority=8
add name="MASTER_DOWN" parent="ether2" queue=default max-limit=900M priority=8
# Приоритизация игрового трафика
add name="GAMING_U" parent="MASTER_UP" packet-mark="GAMING" queue=default limit-at=7500k max-limit=22500k priority=1
add name="GAMING_D" parent="MASTER_DOWN" packet-mark="GAMING" queue=default limit-at=75M max-limit=225M priority=1
# Приоритизация другого важного трафика
add name="VOIP_U" parent="MASTER_UP" packet-mark="VOIP" queue=default limit-at=7500k max-limit=22500k priority=2
add name="VOIP_D" parent="MASTER_DOWN" packet-mark="VOIP" queue=default limit-at=75M max-limit=225M priority=2
add name="DNS_U" parent="MASTER_UP" packet-mark="DNS" queue=default limit-at=7500k max-limit=22500k priority=3
add name="DNS_D" parent="MASTER_DOWN" packet-mark="DNS" queue=default limit-at=75M max-limit=225M priority=3
add name="ICMP_U" parent="MASTER_UP" packet-mark="ICMP" queue=default limit-at=7500k max-limit=22500k priority=4
add name="ICMP_D" parent="MASTER_DOWN" packet-mark="ICMP" queue=default limit-at=75M max-limit=225M priority=4
# Всё остальное с более низким приоритетом
add name="OTHER_U" parent="MASTER_UP" packet-mark="OTHER" queue=default limit-at=7500k max-limit=22500k priority=5
add name="OTHER_D" parent="MASTER_DOWN" packet-mark="OTHER" queue=default limit-at=75M max-limit=225M priority=5
Тест на bufferbloat: (имейте в виду, я не уверен, как проверить, влияет ли скрипт непосредственно на bufferbloat на PS5. Этот тест сделан на Mac через Ethernet, и Mac не оптимизирован в очередях, так что результаты могут быть не очень показательными)
Спасибо, что прочитали :]
Bufferbloat and Internet Speed Test - Waveform.pdf (235 KB)
