[РЕШЕНО] mikrotik проблема с MTU
Проблема — перестали загружаться полностью сайты, а именно флеш, части скриптов и картинки. Я бы даже сказал что загружается но не отображается. На загрузку например youtube (до полного отображения страницы) необходимо около 5 минут.
Из ярких примеров: сайт мегафона и госуслуги
Administrator
Сообщений: 728 Баллов: 8901 Рейтинг: 0 Регистрация: 09.02.2011
05.10.2021 21:16:12
Actual MTU ожидается 1500 и если у вас меньше, то могут начинаться проблемы.
/ip firewall mangle
add chain=forward action=change-mss new-mss=clamp-to-pmtu passthrough=yes tcp-flags=syn protocol=tcp
—clamp-mss-to-pmtu
Автоматическая установка значения MSS в (path_MTU — 40 для IPv4; -60 для IPv6).
Для данной ситуации лучше всего подойдет опция –clamp-mss-to-pmtu, которая автоматически установит минимальный MSS на все транзитные пакеты.
Тестирование MTU
Используя это можно протестировать
прохождение пакетов заданного размера (MTU) (по умолчанию 1500)
без фрагментации до целевого адреса.
●Linux:
ping -M do -s
●RouterOS:
:ping do-not-fragment size=
●Windows:
ping -f -l
Проблемы MTU и MSS. Оптимизация работы VPN
Услуги Системного Администратора — Работаю только с Юр. Лицами по договору обслуживания.
Administrator
Сообщений: 728 Баллов: 8901 Рейтинг: 0 Регистрация: 09.02.2011
02.12.2021 16:26:17
Дополню про тунель l2tp по умолчанию mtu 1450, но для BCP нужен чтобы он был не меньше 1500, для этого можно использовать Multilink PPP
«Multilink PPP (MP) is supported in order to provide MRRU (the ability to transmit full-sized 1500 and larger packets) and bridging over PPP links (using Bridge Control Protocol (BCP) that allows to send raw Ethernet frames over PPP links). This way it is possible to setup bridging without EoIP. The bridge should either have an administratively set MAC address or an Ethernet-like interface in it, as PPP links do not have MAC addresses.»
С стороны сервера в настройках L2TP ставим MRRU 1500 и аналогично делаем с стороны клиента. Когда необходимо больше 1500 добиться уменьшаем MTU и MRU до 1400, а MRRU 1600
Если клиент WINDOWS то также можно включить MULTILINK через настройки соединения options -> ppp Settings.. и там multilin for single link , enable software compression.
Провайдеры и MTU/MSS/PMTU
Значит нужен мне второй канал связи, да этак мегабит 300 в секунду. В моём городе немного провайдеров, поэтому выбрать не дали и пришлось подключаться к WiFire (он же NetByNet, MegaFon и так далее). Подключился, потестил, 300 мегабит, балдеж. Решил я значит почитать что нового на своем любимом Хабре и опа: он не открывается, но охотно пингуется.
Диагностика
Ну думаю: что-то тут не так. Сетевое у меня Mikrotik, возможностей уйма, пойду искать причину на своей стороне. Лезу в логи и вижу как посыпался DoH (РКН, приветик) и крайне удивляюсь этому. решил временно отрубить DoH и дать 1.1.1.1. Ситуация не изменилась. Начал резолвить адреса хотя бы чего-нибудь, все через раз. Решил прокинуть трейс до Хабра и смотрю на «потяряшки». Думаю дай звякну в поддержку, вдруг умное чего скажут. Те репу почесали, сказали что не видят мою сеть за роутером (nat >> forward >> change ttl >>+1 😀) и изобразили что-то вроде «Мы ХЗ».
Начал копать дальше. Вспомнил всю балду, которую знаю о пакетах и тут осенило.
Что такое MTU и MSS?
MTU (англ. maximum transmission unit) означает максимальный размер полезного блока данных одного пакета (англ. payload), который может быть передан протоколом без фрагментации.
MSS (англ. Maximum segment size) является параметром протокола TCP и определяет максимальный размер полезного блока данных в байтах для TCP-пакета (сегмента). Таким образом этот параметр не учитывает длину заголовков TCP и IP.
PMTU (Path MTU) — данный параметр обозначает наименьший MTU среди MTU каналов данных, находящихся между источником и приемником.
Википедии, конечно, спасибо, но если по-русски, то грубо говоря каждый пакет в сети — это бандероль со своими габаритами и вот как раз эти габариты надо менять, подгоняя под оператора связи (ISP). Не долго думая я начал пинговать Хабр с разным размером юнита (MTU) и уткнулся в 1450. Проставил все порты под новый MTU — мало, все равно не открывается. Решил не мучаться и воткнуть динамический MTU. Тут на помощь приходит PMTU. Вообще вот статейка в которой все хорошо объяснено на счет PMTU.
Решение проблемы
Поскольку причина была уже ясна, а время пять утра — решение было достаточно быстрым.
Топаем в консоль и пишем:
/ip firewall mangle add chain=forward action=change-mss new-mss=clamp-to-pmtu passthrough=no tcp-flags=syn protocol=tcp out-interface=*название WAN интерфеса* tcp-mss=1300-65535 log=no
/ip firewall mangle add chain=forward action=change-mss new-mss=clamp-to-pmtu passthrough=no tcp-flags=syn protocol=tcp in-interface=*название WAN интерфеса* tcp-mss=1300-65535 log=no
Разбираем что написали:
/ip firewall mangle — переходим по разделам и выберем что нужно.
add — команда добавления правила
chain=forward — указываем тип цепочки
action=change-mss — указываем что нужно менять MSS
new-mss=clamp-to-pmtu — указываем параметры, что используем PMTU и базируемся на нем
passthrough=no — не преходить к след. правилу пока не выполним это
tcp-flags=syn — выставляем флаг пакета для нумерации, что бы не терялся
protocol=tcp — указываем протокол с которым будем работать
in-interface\out-interface — интерфейсы вход\выход
tcp-mss=1300-65535 — разрешенный диапазон размера пакета
log=no — не логировать
и бинго, наконец-то открывается Хабр и все что мне нужно.
В сетевой части я не «Ас», поэтому сумбурно вышло, да и на Хабре статьи не нашел похожей, может будет кому полезно.
Почему не работает интернет без change-mss?
Пытался выяснить у провайдеров, первый отшил словами что у меня неправильный микротик, второй — пока не ответил, но говорят что кроме меня никто не обращался с подобной проблемой.
Почему я вообще решил обратиться за помощью, и не обращать внимание — потому что телефония 3CX перестала работать, оператор (пчелайн) сказал что мое оборудование отбрасывало пакеты., в результате пришлось перенести телефонию в другой офис, но как-только пропадает там интернет — колл центр начинает возмущаться
- Вопрос задан более трёх лет назад
- 10349 просмотров
2 комментария
Средний 2 комментария

