Как узнать свой mtu
Как найти правильный размер MTU для моей сети.
Краткая информация
Один из простых и наиболее точных способов определения оптимального размера MTU – MTU пинг тест. Вы просто отправляете запросы и постепенно снижаете размер пакета до тех пор, пока пакет больше не фрагментируется. Кроме того, этот простой тест подходит для точного тестирования конечных точек, пользователи могут найти более маленький размер MTU более удобным для себя. Внимание: При соединении PPPoE размер MTU должен быть 1492 (или ниже). Более подробная информация о влиянии MTU можно найти здесь.
Внимание:
Определение правильного MTU
Для определения правильного размера MTU для вашей конфигурации, вам необходимо использовать простой MTU пинг тест. Вы отправляете запросы и постепенно снижаете размер пакета до тех пор, пока пакет больше не фрагментируется. Выполните следующие действия :
Шаг 1
Шаг 2
Шаг 3
Уменьшите размер тестового пакета (10 или 12 байт), отправьте запрос опять. Имейте в виду, что пакет должен быть снова фрагментирован (Рисунок 2)
Шаг 4
Снова уменьшите размер тестового пакета, отправьте запрос, итак до тех пор, пока размер отправляемого пакета не нужно будет фрагментировать (Рисунок 3)
Шаг 5
Как только вы отправите пакет, который не будет фрагментирован, увеличьте немного размер пакета и отправьте запрос заново, вы таким образом сможете найти максимальный размер пакеты, который не будет фрагментирован.
Шаг 6
1440 – максимальный размер пакета в пинг-тесте
+ 28 – заголовки IP и ICMP
1468 – оптимальный размер вашего MTU
Проблемы с соединением к VPN или мои приложения зависают, а время истекает.
Вы можете подсоединиться к VPN серверу и зарегистрироваться, но ничего не происходит и приложения зависают, время выходит, или проблема с загрузкой.
— Вы можете подсоединиться и зарегистрироваться, но приложения зависают, время выходит, или проблема с загрузкой. Ваш MTU (максимального размера блока (в байтах), который может быть передан) указан неправильно.
Как узнать значение MTU
Windows
Нажмите комбинащию клавишь Win + R
В появившемся окне введите cmd и нажмите OK
В открывшемся черном окне введите команду:
netsh interface ipv4 show subinterfaces
В первой колонке ответа мы увидим значение MTU:
* в данном примере, значение MTU равно 1500 для сетевого адаптера Ethernet.
Linux
ip address
В более современных системах используется утилита для работы с сетевыми интерфейсами — ip address. Вводим команду:
В полученном результате находим нужный сетевой интерфейс и строчку на подобие:
eth0:
mtu 1500 qdisc pfifo_fast state UP qlen 1000
* то, что мы ищем — mtu 1500.
ifconfig
В более ранних системах или с установленным ifconfig вводим:
* где eth0 — сетевой адаптер, для которого хотим узнать MTU.
В полученном результате находим что-то на вроде:
eth0: flags=4163 mtu 1500
* где mtu 1500 — наше значение.
FreeBSD
В данной системе работаем с уже описанным выше ifconfig:
em0: flags=8843 metric 0 mtu 1500
Провайдера
Чтобы определить оптимальное значение MTU для нашего сетевого адаптера, подключенного к сети Интернет, необходимо узнать значение, используемое на оборудовании поставщика.
Для этого выполняем ping с запретом фрагментации сетевых пакетов (-f) и выставлением определенного размера пакета (-l):
* 1472 будет соответствовать MTU — 1500, так как к пакету мы должны еще прибавить 28 (заголовок).
Наша задача — подобрать значение пакета, при котором будет идти пинг:
Ответ от 90.156.242.197: число байт=1472 время=13мс TTL=56
Ответ от 90.156.242.197: число байт=1472 время=12мс TTL=56
Требуется фрагментация пакета, но установлен запрещающий флаг.
Требуется фрагментация пакета, но установлен запрещающий флаг.
Находим значение, которое стоит на границе с ошибкой и прибавляем к нему заголовок пакета — 28. Так мы получаем наше оптимальное MTU.
На данный момент большинство Интернет провайдеров предоставляет услуги связи с фрагментом в 1500. Старые подключения от Ростелеком или подключения на основе PPPoE могут работать на меньших значениях.
Что такое MTU и как установить оптимальный размер пакета в роутере?
Всем привет! Начнем, пожалуй, с вопроса – а что же такое MTU? MTU (от английского Maximum transmission unit) – это максимальный объем в пакете, который может передавать в той или иной сетевой среде. Как вы знаете, все данные передаются определенными пакетами – будь это интернет, Wi-Fi или локальная сеть дома. Все как на почте – почтальон не может переносить больше определенного веса.
Конечно, тут идут и некоторые ограничения. Например, в PPPoE обычно используется 1492 байта. При Ethernet подключении 1500 байта, а в беспроводной сети MTU равен 2304. Если же сетевому устройству нужно передать куда больше информации, то все делится как раз на эти MTU блоки.
Размер MTU зачастую определяется самим отправляющим устройством. MTU в настройках роутера также задается по умолчанию значением заданным разработчиками. Если говорить проще, то происходит следующее:
Также нужно знать, что в размер MTU входит:
К чему может привести неправильное значение MTU? Если на роутере, который чаще всего является шлюзом между интернетом и локальной сетью, выставлено неправильное значение, то могут наблюдаться проблемы со связью и интернетом. Например, нельзя зайти на какой-то сайт, некоторые службы в локальной сети перестают работать. Но само значение можно выставить вручную в настройках маршрутизатора.
Также вы можете встретить параметр MRU (maximum receive unit) – это максимальный размер пакета, который может принять устройство. Все по аналогии с MTU. Далее я расскажу, как узнать оптимальный размер MTU в вашей сети и как установить это значение в роутере.
ВНИМАНИЕ! Это нужно делать только в том случае, если у вас наблюдаются проблемы с интернетом, сетью или какими-то сетевыми службами. Если у вас все в порядке, то лучше ничего не делать, так как дальнейшие действия могут привести к ухудшению связи.
Определение идеального MTU
Способ достаточно простой – мы будем использовать встроенную утилиту в Windows «ping» с помощью командной строки. Нажмите на клавиши «Win» (находится в нижнем ряду между «Ctrl» и «Alt») и английскую «R».
В окошке введите команду «cmd» и нажмите «ОК». Командную строку также можно запустить через «Пуск», введя в поисковую строку эти три буквы.
Для начала давайте узнаем, какой MTU у нас стоит по умолчанию. Для этого вводим команду:
netsh interface ipv4 show subinterfaces
Я подключен по Wi-Fi, поэтому у меня стоит стандартное значение 1500. Если же вы подключены к кабелю провайдера напрямую, то эта команда может вам помочь.
Далее мы будем использовать стандартную команду ping с определенными параметрами. Наша задача взять за основу какое-то определенное значение MTU и увеличивать его до тех пор, пока система не сообщит нам, что нам нужно установить параметр фрагментации или разбиения пакета.
Если говорить проще, то мы будем увеличивать пакет до тех пор, пока он проходит по нашему соединению в интернете. Для примера мы будем пинговать всем известный «google.com», но вы можете взять любой другой сайт:
В итоге мы видим, что пакеты с размером в 1440 байтов спокойно отправляются в сеть. Поэтому мы увеличим размер MTU на 1. Немного о команде: значение «-f» – запрещает фрагментировать пакет – это нужно для наших тестов. «-l» (маленькая английская буква «L») – задает размер пакета.
Теперь увеличиваем его на один. Чтобы не прописывать команду постоянно, нажмите на клавиатуре на стрелку вверх, сотрите последнюю цифру и увеличьте её на один:
Как видите этот пакет также свободно проходит. В общем проделываем эту процедуру до тех пор, пока вы сами не найдете идеальный параметр для вашей среды. В самом конце вы должны увидеть сообщение:
«Требуется фрагментация пакета, но установлен запрещающий флаг»
В моем случае это 1472, но у вас может быть совершенно другой параметр, так что нужно проводить свои тесты.
Но это не окончательное значение MTU – это мы нашли только MSS. Поэтому к нему нам нужно прибавить IP и ICMP заголовки. Для этого просто прибавляем ещё 28 байта:
Теперь данное значение можно установить в вашем домашнем роутере.
Установка MTU в роутере
Для начала нам нужно зайти в настройки роутера – для этого нужно ввести IP или DNS адрес в адресную строку любого браузера. Можете попробовать популярные адреса:
Адрес можно подсмотреть на этикетке под корпусом. Или ввести в консоль команду:
IP маршрутизатора будет в строке 192.168.1.1.
Далее инструкции могут отличаться в зависимости от модели роутера.
Zyxel Keenetic
«Проводной» – «Параметры IP и DNS» (или «Аутентификация у провайдера (PPPoE / PPTP / L2TP)»)
Переходим в раздел «Интернета» – далее на вкладке «Подключение» выбираем активный коннект к интернету.
Как узнать свой mtu
У каждого провайдера или сетевого устройства, данное значение может быть свое. например 1492 очень часто встречается на роутерах Dlink, и если устройству на устройство будет например приходить пакет 1500 байт, а у него мту настроено 1492, то часть пакетов будут приходить битые, глюки могут выражаться, например у вас не полностью будут отображаться интерфейс сайта, что то загрузилось, а что то нет, первый признак, проверить Maximum transmission unit.
Итак посмотрим какое значение mtu у гугла, откроем командную строку и вводим следующую команду.
Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7-01
И смотрим ответ, если ответ получен без потери пакетов, то увеличиваем значение, если выдаст «Требуется фрагментация пакета, но установлен запрещающий флаг.», значит уменьшаем и так, пока не получим крайнее верхнее значение пакета, которое проходит до нашего сервера. У меня получилось 1500 (1472+28). Значит дальше я и буду его устанавливать в качестве значения MTU
Далее, вводим команду:
Она покажет MTU для всех сетевых подключений. Нам необходимо узнать как называется интерфейс основного сетевого подключения. Посмотреть названия можно командой
Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7-04
либо в центре управления сетями.
Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7-04
У меня это Ethernet, у вас же смотрите по обстановке. Но в большинстве случаев он будет называться так же.
Далее, вводим следующую команду (для ее выполнения требуется чтобы командная строка была запущена от имени администратора)
Где вместо Ethernet пишем название своего интерфейса, а в значение MTU пишем полученное на первом шаге инструкции
Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7-06
как отключить автоматическую настройку значения MTU для сетевых подключений:
Чтобы включить автоматическую настройку обратно, нужно заменить disabled на normal
Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7-07
После этого значение mtu будет такое как вам нужно. Вот мы с вами и разобрали как изменить mtu в Windows. Так что значение mtu теперь для вас не секрет.
Как сменить MTU через реестр
Для тех, кто не любит командную строку, есть PowerShell и реестр. В реестре Windows есть ветка:
Класс содержит информацию, о всех ваших сетевых картах, а именно драйверах, их версиях и GUID самой карты. GUID потребуется для определения сетевой карты в другой ветке реестра, но не переживайте я покажу более быстрый метод определения и сопоставления GUID и сетевой карты через PowerShell. На что в данном разделе нужно обратить внимание:
Теперь зная GUID идем по пути:
Среди интерфейсов находим нужный, можно удостовериться, что у него правильный IP-адрес. Найдите ключ MTU, если его нет, то нужно создать REG_DWORD с нужным значением.
Теперь как не заморачиваться с поиском GUID сетевой карты. Откройте PowerShell ISE и запустите мой скрипт:
Или просто если нужно вывести все GUID из нужной ветки:
Узнать значение и поменять MTU в Linux
Узнать значение MTU для всех интерфейсов можно выполнив в консоли команду ip link
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0:
mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 54:52:00:91:96:85 brd ff:ff:ff:ff:ff:ff
Чаще всего встречается 1500 — это значение по умолчанию для Ethernet интерфейсов.
Поменять MTU на сервере с Debian можно так:
ip link set dev eth0 mtu 1400
При этом начинает использоваться значение 1400, после перезагрузки эти изменения не сохранятся.
Чтобы сделать их постоянными нужно отредактировать файл /etc/network/interfaces
Для CentOS это скрипты /etc/sysconfig/network-scripts/*, для других систем иначе — для Debian также возможны варианты, но чаще всего это /etc/network/interfaces
К нужному интерфейсу достаточно дописать mtu 1400 отдельной строкой
IFACE при этом заменить именем интерфейса, таким как eth0
Если настройки сети выдаются DHCP, то секция примет такой вид:
Для сервера, к которому нет доступа по SSH MTU можно узнать экспериментальным путем. Значение может потребоваться при поиске сетевых неполадок.
Это делается за счет опции -M do утилиты ping.
ICMP пакеты при этом будут отправляться с заданным MTU, из ответа будет видно реальное значение.
PING ya.ru (87.250.250.242) 1572(1600) bytes of data.
ping: local error: Message too long, mtu=1500
— ya.ru ping statistics —
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
28 байт вычитается, поскольку они отданы под хэдеры IP и ICMP.
При установке 1500 байт PING проходит успешно.
PING ya.ru (87.250.250.242) 1472(1500) bytes of data.
1480 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=57 time=32.0 ms
— ya.ru ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 32.040/32.040/32.040/0.000 ms
Читайте про iface inet — директиву, которую можно увидеть в /etc/network/interfaces





















