Представьте: вы настроили 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 — это не фикс для всех проблем. Но когда он нужен — он спасает.