Валентин @vvpoloskin Куратор тега Компьютерные сети
Вот с телефонией вообще не понятно. Она через интернет работает чтоли? Да и странно как-то держать сип-транк в месте, далеком от основных потребителей услуги.

Шамиль @jawakharlal Автор вопроса
Валентин, IP телефония, крутится на виртуалке.
держать в основном офисе не получилось — роутер пакеты не принимал
Решения вопроса 0
Ответы на вопрос 3
Потому что у вас локальная сеть MTU 1500, а pptp/pppoe меньше, добавьте правило
/ip firewall mangle add chain=postrouting action=change-mss new-mss=clamp-to-pmtu passthrough=yes tcp-flags=syn protocol=tcp out-interface=all-ppp log=no
тогда микротик сам будет дробить пакеты правильно
Ответ написан более трёх лет назад
Нравится 7 8 комментариев

Я бы только исправил на «локальная сеть с MTU как минимум 1500», вдруг у него гигабит с поддержкой jumbo frames дома 🙂
Saenara, ну jumbo frames на гигабите дома это уже изврат непонятный. Да и люди использующие его скорее всего знают почему часть сайтов не работает через pptp/pppoe 🙂

Шамиль @jawakharlal Автор вопроса
Wexter, а кто сказал что я использую его дома ?
это на работе.
мне дома 2 провайдера с 2мя белыми IP не нужны
Шамиль, проблему то решили?

Шамиль @jawakharlal Автор вопроса
Wexter, пока еще нет. вернее буду пробовать вечером.

Шамиль @jawakharlal Автор вопроса
Wexter, ваш скрипт работает, сайты открывает..
касательно MTU — в бридже микротика следующее
interface bridge print name="bridge" mtu=auto actual-mtu=1408 l2mtu=1598 arp=proxy-arp arp-timeout=auto protocol-mode=rstp fast-forward=no igmp-snooping=no auto-mac=no ageing-time=5m priority=0x8000 max-message-age=20s forward-delay=15 transmit-hold-count=6 vlan-filtering=no
какая-то большая разница получается между actual-mtu & l2mtu.
поглядел как в других офисах — l2mtu — в среднем 1520

