Представьте: вы настроили VPN между офисами, всё пингуется, но половина HTTPS-сайтов просто зависает. Telegram работает, но 1С через туннель — нет. Сотрудники жалуются, что «интернет есть, но сайты не грузятся».
Или вы подключили интернет через PPPoE, и вдруг оказывается, что YouTube открывается, а сайт налоговой — нет. Причём только на одном компьютере, а на другом — всё работает.
Знакомо? Поздравляю, вы столкнулись с проблемой MSS (Maximum Segment Size).
Это одна из тех вещей, которые работают молча, пока не сломаются. А когда ломаются — непонятно, что вообще искать.
Эта статья для тех, кто:
- настраивает MikroTik и видит странное поведение сайтов
- работает с PPPoE, IPSec, WireGuard, GRE
- слышал про
change tcp mss, но не понимает, что это и зачем - хочет разобраться один раз и больше не гуглить «mikrotik mss clamp»
Я объясню простым языком, без академической воды. С примерами из реальной жизни. С командами, которые можно скопировать и запустить.
Что такое MSS и почему он вообще существует
MSS (Maximum Segment Size) — это максимальный размер данных, которые можно запихнуть в один TCP-пакет.
Не путайте с MTU. Это разные вещи.
MTU (Maximum Transmission Unit) — это максимальный размер всего пакета (включая заголовки).
MSS — это максимальный размер только данных внутри TCP-пакета.
Формула:
MSS = MTU - IP-заголовок (20 байт) - TCP-заголовок (20 байт)
Пример:
- Обычный Ethernet: MTU = 1500 → MSS = 1460
- PPPoE: MTU = 1492 → MSS = 1452
- IPSec туннель: MTU = 1400 → MSS = 1360
Почему это важно?
Когда вы открываете сайт, ваш браузер отправляет запрос на сервер. Сервер отвечает данными — например, HTML-страницей. Эти данные разбиваются на пакеты.
Если сервер пытается отправить пакет размером больше, чем позволяет ваш канал (из-за туннеля, PPPoE и т.д.), пакет либо:
- фрагментируется — разбивается на куски (медленно и ненадёжно)
- отбрасывается — если стоит флаг DF (Don’t Fragment)
В результате: сайт зависает, потому что часть пакетов не доходит.
MSS vs MTU: в чём разница простыми словами
Давайте на пальцах.
MTU — это размер грузовика, который везёт ваши данные по сети. Если грузовик не влезает в туннель — проблема.
MSS — это размер груза внутри грузовика (без учёта кабины и рамы).
Пример из жизни:
У вас обычный интернет (MTU 1500). Вы поднимаете VPN-туннель (добавляются заголовки шифрования). MTU туннеля становится 1400.
Но ваш компьютер не знает об этом. Он продолжает отправлять пакеты размером 1500. Пакеты не проходят через туннель. Сайты зависают.
Решение: Сказать компьютеру: «Дружище, отправляй пакеты поменьше, у нас тут туннель».
Но как это сделать, если компьютеров 50? На каждом настраивать?
Нет. Мы делаем это на роутере. И называется это clamp tcp mss.
Почему на MikroTik приходится менять MSS
Кейс 1: PPPoE и уменьшенный MTU
Вы подключились к провайдеру через PPPoE. MTU стал 1492 вместо 1500.
Что происходит:
Большинство сайтов работают нормально. Но некоторые — зависают. Особенно банки, госуслуги, корпоративные порталы.
Почему:
Эти сайты отправляют большие пакеты с флагом DF (Don’t Fragment). Пакеты не проходят через PPPoE (MTU 1492), но сервер не знает об этом. Соединение зависает.
Решение:
На MikroTik настроить change tcp mss, чтобы роутер автоматически уменьшал MSS в пакетах клиентов.
Кейс 2: IPSec туннель между офисами
Вы подняли IPSec между двумя офисами. Пинг проходит, но:
- Telegram работает
- Почта работает
- 1С через туннель — зависает
- SSH — работает, но команды с большим выводом обрываются
Почему:
IPSec добавляет заголовки шифрования (~50-80 байт). MTU туннеля стал 1400-1420. Большие TCP-пакеты не проходят.
Решение:
Clamp MSS на обоих концах туннеля.
Кейс 3: WireGuard с мобильными клиентами
Вы настроили WireGuard для удалённых сотрудников. Всё работает, но:
- Сайты открываются медленно
- Иногда подвисают
- На телефоне работает лучше, чем на ноутбуке
Почему:
WireGuard — это туннель. MTU уменьшается. Телефон сам подстраивается, а ноутбук — нет.
Решение:
На сервере WireGuard (MikroTik) настроить MSS clamping.
Кейс 4: CG-NAT и странные провайдеры
Некоторые провайдеры используют CG-NAT (Carrier-Grade NAT) с нестандартным MTU. Или GRE-туннели. Или вообще непонятно что.
Симптомы:
- Сайты открываются выборочно
- Cloudflare работает, остальное — нет
- Скорость по speedtest отличная, но загрузка файлов — тормозит
Решение:
Изменить MSS на исходящем интерфейсе.
Что такое clamp tcp mss на MikroTik
Clamp TCP MSS — это когда роутер перехватывает TCP-пакеты и автоматически уменьшает значение MSS в заголовке.
Как это работает:
- Клиент отправляет пакет с флагом SYN (начало TCP-соединения)
- В этом пакете указано: «Я могу принимать сегменты размером до 1460 байт»
- MikroTik перехватывает пакет и меняет: «Можешь принимать только до 1400 байт»
- Сервер получает изменённое значение и отправляет пакеты меньшего размера
- Всё работает
Важно: Это работает только для TCP. UDP не имеет MSS.
Action=change-mss: что происходит под капотом
В MikroTik за это отвечает правило в firewall mangle:
/ip firewall mangle
add action=change-mss chain=forward protocol=tcp tcp-flags=syn \
new-mss=1400 comment="Fix MSS for tunnel"
Разбор команды:
chain=forward— пакеты, проходящие через роутер (не для самого роутера)protocol=tcp— только TCP (MSS работает только для TCP)tcp-flags=syn— только пакеты с флагом SYN (начало соединения)new-mss=1400— новое значение MSS
Clamp-to-pmtu: динамическая настройка
Вместо фиксированного значения можно использовать clamp-to-pmtu:
/ip firewall mangle
add action=change-mss chain=forward protocol=tcp tcp-flags=syn \
new-mss=clamp-to-pmtu comment="Auto MSS"
Что делает:
MikroTik автоматически определяет MTU интерфейса и рассчитывает MSS.
Плюсы: Не нужно вручную считать.
Минусы: Не всегда работает корректно (особенно на сложных топологиях).
Рекомендация: Для простых случаев (PPPoE) — используйте clamp-to-pmtu. Для туннелей — фиксированное значение.
Как изменить MSS на MikroTik: практические примеры
Пример 1: PPPoE с MTU 1492
Проблема: Провайдер даёт PPPoE, MTU = 1492. Некоторые сайты не открываются.
Решение:
/ip firewall mangle
add action=change-mss chain=forward protocol=tcp tcp-flags=syn \
new-mss=clamp-to-pmtu out-interface=pppoe-out1 \
comment="PPPoE MSS fix"
Объяснение:
out-interface=pppoe-out1— применять только для пакетов, уходящих в PPPoEclamp-to-pmtu— автоматически рассчитать MSS на основе MTU интерфейса
Проверка:
/ip firewall mangle print
Должно быть правило с action=change-mss.
Пример 2: IPSec туннель между офисами
Топология: Два офиса соединены IPSec site-to-site.
Проблема: 1С через туннель тормозит, SSH обрывается.
Решение на обоих роутерах:
/ip firewall mangle
add action=change-mss chain=forward protocol=tcp tcp-flags=syn \
new-mss=1360 comment="IPSec MSS fix"
Почему 1360:
MTU IPSec = ~1400 (зависит от алгоритма шифрования) MSS = 1400 - 20 (IP) - 20 (TCP) = 1360
Важно: Настроить на обоих концах туннеля.
Пример 3: WireGuard для удалённых сотрудников
Проблема: Сотрудники подключаются к офису через WireGuard. Сайты работают нестабильно.
Решение на сервере WireGuard (MikroTik):
/ip firewall mangle
add action=change-mss chain=forward protocol=tcp tcp-flags=syn \
new-mss=1380 out-interface=wireguard1 \
comment="WireGuard MSS"
Почему 1380:
WireGuard MTU обычно 1420 MSS = 1420 - 40 = 1380
Пример 4: Проблемы с Cloudflare
Симптом: Сайты за Cloudflare не открываются или открываются частично.
Причина: Cloudflare использует большие TCP-пакеты с флагом DF.
Решение:
/ip firewall mangle
add action=change-mss chain=forward protocol=tcp tcp-flags=syn \
new-mss=1400 comment="Cloudflare fix"
Пример 5: 1С через VPN зависает
Проблема: 1С через VPN работает медленно или зависает при загрузке больших отчётов.
Решение:
/ip firewall mangle
add action=change-mss chain=forward protocol=tcp tcp-flags=syn \
new-mss=1360 src-address=192.168.10.0/24 \
comment="1C server MSS"
Объяснение:
src-address=192.168.10.0/24— применять только для подсети сервера 1Сnew-mss=1360— безопасное значение для большинства туннелей
Как проверить, что MSS работает
Способ 1: Tools → Torch
/tool torch interface=ether1
Смотрите на столбец Tx (передаваемые пакеты). Если размер пакетов стал меньше — MSS работает.
Способ 2: Packet Sniffer
/tool sniffer quick interface=ether1 filter-port=80
В выводе ищите TCP SYN пакеты. В них должно быть новое значение MSS.
Способ 3: ping с флагом DF
На клиенте (Windows):
ping -f -l 1472 8.8.8.8
Объяснение:
-f— установить флаг Don’t Fragment-l 1472— размер данных (1472 + 28 байт заголовков = 1500 MTU)
Результат:
- Если пинг проходит — MTU нормальный
- Если «Packet needs to be fragmented» — MTU меньше 1500
Постепенно уменьшайте значение, пока ping не пройдёт. Это ваш реальный MTU.
Способ 4: Browser DevTools
Откройте сайт, который не работает. Нажмите F12 → вкладка Network.
Если запросы зависают (статус «pending») — проблема с MSS.
Способ 5: traceroute с MTU
Linux/macOS:
traceroute -F -m 1500 google.com
Покажет, на каком хопе MTU уменьшается.
Типичные ошибки при настройке MSS
Ошибка 1: Забыли tcp-flags=syn
Неправильно:
add action=change-mss chain=forward protocol=tcp new-mss=1400
Что произойдёт: MikroTik будет менять MSS во ВСЕХ TCP-пакетах, а не только в начале соединения. Это сломает передачу данных.
Правильно:
add action=change-mss chain=forward protocol=tcp tcp-flags=syn new-mss=1400
Ошибка 2: Не указали protocol=tcp
Неправильно:
add action=change-mss chain=forward new-mss=1400
Что произойдёт: Правило будет применяться ко всем протоколам, включая UDP, ICMP. Это не сработает (MSS только для TCP).
Правильно:
add action=change-mss chain=forward protocol=tcp tcp-flags=syn new-mss=1400
Ошибка 3: Сделали правило в input вместо forward
Неправильно:
add action=change-mss chain=input protocol=tcp tcp-flags=syn new-mss=1400
Что произойдёт: Правило будет применяться только к пакетам, адресованным самому роутеру. Для клиентов не сработает.
Правильно:
add action=change-mss chain=forward protocol=tcp tcp-flags=syn new-mss=1400
Ошибка 4: Забыли порядок правил
Если у вас есть правило action=accept до change-mss, оно сработает первым, и MSS не изменится.
Проверка порядка:
/ip firewall mangle print
Правила change-mss должны быть в начале списка.
Ошибка 5: Слишком маленький MSS
Неправильно:
add action=change-mss chain=forward protocol=tcp tcp-flags=syn new-mss=500
Что произойдёт: Соединение будет медленным. Каждый пакет слишком маленький, нужно больше пакетов для передачи данных.
Правильно: MSS должен быть максимально возможным для вашего MTU.
Когда НЕ нужно менять MSS
Это очень важно. Не надо менять MSS просто потому, что вы где-то прочитали про это.
Если MTU нормальный (1500)
Если у вас обычный Ethernet без туннелей, PPPoE, VPN — MSS менять не нужно.
Проверка:
/interface print
Смотрите на столбец MTU. Если везде 1500 — всё хорошо.
Если нет туннелей
MSS нужно менять только если есть:
- PPPoE
- IPSec
- GRE
- WireGuard
- PPTP/L2TP
- Другие инкапсуляции
Если просто роутер с обычным WAN-портом — не трогайте MSS.
Если проблема в DNS
Симптомы похожи:
- Сайты не открываются
- Telegram работает
- По IP всё открывается
Но это не MSS, а проблема с DNS.
Проверка:
# На клиенте nslookup google.com # Если ошибка - проблема в DNS, а не в MSS
Если проблема на стороне провайдера
Иногда провайдер сам ломает MSS (блокирует ICMP, неправильно настраивает MTU на своём оборудовании).
Проверка: Подключите компьютер напрямую к модему (без MikroTik). Если проблема остаётся — звоните провайдеру.
Частые вопросы (FAQ)
Нужно ли менять MSS на домашнем роутере?
Ответ: Зависит от типа подключения.
- Обычный Ethernet (DHCP) — не нужно
- PPPoE — скорее всего нужно
- Провайдер через туннель (редко) — нужно
Проверка: Если все сайты открываются нормально — не трогайте.
Чем отличается clamp от change-mss?
Ответ: Это одно и то же. «Clamp» — это жаргон.
В RouterOS команда называется action=change-mss.
«Clamp to PMTU» — это динамический расчёт MSS на основе MTU интерфейса.
Работает ли MSS для UDP?
Ответ: Нет. MSS — это параметр TCP.
Для UDP нет понятия MSS. UDP просто отправляет пакеты, и если они не влезают — фрагментируются на IP-уровне.
Можно ли поставить MSS больше, чем MTU?
Ответ: Технически — да, но это не имеет смысла.
MSS должен быть меньше MTU на 40 байт (IP + TCP заголовки).
Как узнать оптимальное значение MSS?
Ответ:
MSS = MTU интерфейса - 40 Пример: MTU PPPoE = 1492 MSS = 1492 - 40 = 1452
Что делать, если после настройки MSS ничего не изменилось?
Ответ: Проверьте:
- Правило в mangle включено (
disabled=no) - Правило в начале списка (порядок важен)
- Указан правильный интерфейс (
out-interface) - Указан
tcp-flags=syn - Указан
protocol=tcp
Влияет ли MSS на скорость интернета?
Ответ: Да, но минимально.
Если MSS слишком маленький — скорость падает (нужно больше пакетов для передачи данных).
Если MSS оптимальный — влияния на скорость нет.
Заключение: MSS — это не магия
Давайте подведём итоги.
MSS (Maximum Segment Size) — это размер данных в TCP-пакете. Когда у вас туннель (PPPoE, VPN, IPSec), MTU уменьшается, и нужно уменьшить MSS.
Clamp TCP MSS — это когда MikroTik автоматически меняет MSS в пакетах клиентов, чтобы они проходили через туннель.
Когда нужно:
- PPPoE с MTU < 1500
- IPSec, GRE, WireGuard, PPTP, L2TP
- Странный провайдер с нестандартным MTU
Когда НЕ нужно:
- Обычный Ethernet без туннелей
- MTU = 1500 везде
- Проблема в DNS, а не в MSS
Как настроить (универсальная команда):
/ip firewall mangle
add action=change-mss chain=forward protocol=tcp tcp-flags=syn \
new-mss=1400 comment="MSS fix"
Как проверить:
- Torch
- Packet Sniffer
- ping -f -l 1472
- Browser DevTools
Главное правило: Сначала диагностика, потом настройка. Не меняйте MSS просто так.
Если у вас есть конкретная проблема (сайты не открываются, VPN тормозит), сначала проверьте MTU, потом настраивайте MSS.
Сохраните эту статью в закладки. В следующий раз, когда увидите «половина сайтов не работает, а пинг проходит», вы будете знать, что делать.
И помните: MSS — это не фикс для всех проблем. Но когда он нужен — он спасает.
Оставайтесь на связи
Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.
Подписаться на IT-Аптеку →




