- Значение MTU в Linux
- Как узнать значение и поменять MTU в Linux
- Как проверить MTU для внешнего сервера
- Смена MTU
- Windows
- Командная строка
- Реестр
- Linux
- Разово
- Постоянно (permanently)
- Роутер
- Читайте также
- How to set MTU PERMANENTLY in CLI
- Как узнать и поменять значение MTU в Linux
- Узнать значение и поменять MTU в Linux
- Для постоянной смены MTU в Ubuntu
- Меняем значение MTU при помощи Netplan
- RSS
Значение MTU в Linux
MTU — maximum transmission unit — максимальный размер пакета или фрейма в байтах, который может быть отправлен единовременно без фрагментации. Узнать значение и поменять MTU в Linux можно используя утилиту ip. Чтобы изменения сохранялись после перезагрузки требуется продублировать новое значение в сетевых настройках.
Как узнать значение и поменять 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
На скриншоте показан процесс смены mtu:
Новое значение выделено, это 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
Как проверить MTU для внешнего сервера
Для сервера, к которому нет доступа по 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
Смена MTU
Обновлено: 23.06.2019 Опубликовано: 25.10.2017
Рассмотрим процесс смены значения MTU для операционных систем семейства Windows и Linux, а также роутерах.
Windows
Командная строка
Открываем командную строку от имени администратора.
Вводим команду для просмотра текущего значения MTU и названия сетевого интерфейса:
netsh interface ipv4 show subinterfaces
Получаем, примерно, следующее:
MTU Состояние определения носителя Вх. байт Исх. байт Интерфейс
—— ————— ——— ——— ————-
1500 1 81324794839 5376993884 Ethernet
* где 1500 — значение MTU (по умолчанию для сетей Etnernet); Ethernet — название интерфейса.
Меняем MTU следующей командой:
netsh interface ipv4 set subinterface «Ethernet» mtu=1492 store=persistent
* где Ethernet — название сетевого интерфейса, которое мы получили предыдущей командой; 1492 — новое значение MTU
Реестр
Открываем реестр (команда regedit) и переходим по ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\.
Внутри будут находиться другие ветки с названиями 0000, 0001, 0002 и так далее. Необходимо пройтись по каждой и найти ключ DriverDesc со значением, похожим на название нашего сетевого адаптера и записать значение ключа NetCfgInstanceId, например:
Переходим в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces. Находим ветку с нашим идентификатором, который мы записали и меняем ключ MTU (при его отсутствии, создаем — тип DWORD):
Чтобы настройки применились выключаем и снова включаем сетевой интерфейс или перезагружаем компьютер.
Linux
Для примера, рассмотрим наиболее популярные дистрибутивы — CentOS и Ubuntu.
Разово
Разово (до перезагрузки) для данных двух систем настройку можно выполнить одной командой:
ip link set mtu 1400 dev eth0
* где 1400 — новое значение MTU; eth0 — сетевой интерфейс, для которого поменяли максимальный размер пакетов.
Постоянно (permanently)
Для систем на базе Debian (Ubuntu) и Red Hat (CentOS) процедура немного отличается.
Открываем настройку сетевых интерфейсов:
К нужному адаптеру добавляем строчку:
iface eth0 inet static
.
mtu 9000
systemctl restart networking
Открываем конфигурационный файл для соответствующего сетевого интерфейса:
Перезапускаем сетевую службу:
systemctl restart network
Роутер
Смена MTU на роутерах различных производителей выполняется, примерно, по одному и тому же принципу — зайти на веб-интерфейс для настройки маршрутизатора, найти раздел с настройкой сети Интернет, задать значение MTU.
Например, для большинства устройств TP-Link: Network — WAN:
Читайте также
Инструкция по смене значения MTU на Windows и Linux
How to set MTU PERMANENTLY in CLI
I’m using Ubuntu 20.04 in WSL2, and cannot for the life of me permanently set the MTU. No matter what I do, after rebooting, it’s 1500 again. I had the same problem running Ubuntu natively, and switched to windows because Ubuntu doesn’t work over VPN because the MTU is wrong. Is there really no way to permanently set the MTU? I tried /etc/dhcp/dhclient.conf
GNU nano 4.8 /etc/dhcp/dhclient.conf # Configuration file for /sbin/dhclient. # # This is a sample configuration file for dhclient. See dhclient.conf's # man page for more information about the syntax of this file # and a more comprehensive list of the parameters understood by # dhclient. # # Normally, if the DHCP server provides reasonable information and does # not leave anything out (like the domain name, for example), then # few changes must be made to this file, if any. # option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; send host-name = gethostname(); default interface-mtu 1340; supersede interface-mtu 1340; request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers, netbios-name-servers, netbios-scope, rfc3442-classless-static-routes, ntp-servers; #send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; #send dhcp-lease-time 3600; #supersede domain-name "fugue.com home.vix.com"; #prepend domain-name-servers 127.0.0.1; #require subnet-mask, domain-name-servers; timeout 300; #retry 60; #reboot 10; #select-timeout 5; #initial-interval 2; #script "/sbin/dhclient-script"; #media "-link0 -link1 -link2", "link0 link1"; #reject 192.33.137.209; #alias < # interface "eth0"; # fixed-address 192.5.5.213; # option subnet-mask 255.255.255.255; #>#lease < # interface "eth0"; # fixed-address 192.33.137.200; # medium "link0 link1"; # option host-name "andare.swiftmedia.com"; # option subnet-mask 255.255.255.0; # option broadcast-address 192.33.137.255; # option routers 192.33.137.250; # option domain-name-servers 127.0.0.1; # renew 2 2000/1/12 00:00:01; # rebind 2 2000/1/12 00:00:01; # expire 2 2000/1/12 00:00:01; #>
I also tried messing with netplan, but I don’t think my system uses that. Also tried /etc/network/interfaces
Как узнать и поменять значение MTU в Linux
Сегодня в статье поговорим Как узнать и поменять значение MTU в Linux/Ubuntu/Debian.
MTU – maximum transmission unit – максимальный размер пакет или фрейма в байтах, который может быть отправлен единовременно без фрагментации.
Узнать значение и поменять MTU в Linux
Узнать значение MTU для всех интерфейсов можно выполнив в консоли команду ip link
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 10: eth0@if11: mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
Чаще всего встречается 1500 — это значение по умолчанию для Ethernet интерфейсов.
Поменять MTU на сервере с Ubuntu/Debian можно так:
sudo ip link set dev eth0 mtu 1400
или так для старых систем:
sudo ifconfig eth0 mtu 1400
После данной команды начинает использоваться значение 1400, а вот после перезагрузки это значение MTU сбросится в дефолтное
Для постоянной смены MTU в Ubuntu
Открываем настройку сетевых интерфейсов:
sudo nano /etc/network/interfaces
К нужному адаптеру добавляем строчку со значением MTU. Вот пример настройки:
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.5.5.2 netmask 255.255.255.0 gateway 10.5.5.1 mtu 1400
systemctl restart networking
Значение теперь будет применяться даже после перезагрузки.
Меняем значение MTU при помощи Netplan
Вот еще один пример как можно сменить значение MTU, но уже через утилиту Netplan на Ubuntu 18.04/20.04
network: ethernets: ens3: mtu: 1400 addresses: - 198.18.12.15/24 - 2a01:d0:c353:183::15/64 dhcp4: false gateway4: 198.18.12.1 gateway6: 2a01:d0:c353:183::1 nameservers: addresses: - 198.18.12.3 - 2a01:d0:c353:183::3 search: [] version: 2
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо.
RSS
Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Начиная с сентября 2017 года удостоверяющим центрам предписано обязательно проверять CAA-записи в DNS перед генерацией сертификата
Сегодня установим и настроим наш файловый сервер Samba на Ubuntu Server 20.04. Расшарим директории для нашего сервера и установим на Читать
В этой статье я вам расскажу как изменить hostname в Debian/Ubuntu (обычно имя компьютера в сети). Существует два способа изменения Читать
В этой статье рассмотрим пример как можно переименовать сетевые интерфейсы в дистрибутивах Linux. После обновления systemd (частью которого является udev) Читать