Меню

Настройка mtu в linux



Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.

Как вручную установить MTU в OpenSuse

В компьютерных сетях термин Maximum Transmission Unit (MTU) используется для определения максимального размера блока (в байтах), который может быть передан на канальном уровне коммуникационного протокола. Значения MTU зависят от коммуникационного интерфейса (Сетевая плата, последовательный порт, и т. д.).

Значение MTU может быть определено стандартом (например для Ethernet), либо может выбираться в момент установки соединения. Чем выше значение MTU тем выше пропускная способность сети. Однако, большие пакеты могут блокировать медленные интерфейсы на некоторое время, увеличивая время ожидания для других пакетов.

Ниже описано каким образом можно изменить значение Maximum Transmission Unit (MTU) в OpenSUSE.

Через Network Manager

Если вы используете Network-Manager для управлениями сетевыми настройками в openSUSE тогда:

1. Нажмите Computer — YaST.

2. Нажмите Network Devices в левой панели и выберите Network Settings

3. Нажмите Network Adapter и выберите Edit.

4. В окне General, выберите дефолтные значения “MTU” или введите значение, которое вам требуется. Если вы будете вводить нестандартные значения, будьте внимательны, так как это может привести к проблемам с соединением и быстродействием. Нажмите Next и Finish для завершения настройки.

Изменение MTU используя традационную сетевую настройку

Если вы не используете Network Manager, а работаете с сетевыми настройками традиционным способом используя скрипты ifcfg:

1. Используя окно терминала, смените директорию на /etc/sysconfig/network/

2. В директории /etc/sysconfig/network находятся конфигурационные файлы для каждого из сетевых интерфейсов. К примеру, на моем ноутбуке это ifcfg-eth0 (ethernet) и ifcfg-wlan0 (wireless). Эти файлы содержать параметры настройки для соответствующих сетевых карт. Отредактируйте файлы интерфейса и введите строку, как показано ниже:

opensuse:/etc/sysconfig/network # vi ifcfg-eth0

и добавьте строчку
MTU=’1460′
Теперь конфигурация должна выглядеть примерно так:
opensuse11:/etc/sysconfig/network # cat ifcfg-eth0
BOOTPROTO=’dhcp’
BROADCAST=”
ETHTOOL_OPTIONS=”
IPADDR=”
MTU=’1460′
NAME=’BCM4401-B0 100Base-TX’
NETMASK=”
NETWORK=”
REMOTE_IPADDR=”
STARTMODE=’auto’
USERCONTROL=’no’

3. Рестартните сетевой сервис или перегрузите ваш компьютер для вступления изменений в силу.

opensuse11:/etc/sysconfig/network # /etc/init.d/network restart

Динамическое изменение MTU

Для динамического изменения значения MTU, вы можете использовать команду ifconfig. Для изменения MTU на интерфейсе eth0,

Однако, эти изменения будут потеряны после перезагрузки.

Хорошая новость, обновилась Zebrum Lite. Скачивайте и пробуйте прямо сейчас.

Источник

Узнать значение и поменять 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, то секция примет такой вид:

iface eth0 inet dhcp
pre-up /sbin/ifconfig $IFACE mtu 1454

Для сервера, к которому нет доступа по 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

Источник

Где в linux прописан максимальный размер MTU

Возникла необходимость поднять user mode linux. Но, когда я пытаюсь прописать mtu на интерфейс больше чем 1500, то полячаю:

ip link set dev eth0 mtu 9000
не помогает ?

Нет, это user mode linux

Для поддержки MTU выше 1500 сетевушка должны уметь Jumbo frames.

Это и так понятно. Мне интересно, где это есть в исходниках ядра?

Скорее всего его задаёт приложение, которое регистрирует tap-интерфейс

Это и понятно, но у меня ядро, которые запускается в user mode.

Это очепятка? Или рассказывай давай про ядра которые запускаются в юзерспейс.

По теме — может так обрабатывается код ошибки при попытке установить mtu которое драйвер устройства отвергает или сама железка?

Это очепятка? Или рассказывай давай про ядра которые запускаются в юзерспейс.

И это 5 звёзд :facepalm:

Если драйвер у своего net_device не меняет max_mtu, то по-умолчанию он равен ETH_DATA_LEN (include/linux/if_vlan.р).

Специалистом во всем быть нереально. Особенно если не говёным. Бросьте этот юношеский максимализм товарищ аноним. Но потом. Не сейчас.

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

тэкс, мне нестыдно признать — я сейчас немножечко прифигел от ядра в юзерспейсе и уже минут 15 пытаюсь найти ченить на тему и пока ничего дельного. ткните носом плиз?

Читайте также:  Opera экспортировать закладки и настройки

Железо должно уметь.

arch/um/os-Linux/drivers/tuntap_user.c (linux 5.1.15)

возможно замена значения .max_packet поможет.

Я так делал. При загрузке mtu становится таким, каким укажишь в переменной ETH_MAX_PACKET. Но, если mtu попытаться изменить через ip link set dev mtu то, выдаёт вышеуказанную ошибку. Также, если установить mtu на интерфейс 1500 байт, то обратно его уже вернуть не получится.

Возможно ядро в принципе не умеет в процессе работы увеличить MTU свыше ETH_MAX_PACKET ?

Сделай поиск по ядру и посмотри, где идет сравнение желаемого MTU с ETH_MAX_PACKET.

Источник

Что такое MTU и как установить оптимальный размер пакета в роутере?

Всем привет! Начнем, пожалуй, с вопроса – а что же такое MTU? MTU (от английского Maximum transmission unit) – это максимальный объем в пакете, который может передавать в той или иной сетевой среде. Как вы знаете, все данные передаются определенными пакетами – будь это интернет, Wi-Fi или локальная сеть дома. Все как на почте – почтальон не может переносить больше определенного веса.

Конечно, тут идут и некоторые ограничения. Например, в PPPoE обычно используется 1492 байта. При Ethernet подключении 1500 байта, а в беспроводной сети MTU равен 2304. Если же сетевому устройству нужно передать куда больше информации, то все делится как раз на эти MTU блоки.

Размер MTU зачастую определяется самим отправляющим устройством. MTU в настройках роутера также задается по умолчанию значением заданным разработчиками. Если говорить проще, то происходит следующее:

  • Отправляющее устройство режет всю информацию на отдельные MTU куски и отправляет их по каналу связи.
  • Принимающее устройство собираем все эти куски в целый кусок, отправленной информации.

Также нужно знать, что в размер MTU входит:

  • MSS (Maximum Segment Size) – это основной блок данных.
  • Заголовок IP.
  • Заголовок ICMP

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

Также вы можете встретить параметр MRU (maximum receive unit) – это максимальный размер пакета, который может принять устройство. Все по аналогии с MTU. Далее я расскажу, как узнать оптимальный размер MTU в вашей сети и как установить это значение в роутере.

ВНИМАНИЕ! Это нужно делать только в том случае, если у вас наблюдаются проблемы с интернетом, сетью или какими-то сетевыми службами. Если у вас все в порядке, то лучше ничего не делать, так как дальнейшие действия могут привести к ухудшению связи.

Определение идеального MTU

Способ достаточно простой – мы будем использовать встроенную утилиту в Windows «ping» с помощью командной строки. Нажмите на клавиши «Win» (находится в нижнем ряду между «Ctrl» и «Alt») и английскую «R».

Читайте также:  Phaser 3610 настройка двухсторонней печати

В окошке введите команду «cmd» и нажмите «ОК». Командную строку также можно запустить через «Пуск», введя в поисковую строку эти три буквы.

Для начала давайте узнаем, какой MTU у нас стоит по умолчанию. Для этого вводим команду:

netsh interface ipv4 show subinterfaces

Я подключен по Wi-Fi, поэтому у меня стоит стандартное значение 1500. Если же вы подключены к кабелю провайдера напрямую, то эта команда может вам помочь.

Далее мы будем использовать стандартную команду 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 адрес в адресную строку любого браузера. Можете попробовать популярные адреса:

Адрес можно подсмотреть на этикетке под корпусом. Или ввести в консоль команду:

IP маршрутизатора будет в строке 192.168.1.1.

Далее инструкции могут отличаться в зависимости от модели роутера.

Zyxel Keenetic

«Проводной» – «Параметры IP и DNS» (или «Аутентификация у провайдера (PPPoE / PPTP / L2TP)»)

Переходим в раздел «Интернета» – далее на вкладке «Подключение» выбираем активный коннект к интернету.

Источник

Adblock
detector