Неделю не мог понять почему некоторые сайты не открываются через микротик а через мобильный интернет всё работает. Оказалось именно MSS. Статья помогла, спасибо!
Классический симптом — большие пакеты не проходят, мелкие идут нормально. Рад что разобрались!
Эта проблема у меня появилась именно после настройки VPN туннеля. Сайты открывались нормально пока не поднял WireGuard. Это MTU туннеля надо уменьшить или лучше через MSS clamping решать?
Оба подхода работают но MSS clamping надёжнее. Уменьшение MTU туннеля решает проблему на стороне роутера но клиенты всё равно могут генерировать большие пакеты. MSS clamping указывает клиентам на этапе TCP handshake использовать меньший размер сегмента — это работает прозрачно для всех устройств в сети. В правиле mangle используй action=change-mss new-mss=clamp-to-pmtu — это автоматически выберет правильное значение.
добавь в статью команду для диагностики — tracepath или ping с разным размером пакета. Помогает быстро понять где именно теряются пакеты.
Хорошее замечание, добавлю. На Windows: ping -f -l 1400 ya.ru (флаг -f запрещает фрагментацию). Если пинг с большим пакетом не проходит а маленький идёт — проблема в MTU. На Linux: ping -M do -s 1400 ya.ru. Tracepath показывает MTU на каждом хопе — очень удобно для диагностики.