Шамиль @jawakharlal Автор вопроса
и вариант с построутингом встретил только у вас
Шамиль, mtu в бридже равен минимальному mtu портов в нём, видимо у вас в бридже какой-то eoip туннель с mtu 1408 (вероятнее всего поднят поверх какого-нибудь pptp/l2tp/ppp/pppoe)

Linux System Administrator/SRE Engineer
Странное дело у вас, конечно. Могу предложить поиграть с прошивками RouterOS. Может есть какой то баг
Ответ написан более трёх лет назад
Чего же тут странного? Какое-то вышестощее оборудование не хочет фрагментировать пакеты, вы упираетесь в ограничение MTU.

Шамиль @jawakharlal Автор вопроса
бага в прошивках нет.
тянется беда много лет, раньше просто правило автоматически создавалось в манглах (при создании pptp), начиная с версии 6.39 перестало.
Обучение: https://курсы-по-ит.рф/lp-mikrotik-mtcna
Рекомендую выложить конфигурацию целиком.
Ответ написан более трёх лет назад

Шамиль @jawakharlal Автор вопроса
Шамиль, к сожалению, сейчас загрузка увеличилась и внимательно проверить не успеваю. Прежде всего благодарю, что конфигурацию вставили отформатированную. Это заметно облегчает чтение.
То, что обнаружили опишу ниже. Не факт, что это поможет с Вашей проблемой, но тем не менее может оказаться полезным.
1. В Файерволе у Вас жесткий бардак. В цепочке Forward, если не считать правила блокирующего invalid трафик у Вас правила пустышки. Вообще советую внимательно прочесть всю статью.
2. Возможно торопился, но не понял назначение этого правила «add action=masquerade chain=srcnat out-interface=ether1«
3. Рекомендую указать исходящий интерфейс в этом правиле «add action=masquerade chain=srcnat comment=»vpn_clients NAT rule» src-address=192.168.192.0/24«
4. Кажется у Вас есть проблемы с маршрутизацией. Есть отсылки к маркированным маршрутам «wan2_route» и «wan1_route». При этом самих маршрутов нет. Есть и другие подозрительные моменты.
Рекомендации:
Выполняйте именно в том порядке, как они будут идти.
1. Сделайте полную резервную копию.
2. Оставьте только одного Интернет-провайдера. Любого.
3. Отключите все, что касается маркировки маршрутов в /ip route, /ip route rule и /ip firewall mangle
4. Сбросьте все соединения в Connection Tracker и проверьте работу.
5. Разберитесь с правилами NAT. Больше всего меня смущает это правило «add action=masquerade chain=srcnat out-interface=ether1»
6. Сбросьте все соединения в Connection Tracker и проверьте работу.
Если помогло, то напишите на каком шаге.

По моему субъективному мнению в вашем ответе есть некоторые противоречия.
«у Вас правила пустышки»
Официальное, а не фейковое wiki рекомендует все-таки прописывать BOGON, если нет более жестких ограничений в INPUT.
Firewall Customer protection
Basic universal firewall script
BOGON Address List
Из статьи про пустышки:
1) «BOGON — это IP-адреса, которые не должны встречаться в таблицах маршрутизации в Интернет.» — то что они там не должны быть это не значит что их там нет, это как с сусликом.
Если не доверяете мне посмотрите список от Hurricane Electric о том что Bogon сети в Интернете все же есть. Также ничто не мешает провайдеру завернуть bogon в вашу сторону и ломиться к вам на оборудование без всякого Интернета.
2) По поводу «Здесь я люблю задавать вопрос. Почему Вы решили заблокировать сеть 192.0.2.0/24, но при этом не стали блокировать 192.0.3.0/24 или 192.0.4.0/24 или 192.0.5.0/24?»
Есть RFC который регламентирует что такое BOGON и есть RFC который регламентирует что такое Private Address Space — сложить 1+1 для специалистов не составит труда.
Мораль такова, что не нужно слушать советы в Интернет, читайте только официальный сайт производителя оборудования и официальные документы IEEE, остальное все пустое.
Grims,
1. Какие сети BOGON, которые могут инициировать обращение из-вне, не окажутся заблокированными правилом, которое блокирует invalid-трафик? Ответ: никакие. Вывод: блокировка BOGON смысла не имеет, если уже имеется правило, которое блокирует invalid-трафик. А наличие этого правила является правилом хорошего тона.
2. То, что RFC регламентирует, что такое BOGON не дает ответ на поставленный вопрос. Так же напоминаю, что часть сетей не являются постоянными и могут динамически изменятся со временем.
3. Аргумент про то, что надо надо читать официальную документацию очень хороший. Но еще лучше аргумент про то, что надо не просто слепо следовать рекомендациям, но и понимать, что и зачем делается. К сожалению, на официальной англоязычной Wiki не на 100% все гладко. Я сам несколько раз находил неточности на ней. К счастью, вендор обсуждает такие вопросы и при необходимости вносит правки.
Change tcp mss mikrotik что это
Обнаружена блокировка рекламы: Наш сайт существует благодаря показу онлайн-рекламы нашим посетителям. Пожалуйста, подумайте о поддержке нас, отключив блокировщик рекламы на нашем веб-сайте.
«Зависание» сайтов на время
Обсуждение ПО и его настройки
1 сообщение • Страница 1 из 1
SparkLone Сообщения: 1 Зарегистрирован: 30 мар 2019, 18:24
Приветствую. Не так давно купил hap ac2. Интернет через 4g свисток (yota).
В принципе все устраивает, гибкость конфигурации, наваял скрипт на переподключение провисшего соединения и т.д..
Но есть 2 проблемы
1) когда скрипт переподсоединяет инет — если в этот момент ты браузился по какому то сайта, потом он перестает открываться, просто висит, другие уже полминуты-минуту как открываются, а этот нет.
2) периодически сайты в принципе «подвисают». Выглядит это так, ты листаешь ленту vk, все шустро летает, в какой то момент ты делаешь рефреш страницы — и тишина, все грузится, может и по полминуты подвисать. При этом этот же сайт с этого же компьютера но с другого браузера будет нормально открываться. Или начал к примеру открывать страницу с алиэкспресса, у тебя их штук 20 уже открыто, и тут все, нажимаешь ссылку комментов — тишина, или картинки перестают грузиться (в другом окне другой сайт ок работает, в другом браузере али ок работает)
Вот пример как это выглядит в safari (та же картина в хроме, не принципиально)
https://monosnap.com/file/q6gZQJ1fciD5A . pvyuwGcCmn
Все что я находил сводилось к проблеме MTU.
В итоге я отключил Change TCP MSS в профилях ppp
но создал (по какому то из советов в инете) руками правило
/ip firewall mangle
add action=change-mss chain=forward new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn
В общем ничего не изменилось.
Пробовал проставить руками у ppp-out1 интерфейсе mtu=1400, а не 1500, — стало по ощущениям намного чаще воспроизводиться «подвисание сайтов», вернул 1500
Сегодня задисеблил правило в mangle. (т.к. прочитал что в очередной из прошивок сделали это рудиментом, если я правильно понял «!) ppp — implemented internal algorithm for «change-mss», no mangle rules necessary;»)
Провайдер Yota. Что интересно заходя на сайт https://www.speedguide.net/analyzer.php
Я получаю в ответе
MTU = 1400
MTU is not fully optimized for broadband. Consider increasing your MTU to 1500 for better throughput. If you are using a router, it could be limiting your MTU regardless of Registry settings.
MSS = 1360
MSS is not optimized for broadband. Consider increasing your MTU value.
В то время как на роутере везде пропсиано 1500, для всех интерфейсов.
Т.е. по логике вещей где то у провайдера кто то режет MTU с 1500 на 1400 и это и может быть проблемой. Я прав?
И можно ли как то это побороть на уровне роутера, не затрагивая клиенты?
Вот лог (там mangle еще не задисеблен).
Есть шанс что отключив правило в mangle все решится (вопроизводится то не так часто, нужно время чтобы убедиться), но маловероятно учитывая вывод с speedguide.net
Может кто то сталкивался как решать на роутере корректно все это малой кровью?
[admin@MikroTik] > export
# mar/30/2019 18:52:36 by RouterOS 6.44.1
# software > #
# model = RBD52G-5HacD2HnD
# serial number = B4A00A581B0E
/interface bridge
add admin-mac=74:4D:28:1E:84:DB auto-mac=no comment=defconf name=bridge
/interface ethernet
set [ find default-name=ether1 ] disabled=yes speed=100Mbps
set [ find default-name=ether2 ] speed=100Mbps
set [ find default-name=ether3 ] disabled=yes speed=100Mbps
set [ find default-name=ether4 ] disabled=yes speed=100Mbps
set [ find default-name=ether5 ] disabled=yes speed=100Mbps
/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n channel-width=20/40mhz-Ce disabled=no distance=indoors frequency=auto installation=indoor mode=ap-bridge ssid=MT wireless-protocol=802.11 wps-mode=\
push-button-virtual-only
set [ find default-name=wlan2 ] band=5ghz-a/n/ac channel-width=20/40/80mhz-Ceee disabled=no distance=indoors frequency=auto mode=ap-bridge ssid=MT5 wireless-protocol=802.11 wps-mode=\
push-button-virtual-only
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface lte apn
set [ find default=yes ] apn=internet.yota default-route-distance=1 name=yota
/interface wireless security-profiles
/ip hotspot profile
set [ find default=yes ] html-directory=flash/hotspot
/ip kid-control
add fri=»» mon=»» name=PS4 rate-limit=100 sat=»» sun=»» thu=»» tue=»» wed=»»
/ip pool
add name=dhcp ranges=192.168.1.10-192.168.1.254
/ip dhcp-server
add address-pool=dhcp disabled=no interface=bridge lease-time=12h name=defconf
/port
set 0 name=usb1
/interface ppp-client
add apn=internet.yota disabled=no info-channel=1 name=ppp-out1 port=usb1
/ppp profile
set *0 change-tcp-mss=no
set *FFFFFFFE change-tcp-mss=no
/queue simple
add max-limit=2M/5M name=5Mb target=192.168.1.14/32,192.168.1.20/32,192.168.1.100/32,192.168.1.114/32
add max-limit=5M/5M name=»Sasha PC» target=192.168.1.188/32
add max-limit=0/10M name=PS4 target=192.168.1.194/32
add disabled=yes max-limit=100/100 name=»PS4 down» target=192.168.1.194/32
add max-limit=1M/30M name=Torrent target=192.168.1.140/32
/interface bridge port
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf interface=ether3
add bridge=bridge comment=defconf interface=ether4
add bridge=bridge comment=defconf interface=ether5
add bridge=bridge comment=defconf interface=wlan1
add bridge=bridge comment=defconf interface=wlan2
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface=ether1 list=WAN
/ip address
add address=192.168.1.1/24 comment=defconf interface=ether2 network=192.168.1.0
/ip dhcp-client
add comment=defconf dhcp-options=hostname,clientid disabled=no interface=ether1
/ip dhcp-server network
add address=192.168.1.0/24 comment=defconf gateway=192.168.1.1 netmask=24
/ip dns
set allow-remote-requests=yes
/ip dns static
add address=192.168.1.1 name=router.lan
/ip firewall filter
add action=accept chain=input comment=»defconf: accept established,related,untracked» connection-state=established,related,untracked
add action=drop chain=input comment=»defconf: drop invalid» connection-state=invalid
add action=accept chain=input comment=»defconf: accept ICMP» protocol=icmp
add action=drop chain=input comment=»defconf: drop all not coming from LAN» in-interface-list=!LAN
add action=accept chain=forward comment=»defconf: accept in ipsec policy» ipsec-policy=in,ipsec
add action=accept chain=forward comment=»defconf: accept out ipsec policy» ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment=»defconf: fasttrack» connection-state=established,related
add action=accept chain=forward comment=»defconf: accept established,related, untracked» connection-state=established,related,untracked
add action=drop chain=forward comment=»defconf: drop invalid» connection-state=invalid
add action=drop chain=forward comment=»defconf: drop all from WAN not DSTNATed» connection-nat-state=!dstnat connection-state=new in-interface-list=WAN
add action=drop chain=input in-interface=ppp-out1
/ip firewall mangle
add action=change-mss chain=forward new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn
/ip firewall nat
add action=masquerade chain=srcnat comment=»defconf: masquerade» ipsec-policy=out,none out-interface-list=WAN
add action=masquerade chain=srcnat out-interface=ppp-out1
/system clock
set time-zone-name=Europe/Moscow
/system scheduler
add interval=20s name=check-ppp-client on-event=»#:log info message=\»*** start check any ppp client connection ***\»;\
\n:if ([/ping 8.8.8.8 interface=ppp-out1 interval=3 count=5] = 0) do= <\
\n :log info message=\»** RESTART MODEM ***\»;\
\n\t/interface disable ppp-out1\
\n\t/interface enable ppp-out1\
\n>\
\n#:log info message=\»*** end check any ppp client connection ***\»;» policy=ftp,read,write,test start-date=jan/01/2002 start-time=00:20:00
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN
/tool netwatch
add disabled=yes host=8.8.8.8
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
0 ADS 0.0.0.0/0 ppp-out1 1
1 ADC 10.112.112.158/32 10.147.15.232 ppp-out1 0
2 ADC 192.168.1.0/24 192.168.1.1 bridge 0
/ip dns print
servers:
dynamic-servers: 10.178.239.70,10.178.239.22
allow-remote-requests: yes
max-udp-packet-size: 4096
query-server-timeout: 2s
query-total-timeout: 10s
max-concurrent-queries: 100
max-concurrent-tcp-sessions: 20
cache-size: 2048KiB
cache-max-ttl: 1w
cache-used: 168KiB