Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Правило Dynamic TCP MSS ломает всё.

    Правило Dynamic TCP MSS ломает всё.

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Правило Dynamic TCP MSS ломает всё., RouterOS
     
    airnet
    Guest
    #1
    0
    25.07.2006 02:37:00
    По умолчанию в профиле PPPoE мы всегда оставляем эту опцию включенной: / ppp profile set default name="default" change-tcp-mss=yes

    Сценарий: Интернет-------Etherreal.Sniffer------MT.PPPoE.Server(change-tcp-mss=yes)----DLINK(NAT)----MT.PPTP.Server--------MT.PPTP.Client------WindowsClient

    Все версии MT 2.9.27 и Windows Client не могут заходить на многие сайты (например, http://www.stuff.co.nz и http://www.xtra.co.nz).

    Etherreal Sniffer показывает TCP Syn пакеты с MSS=1452 из-за вышеуказанного правила MSS на PPPoE сервере. (ВНИМАНИЕ: MSS ДОЛЖЕН быть 1400 или ниже для правильной работы из-за PPTP соединения в «петле».)

    Удалите динамическое правило MSS на PPPoE сервере, и Windows Client сможет без проблем заходить на все сайты (Etherreal теперь показывает MSS как 1400, как и должно быть, так как PPTP соединение переписывает MSS до 1400).

    Удалите динамическое правило и вручную добавьте правило MSS для клиента со значением 1400, и Windows Client все еще сможет правильно заходить на все сайты. (опять же, Etherreal показывает MSS как 1400).

    Вердикт: change-tcp-mss=yes переписывает значение MSS всех TCP SYN пакетов до нового значения. Мне кажется, это плохо. Это функция или ошибка? Не должно ли это правило переписывать значение MSS только для TCP SYN пакетов, размер которых превышает значение, на которое установлено правило? Как мы можем создать правило, чтобы переписать MSS только если существующий MSS больше? Нет фильтров брандмауэра для существующего значения MSS.
     
     
     
    sergejs
    Guest
    #2
    0
    26.07.2006 04:34:00
    Первый вариант: ‘interface pppoe-server server> set 0 max-mtu=1440 max-mru=1440’. Динамические правила создаются с TCP MSS 1400. Второй вариант — добавление статического mangle правила: /ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn action=change-mss new-mss=1400
     
     
     
    airnet
    Guest
    #3
    0
    26.07.2006 09:50:00
    Я подумал об этом варианте, чтобы заставить каждого клиента в сети работать с MSS 1400… Но это же не создаст кучу лишней нагрузки, правда?
     
     
     
    sergejs
    Guest
    #4
    0
    25.07.2006 05:16:00
    Проверьте, пожалуйста, вывод команды ‘ip firewall mangle print dynamic’, чтобы убедиться, что динамические правила работают (они изменяют tcp-mss для определенных исходящих/входящих интерфейсов). Вы можете указать PPPoE/PPTP-серверу, какой профиль использовать, с помощью параметра change-tcp-mss=yes или no.
     
     
     
    airnet
    Guest
    #5
    0
    25.07.2006 05:44:00
    Да, я понимаю. Попробую объяснить еще раз: мы не понимаем, почему правило MSS переписывает каждый пакет на новое значение MSS. Оно должно переписывать MSS только в том случае, если исходное значение MSS больше значения, указанного в правиле. ЧИТАЙТЕ: правило MSS для TCP SYN должно переписывать MSS только на МЕНЬШЕЕ значение, а не на большее, как это иногда происходит сейчас. Например, номер 2: у меня есть динамическое правило «изменить MSS» для PPPoE-клиента (добавлено автоматически, потому что в профиле PPPoe по умолчанию установлена опция «изменить MSS TCP». Это правило на 40 меньше операционной MTU и автоматически установлено в 1452. Это нормально, ЕСЛИ максимальное значение MSS для всего соединения составляет 1452 или меньше. Во многих случаях это не работает, потому что клиент может находиться за другим PPTP-соединением, которому требуется MSS на уровне 1400 или меньше. И получается, что клиент, находящийся где-то в сети, которому нужно MSS 1400, получает его переписанное нашим PPPoE-сервером в большее значение 1452 и, как следствие, не может просматривать многие веб-сайты.
     
     
     
    sergejs
    Guest
    #6
    0
    25.07.2006 05:47:00
    Используйте разные профили ‘ppp’ для разных сервисов.
     
     
     
    sten
    Guest
    #7
    0
    25.07.2006 10:47:00
    Ты абсолютно уверен, что оно переписывает все TCP MSS пакеты и нет никаких проблем с порядком? Я заметил, что переписывание TCP MSS было сломано в более поздних версиях v2.9.2x для моих VPN, но я списал это на отсутствие у программистов знаний в сетевых технологиях. Честно говоря, я не могу ожидать, что программисты будут понимать сетевые проблемы. Это совершенно разные миры. Жаль, конечно, потому что такие проблемы исключают RouterOS из числа предпочтительных Linux GUI для некоторых.
     
     
     
    airnet
    Guest
    #8
    0
    25.07.2006 20:23:00
    Абсолютно, положительно уверен, ну, по крайней мере, с версией 2.9.27. Без правил mangle: /ip firewall mangle print all показывает НИЧЕГО. Etherreal проверяет клиента с MSS 1400 = MSS 1400. Клиент может спокойно серфить.

    С двумя правилами по умолчанию, добавленными профилем PPPoE для того же клиента: /ip firewall mangle print all показывает:
    0 D chain=forward in-interface=<pppoe-xxx@xxxxx.xxx.xx> protocol=tcp tcp-flags=syn action=change-mss new-mss=1452
    1 D chain=forward out-interface=<pppoe-xxx@xxxxx.xxx.xx> protocol=tcp tcp-flags=syn action=change-mss new-mss=1452

    Etherreal проверяет клиента с MSS 1400 = новый MSS 1452. Клиент не может зайти на многие сайты.

    Простой вариант, как бы думают многие, - просто отключить правило MSS полностью. К сожалению, это НЕ вариант, потому что многие роутеры Linksys требуют этого правила для нормальной работы.
     
     
     
    sten
    Guest
    #9
    0
    26.07.2006 10:45:00
    Заставлять всех клиентов использовать один MTU+MRU позволило бы оптимизировать под этот сценарий. Это снизило бы накладные расходы, если бы все использовали одинаковые настройки. ОДНАКО, функция автоматической корректировки MSS всё ещё сломана и будет создавать проблемы всякий раз, когда кто-то пытается получить доступ к IP-адресам ваших подписчиков из внешней сети с меньшим MTU, если вы решите использовать эту (не)функцию. По моему (не)скромному мнению, нельзя терпеть сломанное поведение.
     
     
     
    airnet
    Guest
    #10
    0
    27.07.2006 00:30:00
    Я слепой. Действительно, в 2.9.27 (вероятно, и в более ранних версиях 2.9) есть сопоставитель для существующего TCP MSS. Все сейчас исправлено на PPPoE-сервере, сделав два шага: ‘Изменить TCP MSS’ должно быть установлено в значение ‘Нет’ в профиле PPPoE-сервера. Добавить одно правило в брандмауэр: / ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn tcp-mss=1453-65535 action=change-mss new-mss=1452 comment="Change all MSS to 1452 only if bigger than 1452" disabled=no Предлагаю разработчикам MikroTik сделать сопоставитель динамического профиля MSS и переписывать MSS только если исходный MSS больше.
     
     
     
    sten
    Guest
    #11
    0
    27.07.2006 11:51:00
    Ну да, но это не будет работать корректно, если кто-то войдет с mtu < 1452. (Еще один намек наполовину: new-mss=clamp-to-pmtu)
     
     
     
    airnet
    Guest
    #12
    0
    27.07.2006 20:27:00
    В этом случае нам повезло… все наши управляемые соединения имеют исходное MSS либо 1400, либо 1460 – ничего больше. Так что теперь только у 1460-х MSS снижается до 1452, а у 1400-х остаётся без изменений. В остальном это правда. Правило динамического MSS реально нуждается в совпадении, чтобы правило могло только понижать MTU, а не повышать его. Например, динамическое правило «Изменить MSS TCP» должно реально делать вот это: ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn tcp-mss={Whatever the MTU is, subtract 40 and add 1}-65535 action=change-mss new-mss={Whatever the MTU is, subtract 40} Вместо того, что оно сейчас делает: ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn action=change-mss new-mss={Whatever the MTU is, subtract 40} Исправление ошибки для 2.9.28 Пожалуйста, программисты MT?
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры