- Определение идеального MTU
- Установка MTU в роутере
- Zyxel Keenetic
- TP-Link
- D-Link
- ASUS
- LinkSys
- Netis
- Определение оптимального размера MTU пакета данных
- Latest commit
- README.md
- Как настроить ipv6 tunnel в Mikrotik (RouterOS)
- 1. Начальные условия
- 2. Значение MTU и IPv6 Fragmentation
- 3. Определение MTU для соединения с Internet
- 4. Создание туннеля
- 5. Конфигурация Mikrotik
- 6. Проверяем что всё работает
- Do not Fragment и Destination Unreachable, Fragmentation Needed
Определение идеального MTU
Метод довольно прост — мы будем использовать встроенный в Windows инструмент командной строки «ping». Нажмите клавишу «Win» (расположенную в нижнем ряду между «Ctrl» и «Alt») и английскую клавишу «R».
В окне введите команду «cmd» и нажмите «OK». Командную строку также можно запустить через «Пуск», набрав эти три буквы в строке поиска.
Давайте сначала выясним, каков MTU по умолчанию. Для этого введите команду: netsh interface ipv4 show subinterfaces
Далее мы используем стандартную команду ping с указанными параметрами. Цель состоит в том, чтобы основывать ping на определенном значении MTU и увеличивать это значение до тех пор, пока система не сообщит нам о необходимости установить параметр фрагментации или разделения пакетов.
Проще говоря, мы будем пинговать пакет до тех пор, пока он проходит через наше интернет-соединение. Например, мы пингуем хорошо известный «google.com», но может быть взят любой другой сайт: ping www.google.com -f -l 1440
В результате мы видим, что пакеты размером 1440 байт благополучно передаются по сети. Поэтому мы увеличиваем размер MTU на 1. Немного о команде: значение «-f» запрещает фрагментацию пакетов — это необходимо для наших тестов. «-l» (строчная буква «L») — устанавливает размер пакета.
Сейчас мы увеличиваем его на одну единицу. Чтобы не набирать команду постоянно, нажмите стрелку вверх на клавиатуре, сотрите последнюю цифру и увеличьте ее на единицу: ping www.google.com -f -l 1441
Как вы можете видеть, этот пакет также проходит свободно. Проводите эту процедуру до тех пор, пока не найдете идеальные настройки для вашей среды. В самом конце вы должны увидеть сообщение:
«Требуется фрагментация пакета, но флаг не установлен».
В моем случае это 1472, но у вас могут быть совершенно другие настройки, поэтому вам придется провести собственные тесты.
Но это не окончательное значение MTU — это просто MSS, которое мы нашли. Поэтому нам нужно добавить к нему заголовки IP и ICMP. Для этого мы просто добавляем еще 28 байт.
Теперь это значение можно установить в домашнем маршрутизаторе.
Установка MTU в роутере
Сначала нужно зайти в настройки роутера — в адресной строке любого браузера вводим IP или DNS-адрес. Вы можете попробовать популярные адреса:
- 192.168.1.1
- 192.168.0.1
Адрес можно увидеть на этикетке под корпусом. Или введите команду в консоли:
ipconfig
IP маршрутизатора будет 192.168.1.1.
Инструкции могут отличаться в зависимости от модели маршрутизатора.
Zyxel Keenetic
Новое программное обеспечение
«Wired» — «Настройки IP и DNS» (или «Аутентификация от провайдера (PPPoE / PPTP / L2TP)»)
Перейдите в раздел «Интернет» — Затем в разделе «Подключение» выберите активное интернет-соединение.
TP-Link
Старая прошивка
«Сеть — WAN».
Новая прошивка
«Дополнительные настройки» — «Сеть» — «Интернет» — «Расширенные настройки».
Читайте также: Учетная запись Microsoft
D-Link
Классическая прошивка
«Сеть» — «WAN».
Новая прошивка
Выберите активное соединение (через которое проходит Интернет) из списка.
Затем найдите параметр MTU.
ASUS
Перейдите на вкладку «Интернет».
LinkSys
«Настройка» — «Базовая настройка» — Чуть ниже будет строка «MTU». Значение по умолчанию — «Авто», которое самостоятельно вычисляет необходимое число. Чтобы задать конкретный параметр, установите режим «Manual» и введите цифры, найденные с помощью консоли.
Netis
«Сеть — WAN» — Нажмите кнопку «Дополнительно» под вашим подключением.
Определение оптимального размера MTU пакета данных
Для наиболее эффективного использования канала связи хосты должны определить оптимальный размер MTU — это минимальный MTU среди всех хостов на пути между хостами. Например, для двух хостов, путь которых состоит из 3 маршрутизаторов с различными максимально возможными размерами пакетов 1500, 800 и 1200 байт, каждый хост назначения должен принять наименьший размер пакета 800 байт, чтобы избежать фрагментации.
Latest commit
README.md
Как настроить ipv6 tunnel в Mikrotik (RouterOS)
1. Начальные условия
Провайдер предоставляет Интернет через соединение L2TP. Прямой IP-адрес без NAT, динамический — меняется раз в день (или при повторном установлении L2TP-соединения)
2. Значение MTU и IPv6 Fragmentation
Значение MTU указывает максимальный размер кадра (PDU), который может быть передан между устройствами. Значение MTU по умолчанию для Ethernet составляет 1500 байт. При подключении к Интернету не напрямую, а, например, через L2TP, как это делаю я, часть MTU (40 байт) потребляется заголовками для туннеля L2TP. Поэтому значение MTU для интернет-соединения уменьшается до 1460 (1500 — 40).
Туннель ipv6 (протокол 41) использует еще 20 байт, поэтому соединения ipv6 будут использовать MTU = 1440 (1500 — 40 — 20).
Если размер пакета не помещается в MTU, такой пакет должен быть фрагментирован. Промежуточные узлы, работающие с IPv4, могут (но не обязаны) фрагментировать пакеты самостоятельно.
IPv6 не поддерживает фрагментацию на промежуточных узлах, и если промежуточное устройство получает пакет, превышающий MTU, оно отбрасывает его и возвращает сообщение ICMP Type 2 — Packet Too Big.
Поэтому для правильной работы IPv6 важно, чтобы ICMP-сообщения не блокировались на брандмауэре. Если это так, следуйте рекомендациям на сайте https://tools.ietf.org/html/rfc4890.
Также полезно знать значение MTU для вашего интернет-соединения.
Вам не нужно беспокоиться о конфигурации MTU для соединений ipv6 и использовать 1280, что является минимально возможным значением MTU для ipv6.
3. Определение MTU для соединения с Internet
Или рассчитать MTU, используя известную информацию о протоколе, например, для L2TP
1500 — 40 = 1460
Вы также можете установить его с помощью команды (Linux)
ping -M to -s 1500 1.1.1.1.1.
Выберите максимальный размер пакета, при котором команда ping будет успешной. Ping может вернуть сообщение об ошибке, например, такое ping: локальная ошибка: Сообщение слишком длинное, mtu=1460.
Это даст ему немедленно доступное значение MTU.
Обратите внимание, что для Linux -s 1500 — это размер пакета без заголовков (ip + icmp 28 байт). Фактический размер пакета будет (1500 + 28).
4. Создание туннеля
- Войдите на сайт https://tunnelbroker.net/.
- Создайте обычный туннель
- В IPv4 Endpoint (Ваша сторона): укажите внешний IPv4-адрес. Доступные туннельные серверы: выберите ближайший сервер или используйте ping для поиска сервера с наименьшим временем отклика.
- После создания туннеля откроется страница информации о туннеле.
- Настройте MTU туннеля. На вкладке Advanced измените значение MTU, рассчитанное в предыдущем шаге, на 20.
Пример:
MTU для Интернета = 1460 1460 — 20 = 1440 Установите значение 1440.
По умолчанию значение MTU туннеля равно 1480 (1500 — 20).
5. Конфигурация Mikrotik
6. Проверяем что всё работает
Do not Fragment и Destination Unreachable, Fragmentation Needed
Пакеты могут проходить через сети случайным образом, и невозможно заранее рассчитать все маршруты и максимальные размеры пакетов для каждого соединения. RFC 1191 предписывает методику определения размера MTU. Процесс, с помощью которого хост для данного соединения может определить меньший размер MTU, чем поддерживает его собственный сетевой интерфейс. Ключевыми являются два компонента: бит Do not Fragment (DF) в заголовке IP и подкод сообщения протокола ICMP Destination Unreachable, Fragmentation Needed.
Установка бита DF в IP-пакете предотвращает выполнение маршрутизатором фрагментации при обнаружении MTU, меньшего, чем размер пакета. Вместо этого пакет отбрасывается, а отправителю посылается ICMP-сообщение, указывающее на необходимость фрагментации пакета. По сути, маршрутизатор указывает, что ему необходимо фрагментировать пакет, чтобы отправить его дальше, но флаг Don’t Fragment (DF) не позволяет ему это сделать. RFC 1191 расширяет сообщение ICMP, запрашивающее фрагментацию, на размер MTU для текущего соединения.
Теперь, когда максимальный размер пакета для соединения обнаружен, хост может кэшировать это значение и формировать последующие сетевые пакеты соответствующего размера. Обратите внимание, что определение максимального размера пакета для данного соединения — это постоянный процесс. Если используется динамическая маршрутизация и маршрут между отправителем и получателем перестраивается, хост периодически продолжает попытки установить флаг DF, чтобы обнаружить дальнейшее уменьшение размера пакета. RFC 1191 также позволяет хосту периодически проверять возможность увеличения максимального размера пакета для каждого маршрута, иногда пытаясь передать пакет большего размера, чем буферизованный пакет. Если пакет передан успешно, значение максимально допустимого размера пакета увеличивается.