Перейти к содержимому

Clamp tcp mss mikrotik что это

  • автор:

15.7. Решение проблемы с Path MTU Discovery путем настройки MSS.

Как уже говорилось выше, Path MTU Discovery не работает в Интернет должным образом. Если вам известны факты существования сегментов в вашей сети, где размер MTU ограничен, то вы уже не можете полагаться на безотказную работу Path MTU Discovery.

Однако, помимо MTU, есть еще один способ ограничения размера пакета — это, так называемый MSS (Maximum Segment Size — Максимальный Размер Сегмента). MSS — это поле в заголовке TCP-пакета SYN.

С недавних пор, ядра Linux и некоторые драйверы PPPoE, стали поддерживать такую особенность, как ‘clamp the MSS’ (ограничение размера MSS).

В этом есть свои плюсы и минусы. С одной стороны, устанавливая MSS, вы недвусмысленно извещаете удаленную сторону о том, что размер пакета не должен превышать заданную величину. Причем для этого не требуется передачи ICMP-сообщений.

С другой стороны — за атакущим сохраняется возможность нарушить связь путем модификации пакетов. Однако, следует заметить, что мы довольно часто используем эту возможность и это приносит свои положительные плоды.

Чтобы иметь возможность манипулировать размером сегмента, у вас должны быть установлены iptables , не ниже 1.2.1a и ядро Linux, не ниже 2.4.3. Основная команда iptables :

# iptables -A FORWARD -p tcp —tcp-flags SYN,RST SYN -j TCPMSS —clamp-mss-to-pmtu

Она рассчитает правильный MSS для вашего соединения. Если вы достаточно уверены в себе и в своих знаниях, можете попробовать нечто подобное:

# iptables -A FORWARD -p tcp —tcp-flags SYN,RST SYN -j TCPMSS —set-mss 128

Это правило устанавливает MSS равным 128. Очень полезно, если вы наблюдаете разрывы при передаче голосовых данных, когда поток небольших пакетов VoIP прерывается «огромными» http-пакетами.

Назад В начало документа Вперед
Решение проблемы с Path MTU Discovery путем настройки MTU. К началу раздела Формирователь трафика: Низкая задержка, максимальная производительность.

Провайдеры и 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 — не логировать

и бинго, наконец-то открывается Хабр и все что мне нужно.

В сетевой части я не «Ас», поэтому сумбурно вышло, да и на Хабре статьи не нашел похожей, может будет кому полезно.

MikroTik.by

For every complex problem, there is a solution that is simple, neat, and wrong.

  • Список форумовФорум по операционной системе MikroTik RouterOSМаршрутизация, коммутация
  • Поиск

Использование шлюза из другой сети

RIP, OSFP, BGP, MPLS/VPLS
17 сообщений • Страница 1 из 1
Vini Сообщения: 45 Зарегистрирован: 30 янв 2020, 17:44

Использование шлюза из другой сети

Сообщение Vini » 13 мар 2020, 16:20

Добрый день!
Есть две сети с Микротиками в качестве шлюзов:
172.16.10.0/24
172.16.20.0/24
У 172.16.10.1 белая статика во внешний мир. Сети объединены по L2TP site-to-site.
Подскажите плиз, что надо настроить, чтобы весь трафик с 172.16.20.111 шёл через 172.16.10.1, т.е. полностью использовал его в качестве шлюза? Достаточно ли указать на 172.16.20.111 шлюзом 172.16.10.1?
Спасибо!

Chupaka Сообщения: 3831 Зарегистрирован: 29 фев 2016, 15:26 Откуда: Минск Контактная информация:

Re: Использование шлюза из другой сети

Сообщение Chupaka » 13 мар 2020, 16:45

Поскольку 172.16.20.111 без понятия, где находится 172.16.10.1, надо на маршрутизаторе с 172.16.20.0/24 отмаркировать трафик от 172.16.20.111 и направить его в L2TP-тоннель.

Vini Сообщения: 45 Зарегистрирован: 30 янв 2020, 17:44

Re: Использование шлюза из другой сети

Сообщение Vini » 13 мар 2020, 17:27

Оооо! Маркировка трафика. Я с этим еще не связывался)
Chupaka Сообщения: 3831 Зарегистрирован: 29 фев 2016, 15:26 Откуда: Минск Контактная информация:

Re: Использование шлюза из другой сети

Сообщение Chupaka » 13 мар 2020, 17:34

/ip route add gateway=L2TP routing-mark=L2TP /ip firewall mangle add chain=prerouting src-address=172.16.20.111 dst-address-type=!local \ action=mark-routing new-routing-mark=L2TP

Vini Сообщения: 45 Зарегистрирован: 30 янв 2020, 17:44

Re: Использование шлюза из другой сети

Сообщение Vini » 13 мар 2020, 17:54

Спасибо! Буду пробовать! И за одно изучать маркировку
Vini Сообщения: 45 Зарегистрирован: 30 янв 2020, 17:44

Re: Использование шлюза из другой сети

Сообщение Vini » 13 мар 2020, 18:09

И еще вопрос: а если подсети 10 и 20 видят друг друга, т.е. маршруты прописаны, то все равно маркировать надо трафик?

И еще: При маркеровке на 172.16.10.1 совсем ничего не надо настраивать? Трафик от 172.16.20.111 будет Маскарадиться/НАТиться?

И еще: если надо с внешнего IP 172.16.10.0 пробросить порт до 172.16.20.111, то это делается по-обычному, как будто на 172.16.20.1?

Chupaka Сообщения: 3831 Зарегистрирован: 29 фев 2016, 15:26 Откуда: Минск Контактная информация:

Re: Использование шлюза из другой сети

Сообщение Chupaka » 13 мар 2020, 18:15

Vini писал(а): ↑ 13 мар 2020, 18:09 И еще вопрос: а если подсети 10 и 20 видят друг друга, т.е. маршруты прописаны, то все равно маркировать надо трафик?

Конечно. Иначе всё будет выходить через интернет-канал текущего роутера, не уходя в другой офис.

Vini писал(а): ↑ 13 мар 2020, 18:09 При маркеровке на 172.16.10.1 совсем ничего не надо настраивать? Трафик от 172.16.20.111 будет Маскарадиться/НАТиться?

Зависит от ваших правил, если они стандартные — то да, будет маскарадиться само.

Vini писал(а): ↑ 13 мар 2020, 18:09 если надо с внешнего IP 172.16.10.0 пробросить порт до 172.16.20.111, то это делается по-обычному, как будто на 172.16.20.1?

Проброс настраивается на 172.16.10.0, как обычно.
Vini Сообщения: 45 Зарегистрирован: 30 янв 2020, 17:44

Re: Использование шлюза из другой сети

Сообщение Vini » 16 мар 2020, 15:41

Добрый день!
Настроил как Вы написали, но. ничего не скачивается, хотя на текущем роутере 100Мбит, на удаленном 500 Мбит.
Если с любого компьютера подключиться по L2TP и установить галку «Использовать удаленный шлюз», то весь трафик проходит через удаленый роутер без проблем на максимальной скорости 100 Мбит
Подскажите, плиз, куда копать?
Спасибо!

Chupaka Сообщения: 3831 Зарегистрирован: 29 фев 2016, 15:26 Откуда: Минск Контактная информация:

Re: Использование шлюза из другой сети

Сообщение Chupaka » 16 мар 2020, 16:35

Что значит «не скачивается»? В целом, работает, но что-то не скачивается?

Ну и базовую диагностику никто не отменял. Трассировку сделайте с 172.16.20.111 к интересующим ресурсам.

Vini Сообщения: 45 Зарегистрирован: 30 янв 2020, 17:44

Re: Использование шлюза из другой сети

Сообщение Vini » 16 мар 2020, 16:46

Т.е. страницы открываются оооочень долго, либо вообще открываются, про скачивание вообще молчу.
Щас пробую на «стенде» (друх Микротиках, лежащих рядом):
172.16.100.1 — удаленный
172.16.255.1 — текущий

Трассировка маршрута к ya.ru [87.250.250.242]
с максимальным числом прыжков 30:

1 2 3 ms 4 ms 3 ms 172.16.100.1
3 2386 ms 2302 ms 2197 ms broadband-90-154-77-226.ip.moscow.rt.ru [90.154.77.226]
4 6 ms 5 ms 4 ms 77.37.250.210
5 * 5 ms 4 ms dante.yndx.net [195.208.208.93]
6 10 ms 10 ms 10 ms ya.ru [87.250.250.242]

Последний раз редактировалось Vini 16 мар 2020, 16:50, всего редактировалось 1 раз.
Chupaka Сообщения: 3831 Зарегистрирован: 29 фев 2016, 15:26 Откуда: Минск Контактная информация:

Re: Использование шлюза из другой сети

Сообщение Chupaka » 16 мар 2020, 16:49

Видимо, с MTU проблема: не всё, что вылазит из клиента в ethernet, помещается целиком в тоннель.

/ip firewall mangle add action=change-mss chain=postrouting new-mss=clamp-to-pmtu \ out-interface=L2TP passthrough=yes protocol=tcp tcp-flags=syn 

Vini Сообщения: 45 Зарегистрирован: 30 янв 2020, 17:44

Re: Использование шлюза из другой сети

Сообщение Vini » 16 мар 2020, 17:20

Имеет значение последовательность правил в mangle?
не сработало(
Chupaka Сообщения: 3831 Зарегистрирован: 29 фев 2016, 15:26 Откуда: Минск Контактная информация:

Re: Использование шлюза из другой сети

Сообщение Chupaka » 16 мар 2020, 19:14

Ну, главное, чтобы до него дело доходило. Например, вытащить на самый верх

Если всё сильно зафайрволено — можно попробовать вручную установить размер сегмента:

/ip firewall mangle add action=change-mss chain=postrouting new-mss=1300 \ out-interface=L2TP tcp-mss=1301-65535 passthrough=yes protocol=tcp tcp-flags=syn

Vini Сообщения: 45 Зарегистрирован: 30 янв 2020, 17:44

Re: Использование шлюза из другой сети

Сообщение Vini » 17 мар 2020, 17:10

Добрый день еще раз!
Обнулил оба Микротика на стенде, оставил ЗАВОДСКУЮ конфигурацию, правила Firewall заводские. Добавил только для L2TP.
На 172.16.10.1 создал сервер L2TP без ipsec и шифрований, настроил простое правило роутинга до 172.16.20.0
На 172.16.20.1 создал клиент до 172.16.10.1, настроил простое правило роутинга до 172.16.10.0
Ввёл первые две команды, написанные Вами — большинство интернета не открывается, очень малая часть открывается ОООЧЕНЬ медленно.
Ввел вторые две команды — стало лучше — страницы стали открываться немного быстрее, но некоторые по прежнему не открываются.

Vini Сообщения: 45 Зарегистрирован: 30 янв 2020, 17:44

Re: Использование шлюза из другой сети

Сообщение Vini » 17 мар 2020, 18:09

А если на Микротике-клиенте настроить интернет через VPN. То можно это сделать только для одного компьютера в сети?

Chupaka Сообщения: 3831 Зарегистрирован: 29 фев 2016, 15:26 Откуда: Минск Контактная информация:

Re: Использование шлюза из другой сети

Сообщение Chupaka » 17 мар 2020, 18:11

Сложно обсуждать «некоторые» страницы с неизвестной причиной неоткрывания. Не открываются по таймауту?

Chupaka Сообщения: 3831 Зарегистрирован: 29 фев 2016, 15:26 Откуда: Минск Контактная информация:

Re: Использование шлюза из другой сети

Сообщение Chupaka » 17 мар 2020, 18:12

Vini писал(а): ↑ 17 мар 2020, 18:09 А если на Микротике-клиенте настроить интернет через VPN. То можно это сделать только для одного компьютера в сети?

[РЕШЕНО] 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *